はじめに
以前の記事でトラブルを未然に防ぐ方法としてマシンからリソース(ディスク容量)を取得してグラフ化し、グラフの傾向を基にディスク容量が枯渇する時期を予測する、という方法をご紹介しました。
この方法でもある程度の目処はつくとは思いますが、予測を立てた後にマシンの挙動が変わり以前より早いペースでディスクを消費することはありえます。この場合、波形の変化に気づいた段階で新たに予測を立て直す必要が生じます。
手動ではなく自動で、より柔軟に過去の実データから予測をする方法はないか。
本記事では過去データから将来値を予測する「予兆監視」についてご紹介します。
予兆監視とは
予兆監視とは過去のデータから将来値を予測し、この予測された将来値をもとに監視する監視手法のことです。
「将来値の監視」と聞くと少しややこしいですが、例えば将来値として3ヶ月後にディスク空き容量が80%から40%になる予測があった場合、予測値が「2ヶ月後40%以下になる」と変化した場合にアラートを発報しディスク使用率が想定より早くなってることを検知できる仕組みになります。
ZabbixではVer3.0以降から予兆監視が行えるようになりました。
本記事では以下2つの予兆監視機能についてご紹介します。
- forecast関数 (指定時間後の予測値)
過去の指定期間のデータを基に将来の予測値をだす関数
例えば、ディスク空容量の過去1週間の実データから1週間先の値がいくつになるか等を出すときに使います。 - timeleft関数 (指定時間時の予測値)
指定値に到達するまでの時間を表示させる関数です。
例えば、ディスク空容量が80%ある場合に、この空容量が40%まで下がるのが何日何時間後なのかを出すときに使います。
ではこの2つの関数を使って、実際に予測値を出してみたいと思います。
予測関数を利用した将来値のグラフ
以下はあるシステムの1ヶ月間のメモリ使用量の推移のグラフです。
グラフから9GBあった空き容量が1ヶ月後には8GBを下回っており、かなり速いペースでメモリを消費していることがわかります。
ではこのメモリ今後どのようになっていくのか見ていきましょう。
1. forecast関数の予測グラフ
forecast関数(過去指定期間のデータを基に将来の予測値をだす関数)を利用して、メモリ空容量の1~3ヶ月先、6ヶ月先、12ヶ月先の将来値を出した結果が以下となります。
〇か月先 | 結果 |
---|---|
現在 | 7.27GBytes |
1か月先 | 6.7Gbytes |
2か月先 | 5.55Gbytes |
3か月先 | 4.41Gbytes |
6か月先 | 1.2Gbytes |
12か月先 | -5.63Gbytes |
3ヶ月後のメモリ空容量は約4GBとまだ少し余裕がありますが、6ヶ月後には1.2GBとメモリ空き容量が危険域に到達し、12ヶ月後にはマイナスとなる(枯渇している状態)と予測結果がでました。
予測結果から上記システムは1年と持たず、3ヶ月後から危険域に達する6ヶ月後までの間に対策を打つ必要があると判断できます。
2. timeleft関数の予測グラフ
timeleft関数(指定値に到達するまでの時間を出す関数)を利用して、空容量が4GBになるまでの時間を予測した結果が以下となります。
グラフから3ヶ月+6日(約99日)+6時間後に4GBに到達することがわかります。forecast関数を利用した予測では3ヶ月後に4.41GBになっていたので、同じ予測結果となります。
予測値の活用
上記の2つの予兆監視はグラフの描画だけではなく、アラート発報の閾値として設定することができます。
通常『監視の閾値』というと、マシンから取得した実データに対して設定する値となりますが、予兆監視では予測された値にたして設定する値となり、「当初の予測からはずれること」、「予測値に近づいていること」を検知することができます。
監視方法 | |
---|---|
通常の監視 | 実データが閾値(固定)を超える(または下回る)場合にアラート発報。 (例) ディスク空容量が30%(閾値)を下回ったらアラート発報 |
予測監視 | 残時間および、予測値のしきい値を超えた場合にアラートとなる。 (例) timeleft関数で4ヶ月後に空容量が約4GBという予測がある場合で、4GB到達予測が4ヶ月より下回る場合(早まった場合)にアラートを発報。 |
下のグラフは、メモリ空容量が4Gbytesにいつ到達するかの日数を表すtimeleft関数グラフです。
2月26日時点の4Gbytes到達予測は約4ヶ月+7日後となっています。メモリーが枯渇する前に対策を実施する必要があるため余裕をみて4ヶ月を区切り=閾値として、現在の日付時点での到達予測が4ヶ月を下回った時点でアラートを発報することで、事前の準備・対策が可能となります。
■アラート検知(表示例)
■発報されたメール例(Item valuesに検知時点での予測日数が表示されています。)
また例えば前日までの到達予測は4ヶ月を上回っていが、現在の予測が2ヶ月まで急に下がった場合などは異常なメモリ消費が起こっている可能性もあり、マシンの状態異常に気づくきっかけともなります。
このように将来値を監視することでマシンのリプレースや増強といった対策計画をより正確・柔軟に進めることができます。
さいごに
予兆監視はあくまで予測値を算出しているため、「必ずその値になる!」というものではありませんが、過去のデータから自動で予測ができ、また挙動が変われば予測も変化するので、アラートを受信できていれば「気づいたらリソースが大変なことになっている!」という不測の事態を防げるものになると思います。
今回ご紹介したZabbix予測監視の利用など、監視システムでは色々な機能(監視方法)を組み合わせる事が重要になります。弊社ではお客様環境にあった監視システムをご提案いたします。お気軽にお問い合わせください。