Zabbix 3.0 予測機能のための
数学的理解
Zabbix3.0リリース記念!世界最速? Zabbix3.0ハンズ
オン
LT
2016/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 関数の書式
mod
e
計算式 解説
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で指定された未来時刻までの間での最
大値と最小値の差を示します
avg
average 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乗=10
10の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

Zabbix 3.0 の予測機能のための数学的理解

Editor's Notes

  • #20 ポリノミアル
  • #31 ローガリズミック