これは、Ubuntuオンライン、Fedoraオンライン、Windowsオンラインエミュレータ、MAC OSオンラインエミュレータなど、複数の無料オンラインワークステーションのいずれかを使用して、OnWorks無料ホスティングプロバイダーで実行できるコマンドrrdgraph_rpnです。
プログラム:
NAME
rrdgraph_rpn - rrdtool グラフの RPN 数学について
SYNOPSIS
逆ポーランド記法 表現:=vname|オペレータ|値[,逆ポーランド記法 表現]
DESCRIPTION
従来のHP電卓を使ったことがあるなら、 逆ポーランド記法 (逆ポーランド語
表記法)。その背後にある考え方 逆ポーランド記法 スタックがあり、そこにデータをプッシュするのです
スタック。操作を実行するたびに、スタックから必要な数の要素が取り出されます。
必要ありません。プッシュは暗黙的に行われるため、数値や変数を指定すると、
自動的にスタックにプッシュされます。
計算の最後には、スタックに残る値は 1 つだけになります。
これは関数の結果であり、これが vname。 のために CDEF
命令に従って、グラフ上の各データ ポイントに対してスタックが処理されます。 VDEF 説明書
データセット全体を1回の実行で処理できます。ただし、現在 VDEF 指示のみサポート
限定された機能のリスト。
例: "VDEF:maximum=mydata,MAXIMUM"
これにより、変数「maximum」が設定され、RRD スクリプトの残りの部分で使用できるようになります。
例: "CDEF:mydatabits=mydata,8,*"
これは、変数をプッシュすることを意味します マイデータ8を押して演算子を実行する *。 オペレーター
2つの要素を必要とし、それらを使って1つの値を返します。この値は
マイデータビットご想像のとおり、この指示は マイデータビット
= マイデータ * 8の真の力 逆ポーランド記法 常に明らかであるという事実にあります
入力を処理するために、「a = b + 3 * 5」のような式では、3を掛け算する必要があります。
5を足す前に b 取得するため aしかし、括弧を使えばこれを変更できる。
順序:「a = (b + 3) * 5」。 逆ポーランド記法、あなたは「a = b, 3, +, 5, *」を実行することができます。
括弧。
オペレーター
ブール演算子
LT、 ル、 GT、 GE、 EQ、 NE
より小さい、以下または等しい、より大きい、以上または等しい、等しい、等しくないすべて2つをポップします
スタックから要素を取得し、選択された条件と比較し、真の場合は1を返す
偽の場合は0。 未知の または 無限 値は次のようになります 未知の
返される...これも偽として扱われる IF コール。
国連、 ISINF
スタックから要素を1つ取り出し、これを 未知の それぞれに 正の or
負 無限大. 真の場合は 1 を、偽の場合は 0 を返します。
IF
スタックから0つの要素をポップします。最後にポップした要素がXNUMX(偽)の場合、
最初にポップされた値はスタックに戻され、そうでない場合は2番目にポップされた値が
押し戻される。これは、0以外の値はすべて
真。
例: 「A,B,C,IF」は「if (A) then (B) else (C)」と読みます。
値の比較
MIN、 MAX
スタックから 2 つの要素をポップし、それぞれ小さい方または大きい方を返します。
注意してください 無限 入力された数値の1つが他の数値よりも大きい場合、
未知の すると、操作の結果は次のようになります 未知の のためにペンを持つ時間も見つけています。
ミンナン、 マックスナン
MINとMAXのNAN対応バージョン。入力された数値の1つが 未知の そうして
操作の結果はもう一方になります。両方が 未知のすると、
操作は 未知の.
LIMIT
スタックから2つの要素を取り出し、それらを使って範囲を定義します。そして、
別の要素が範囲内にある場合は押し戻されます。範囲内にない場合は
未知の 押されます。
定義された範囲には2つの境界が含まれます(つまり、
境界は押し戻される)。関係する3つの数字のいずれかが
未知の or 無限 この関数は常に 未知の
例: "CDEF:a=alpha,0,100,LIMIT"は以下を返します 未知の アルファが0より小さい場合、または
100 を超えています。
算数
+, -, *, /, %
加算、減算、乗算、除算、剰余
アッドナン
NAN安全な加算。パラメータの1つがNAN/UNKNOWNの場合、ゼロとして扱われます。両方のパラメータが
パラメータが NAN/UNKNOWN の場合、NAN/UNKNOWN が返されます。
罪、 コス、 ログ、 経験値、 SQRT
正弦と余弦(ラジアンで入力)、対数と指数(自然対数)、平方根。
日焼け
逆正接(ラジアンで出力)。
ATAN2
y,x成分の逆正接(出力単位はラジアン)。これは、
最初に x (コサイン) 成分をスタックし、次に 2 番目として y (サイン) 成分をスタックします。
次に、それらの比率の逆正接を押し、
象限。
例: "CDEF:angle=Y,X,ATAN2,RAD2DEG"は"X,Y"成分を角度に変換します。
度。
床、 セイル
最も近い整数に切り捨てまたは切り上げます。
DEG2RAD、 RAD2DEG
角度を度からラジアンに、またはラジアンを度に変換します。
ABS
絶対値を取ります。
集合演算
選別、 REV
スタックから要素を1つポップします。これは カウント 並べ替えるアイテムの数(または
逆さま)。上 カウント 残りの要素は、
スタック上に置きます。
例: "CDEF:x=v1,v2,v3,v4,v5,v6,6,SORT,POP,5,REV,POP,+,+,+,4,/"は、
最小値と最大値を除いた値 v1 から v6 までの平均。
AVG
1つの要素をポップする(カウント)をスタックから取り出します。 カウント 要素と平均を構築し、
プロセス内のすべての UNKNOWN 値を無視します。
例: "CDEF:x=a,b,c,d,4,AVG"
MEDIAN
1つの要素をポップする(カウント)をスタックから取り出します。 カウント 要素と中央値を求め、
プロセス中のすべてのUNKNOWN値を無視します。UNKNOWNでない値が偶数個ある場合、
中央の 2 つの値の平均がスタックにプッシュされます。
例: "CDEF:x=a,b,c,d,4,MEDIAN"
傾向、 トレンダナン
別のデータ シリーズの「スライディング ウィンドウ」平均を作成します。
使用法: CDEF:smoothed=x,1800,TREND
これにより、xの1800分(XNUMX秒)のスライディングウィンドウ平均が作成されます。平均は
基本的には次のように計算されます。
+---!---!---!---!---!---!---!---!--->
今
遅延 t0
<--------------->
遅延 t1
<--------------->
遅延 t2
<--------------->
サンプル(t0)の値は(t0-遅延)と(t0)の平均になります。
サンプル(t1)の値は(t1-遅延)と(t1)の平均になります。
サンプル(t2)の値は(t2-遅延)と(t2)の平均になります。
TRENDとは対照的に、TRENDNANはNANセーフです。TRENDと1つのソース値を使用する場合、
NANの場合、スライディングウィンドウ全体が影響を受けます。TRENDNAN演算は、すべての
スライディング ウィンドウ内の NAN 値を計算し、残りの値の平均を計算します。
予測する、 予測シグマ、 予測PERC
別のデータ系列の「スライディングウィンドウ」平均/シグマ/パーセンタイルを作成し、
データ系列を指定された時間だけシフトする
使用法 - 明示的にシフトを示す: "CDEF:predict= 、…、
1>,n, ,x,予測" "CDEF:シグマ= 、…、
1>,n, ,x,PREDICTSIGMA" "CDEF:perc= 、…、
1>,n, 、 ,x,予測PERC"
使用法 - 基本シフトとして定義されたシフトと、これが適用される回数
「CDEF:予測= 、-n、 ,x,予測" "CDEF:シグマ=
乗数>,-n, ,x,PREDICTSIGMA" "CDEF:sigma=
乗数>,-n, 、 ,x,予測PERC"
例: CDEF:predict=172800,86400,2,1800,x,PREDICT
これにより、1800分(XNUMX秒)のスライディングウィンドウのxの平均値/シグマが作成されます。
平均は基本的に次のように計算されます。
+---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!--->
今
シフト1から0へ
<----------------------->
ウィンドウを使用して入力ファイルを追加します。
<--------------->
2をシフト
<------------------------------------------------>
ウィンドウを使用して入力ファイルを追加します。
<--------------->
シフト1から1へ
<----------------------->
ウィンドウを使用して入力ファイルを追加します。
<--------------->
2をシフト
<------------------------------------------------>
ウィンドウを使用して入力ファイルを追加します。
<--------------->
サンプル(t0)の値は(t0-shift1-window)と(t0-shift1)の平均になります。
そして (t0-shift2-window) と (t0-shift2) の間
サンプル(t1)の値は(t1-shift1-window)と(t1-shift1)の平均になります。
そして (t1-shift2-window) と (t1-shift2) の間
この関数はNANセーフとして設計されています。これにより、
将来(数日など) - オプションでデータ系列を定義する必要があるかもしれません
start=パラメータにより、ソースデータ系列に予測を提供するのに十分なデータが含まれるようにする
グラフの先頭にも...
パーセンタイルは[-100:+100]の範囲になります。正のパーセンタイルは補間されます。
負の値は最も近い値を選択します。
例: 7秒のウィンドウで1800シフトを実行するとします。rrdファイルに
300秒のステップサイズでは、パーセンタイル計算を次の式に基づいて行う必要があります。
最大42個の異なる値(NANの場合はそれ以下)です。つまり、最良の場合でも
2.4パーセントの値の間のステップレートが得られます。つまり、99番目の値を求めると
パーセンタイルの場合は、41.59番目の値を見る必要があります。
整数、41 番目または 42 番目の値。
正のパーセンタイルでは、2つの値の間の線形補間が行われ、
実効値を取得します。
負の値は距離的に最も近い値を返します。つまり上記のケースでは42番目です。
値、これは実質的には過去100回のパーセンタイル7または最大値を返します。
窓の中の日々。
ここでは、10日間のグラフを作成し、3日間の予測も表示する例を示します。
将来への不確実性の値(平均+-4*シグマで定義)これはまた
特定の時点で予測を超えたかどうかを示します。
rrdtool グラフ画像.png --imgformat=PNG \
--start=-7days --end=+3days --width=1000 --height=200 --alt-autoscale-max \
DEF:値=値.rrd:値:平均:開始=-14日\
LINE1:値#ff0000:値 \
CDEF:予測=86400,-7,1800,値,予測\
CDEF:シグマ=86400,-7,1800,値,PREDICTSIGMA \
CDEF:上限=予測,シグマ,3,*,+ \
CDEF:lower=予測,シグマ,3,*,- \
LINE1:予測#00ff00:予測\
LINE1:上限#0000ff:上限\確実性\制限\
LINE1:lower#0000ff:下限\確実性\制限\
CDEF:超過=値,UN,0,値,下限,上限,LIMIT,UN,IF \
TICK:#aa000080:1 を超えています\
CDEF:perc95=86400,-7,1800,95,値,PREDICTPERC \
LINE1:perc95#ffff00:95パーセンタイル
注: 経験上、シグマのスケール係数は3~5が適切であることが分かっています。
異常な行動を検出するための識別器。これは明らかに、
データと、そのデータ系列にどの程度の「ノイズ」があるかを示します。
また、CDEFでstart=を明示的に使用することに注目してください。これは、すべての
必要なデータ(表示されない場合でも)
この予測は、数日後など短期的な外挿にのみ使用できます。
未来。
特別な値
わからない
スタックに未知の値をプッシュする
INF、 ネギンフ
正または負の無限値をスタックにプッシュします。そのような値が
グラフ化されると、実際の値に関係なく、グラフの上部または下部に表示されます。
y軸上にあるのは。
PREV
押す 未知の データセットの最初の値の場合は値、そうでない場合は
その結果 CDEF 前のタイムステップで計算を実行できます。
データ全体にわたって。この関数は、 VDEF 指示に従ってください。
PREV(vname)
押す 未知の データセットの最初の値の場合は値、そうでない場合は
前のタイムステップにおけるvname変数の結果。これにより、
データ全体の計算。この関数は VDEF 指示に従ってください。
COUNT
これがデータセットの最初の値である場合は1を、そうでない場合は2をプッシュします。
2番目、3番目、4番目、5番目、6番目、7番目、8番目、9番目、10番目、11番目、12番目、13番目、14番目、15番目、16番目、17番目、18番目、19番目、20番目、21番目、22番目、23番目、24番目、25番目、26番目、27番目、28番目、29番目、30番目、31番目、32番目、33番目、34番目、36
データセット内の値の位置。この関数は VDEF
指示に従ってください。
時間
RRDtool内部の時間はエポックからの秒数で計測されます。エポックは次のように定義されます。
"Thu Jan 1 00:00:00 UTC 1970".
NOW
現在の時刻をスタックにプッシュします。
ステップ幅
現在のステップの秒数。これを使用して、レートベースのステップから戻ることができます。
絶対数へのプレゼンテーション
CDEF:abs=レート,ステップ幅,*,設定,追加
ニューデイ,ニューウィーク,ニューマンス,新年
これらの1.0つの演算子は、ステップが指定された最初のステップである場合にXNUMXを返します。
期間はローカルタイムゾーンと「LC_TIME」に基づいて決定されます。
設定を行います。
CDEF:mtotal=rate,STEPWIDTH,*,NEWMONTH,PREV,0,IF,ADDNAN
タイム
現在処理中の値が取得された時刻をスタックにプッシュします。
LTIME
定義に従って時間をかける タイムその時点で有効なタイムゾーンオフセットを適用する
OSが夏時間に対応している場合は夏時間も考慮し、その結果を
スタック。以下の例のセクションに、使用方法に関する詳細な例があります。
スタックを直接処理する
DUP、 ポップ、 EXC
最上位要素を複製し、最上位要素を削除し、最上位 2 つの要素を交換します。
DEPTH
スタックの現在の深さをスタックにプッシュします
a,b,深さ -> a,b,2
n,COPY
先頭のn要素のコピーをスタックにプッシュする
a,b,c,d,2,コピー => a,b,c,d,c,d
n,INDEX
n 番目の要素をスタックにプッシュします。
a,b,c,d,3,INDEX -> a,b,c,d,b
n,m,ROLL
スタックの先頭のn要素をmだけ回転する
a,b,c,d,3,1,ロール => a,d,b,c
a,b,c,d,3,-1,ロール => a,c,d,b
変数
これらの演算子は、 VDEF ステートメント。現在、これらのステートメントは
VDEF.
最大、最小、平均
対応する値を返します。MAXIMUMとMINIMUMも最初の出現を返します。
時間コンポーネントにおけるその値の。
例: 「VDEF:avg=mydata,AVERAGE」
標準偏差
値の標準偏差を返します。
例: "VDEF:stdev=mydata,STDEV"
最後、最初
選択したデータストリームの最後/最初の非nanまたは無限値を返します。
タイムスタンプを含みます。
例: "VDEF:first=mydata,FIRST"
合計
定義された各タイムスロットのレートにステップサイズを乗じて返します。これにより、
たとえば、1 秒あたりのバイト数を記録した場合は、転送された合計バイト数を返します。
時間コンポーネントは秒数を返します。
例: "VDEF:total=mydata,TOTAL"
パーセント、パーセントナン
これは、 DEF or CDEF vnameを選択します。 vname がポップされると、別の数字がポップされる
これは特定のパーセンテージ(0..100)です。データセットはソートされ、値は
返されるものは、 割合 値のパーセントが以下か等しい
結果。PERCENTNANの場合 不明 値は無視されますが、PERCENT 不明 値
この目的のためには、任意の有限数よりも小さいとみなされるので、この演算子
を返します 未知の データにはかなりたくさん含まれています。 infファイル有限数は
有限数よりも小さいか大きいかであり、常に 不明 数字。
(NaN < -INF < 有限値 < INF)
例: "VDEF:perc95=mydata,95,PERCENT"
"VDEF:percnan95=mydata,95,パーセントナン"
LSLSLOPE、LSLINT、LSLCORREL
パラメータを返す L東 S正方形 LINE (y = mx +b) これは
提供されたデータセット。LSLSLOPEは傾きである。 (氏) COUNT位置に関連する行の
データの。LSLINTはy切片である。 (b)、これは最初のデータでもある
グラフ上の点。LSLCORRELは相関係数(ピアソンの
積率相関係数)。0から+/-1の範囲で、
近似値の適合品質。
例: "VDEF:slope=mydata,LSLSLOPE"
onworks.net サービスを使用して rrdgraph_rpn をオンラインで使用する