Download - Zabbix 3.0 の予測機能のための数学的理解
Zabbix 3.0 予測機能のための数学的理解
Zabbix3.0 リリース記念!世界最速 ? Zabbix3.0 ハンズオン
LT2016/03/16
CN:九龍真乙(くりゅうまおと) 所属:自宅ラック勉強会 :株式会社サーバーワークス Twitter @qryuu
2016/03/16
著者紹介
2
今回のLTは Zabbix Advent Calendar 2015 最終日に掲載したZabbix 3.0 の予測機能についての数学的考察
を基にした解説、補追LTです。
2016/03/163
はじめに
Zabbix3.0 予測機能とは
2016/03/164
新たに導入された forecast /timeleft 関数によって未来時点の数値を予測する機能です。
最新値に対してではなく未来の予測値に対して閾値を設定することが可能となります。
これにより高値安定なリソースをアラートと対象から外し、実際に枯渇しそうなリソースのみをアラートとする事が可能となります。
2016/03/165
Zabbix3.0 予測機能とは
Forecast関数はマシンラーニングやディープラーニングのような今流行の深層学習ではありません。
「最小二乗法による近似曲線の延長による未来時点の数値予測」関数です。
2016/03/166
forecast 関数とは
timeleft 関数はマシンラーニングやディープラーニングのような今流行の深層学習ではありません。
「最小二乗法による近似曲線の延長による未来時点の数値予測」関数です。
2016/03/167
timeleft 関数とは
最小二乗法とは残差の二乗和を最小とするような係数を決定し、その係数による近似を行う手法のことを言います。
2016/03/168
最小二乗法とは
2016/03/169
最小二乗法とは
y=ax+b y: 従属変数 変数 x により変動する値 x: 独立変数 変数 y を変化させる任意の値 a: 傾き 変数 x が変化したときの y の変化量 b: 切片 独立変数が 0 もしくは 1 の時の y の値
y=ax+b y=2x+5 傾き: 2 、切片 5
2016/03/1610
最小二乗法とは
傾き
切片
forecast (sec|#num,<time_shift>,time,<fit>,<mode>)
sec|#num : 最小二乗法に利用するデータの期間もしくは個数
time_shift :過去時点の sec|#num を利用したい場合に、指定するパラーメータ( avg 関数などと同様:オプション)
time :数値予測する時間 fit :予測関数:
linear,polynomialN,exponential,logarithmic,power mode : value,max,min,delta,avg
2016/03/1611
forecast 関数の書式
timeleft (sec|#num,<time_shift>,threshold,<fit>) sec|#num : 最小二乗法に利用するデータの期間もし
くは個数 time_shift :過去時点の sec|#num を利用したい場合
に、指定するパラーメータ( avg 関数などと同様:オプション)
threshold :到達値とする値 fit :予測関数
linear,polynomialN,exponential,logarithmic,power
2016/03/1612
timeleft 関数の書式
mode 計算式 解説
value f(now + time) time で指定された未来時刻での値を示します
max maxnow <= t <= now + time f(t)
現在から time で指定された未来時刻までの間の最大値を示します
min minnow <= t <= now + time f(t) 現在から time で指定された未来時刻までの間の最小値を示します
delta max - min 現在から time で指定された未来時刻までの間で
の最大値と最小値の差を示します
avgaverage of f(t) (now <= t <= now + time) according to definition
現在から time で指定された未来時刻までの間の平均値を示します。
2016/03/1613
forecast 関数の mode
予測関数の種類
2016/03/1614
fit 数式 解説
linear y = ax+b 線形関数として横軸を伸ばした場合の縦軸の値を予測します
polynomialN y = a0 + a1*x + a2*x^2 + … + an*x^n
N の上限は 6 6 次までの一変数多項式として値を予測します、
exponential y = a*exp(b*x) 指数関数として横軸を伸ばした場合の縦軸の値を予測します
logarithmic y = a*log(x)+b 対数関数として横軸の常用対数から縦軸を予測します
power y = a*x^b累乗関数として、横軸をべき乗じたものが縦軸の値になる予測を行います
2016/03/1615
予測関数 <fit> の種類
linear線形近似
2016/03/1616
2016/03/1617
linear y=ax+b
2016/03/1618
linear 普通のグラフで直線となるのが linear 型 fit です。 時間がたつにつれて一定の傾きで値が増えていく
場合この近似により、将来の値を推測することができます。
適用例: ディスクサイズ、 ログファイルサイズ、 メモリーリークしている場合のメモリ使用量 など
polynomial多項式近似
2016/03/1619
polynomialN(N=1 ~ 6) 1次から6次までの多項式 y = a0 + a1*x + a2*x^2 + … + an*x^n
2016/03/1620
polynomial
多項式は直線的な増加や減少ではなく、増減を行う振幅のようなグラフに適用が可能。
増減を行う式となるので mode 指定が重要となる。 適用例:
X 線回折によるミラー指数ごとの面指数から格子定数決定
Zabbix で扱いそうな数値ではおそらく無い
2016/03/1621
polynomial
対数のおさらい
2016/03/1622
1,10,100・・・↔0,1,2・・・ 10 の 0 乗=1
10 の 1 乗= 1010 の 2 乗=100 ・ ・ ・
x = 10a ⇔ a = log10 x log10 10=1 log10 100=2
2016/03/1623
常用対数 (log) とは
2016/03/1624
対数グラフ(常用対数)
片対数グラフ 両対数グラフ
対数計算 x = 10a ⇔ a = log10 xを計算しなくてもそのまま数値を記録すれば、対数スケールで記録出来るグラフ
対数グラフでは0はありません。
2016/03/1625
対数グラフ
exponential指数関数近似
2016/03/1626
2016/03/1627
exponential y = a*exp(b*x)
2016/03/1628
exponential 片対数グラフで書いた場合、切片= a,
傾き= exp(b) となる
Y 軸を対数目盛とした片対数グラフで直線となる 適用例(傾きがマイナスの場合)
高温物体の温度低下 半減期
2016/03/1629
exponential
logarithmic対数関数近似
2016/03/1630
y = a*log(x)+b
2016/03/1631
logarithmic
片対数グラフで書いた場合、切片=b ,傾き= a となる
2016/03/1632
logarithmic
X 軸を対数目盛とした片対数グラフで直線となる 適用例
疎密波の減衰(音波、地震波など)
2016/03/1633
logarithmic
power累乗関数近似
2016/03/1634
y = a*x^b
2016/03/1635
power
両対数グラフで書いた、切片= a,傾き= b となる
2016/03/1636
power
両対数グラフで書いた場合に直線となる 適用例
経済物理学における、資産分布や株価変動 破片のサイズと個数の関係(画像認識)
2016/03/1637
power
で、つかうの?
2016/03/1638
Zabbix のデータである以上、 X 軸は時間変数となる。
時系列において変化するデータ出なければならない
時系列に依存するコンピュータリソースであればlinear で。
IoT やセンサーデータ解析であれば、その他の関数も使う可能性がある。
2016/03/1639
用途
変化自体は linear 傾きが急激に変化する場合:
sec|#num を調整して、評価期間を傾きの変化周期に合わせる
2016/03/1640
要注意パラメータ
ついてこれたかな?
2016/03/1641
Zabbix でLet’s データサイエンティ
スト
2016/03/1642