This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. はじめに
パフォーマンス値を測定するチェックでは、正しい閾値を設定することが難しい場合がよくあります。 値が低すぎると、問題があると思われる場合にのみ「WARN 」または「CRIT 」状態になりますが、高すぎると「OK 」状態のままとなり、問題を監視できなくなってしまいます。
Linux ホストのCPU load サービス(Windows ホストのProcessor Queue も同様)を例にとってみましょう。 ほとんどの時間はアイドル状態のサーバーがありますが、土曜日と日曜日を除く毎日、午前 0 時から 7 時までの短い期間に、このサーバーでいくつかの大規模なバックアップジョブが定期的に実行されます。 この時間帯は、CPU 使用率が 10 (20 コア) であってもまったく正常です。 それ以外の時間帯は、負荷が 3 であっても異常に高いと疑われるかもしれません。
Checkmk では、この例を実装するためにいくつかの方法があります。 その 1 つは、さまざまなワークロードを含む時間範囲を最初に定義し、その時間に特定の閾値を設定する方法です。 この例では、まず、負荷の高い時間帯(月曜日から金曜日、0:00 から 7:00)の新しい期間を定義します。 次に、CPU load またはProcessor Queue サービスに対するルールを指定します。 この新しい期間を選択し、その期間に別の(より高い)閾値を設定します。
期間を使用すると、特定の時間に「WARN 」/「CRIT 」状態が発生した理由を常に簡単に把握できるという利点があります。 ただし、閾値と期間を手動で関連付ける方法は、やや柔軟性に欠け、場合によっては非常に複雑になることもあります。
商業版を使用している場合は、この問題を解決する別の方法があります。 これは予測監視と呼ばれ、データを評価して、将来の挙動を予測します。
一度設定すると、予測は固定されたままではなく、時間の経過とともに変化する現実に合わせて自動的に調整されます。 明後日の今日の予測は、明日の実際の値が明後日に反映されるため、変更されることはありません。 タイムトラベル(大変です!)をしなくても、このプロセスは次のように表現することもできます。 Checkmk は継続的に学習します。 WARN/CRIT 状態の閾値は、常に予測値に対して相対的に設定されるため、閾値も予測とともに学習します。
2. 予測監視の実装
2.1. プラグイン名から予測パラメータへ
Checkmk のプラグインの多くは、予測監視に対応しています。以下に、その重要な例をいくつかご紹介します。
予測監視の設定は、サービスの閾値を設定する場所と同じ場所にあります。 そこで、該当するチェックがこれをサポートしている場合は、[Predictive Levels (only on CMC)] を選択します。
2.2. 予測監視のルールを作成する
この例で、Linux ホストの「CPU load 」サービスに対して、新しいルールを作成するには、セットアップメニューから「Service monitoring rules 」を選択し、「CPU load (not utilization!) 」ルールセットで新しいルールを作成します。
Value セクションには、サービスレベルでPredictive Levels (only on CMC) の値を選択できるパラメータがあります。

2.3. 過去の基準値の選択
Predictive Levels (only on CMC) を選択するとパラメーターが表示されます。そのうち最初の2つを詳しく説明します:

Base prediction on (予測モニタリング)では、測定データの繰り返しを予想する周期性(毎月、毎週、毎日、または毎時)を定義します。
Day of the month: その月の各日の測定値が、その月の中でそれぞれ比較されます。つまり、1 日目、2 日目、3 日目...というように比較されます。
Day of the week: 比較は曜日に基づいて行われます。つまり、曜日ごとに(月曜日、火曜日、水曜日など)異なる予測が行われます。通常、この設定が適切です。
Hour of the day: 各日の各時間を比較します。つまり、予測は毎日繰り返されます。
Minute of the hour: 分単位の比較および 1 時間ごとの繰り返しは、通常、予測のテストにのみ有用です。
次のパラメータ「Time horizon 」では、Checkmk が測定データを評価する過去の日数を入力します。 Checkmk は、RRD ファイルに保存されている履歴データにアクセスします。 RRD ファイル内の測定データは 4 年間 保存されますが、過去をあまり遡る意味はありません。 まず、最近の典型的な値は、より遠い過去の値とは異なる場合があります。
一方、過去をさかのぼるほど、比較対象となる単位時間あたりの測定データが少なくなります。 これは、Checkmkはデフォルトで、RRD ファイルに 1 分ごとに記録されている測定データを、スペースを節約するために 2 日後、10 日後、90 日後の 3 段階で圧縮するためです。 圧縮とは、複数の測定データから最小値、最大値、平均値を計算し、これらの計算データを元の測定データに置き換えることを意味します。 圧縮とは、複数の測定データから最小値、最大値、平均値が計算され、その計算データが元の測定データに置き換わることを意味します。 過去 2 日間の測定データが 1 分間のフル解像度で入手できる場合、2 日後には解像度は 5 分、10 日後には 30 分、90 日後には 6 時間に低下します。 Checkmk が予測監視のために履歴データにアクセスする場合、保存されている 3 つの値のうち最大の値が常に採用されます。
月曜日から金曜日の夜間に高負荷がかかる例のサーバーの場合、基準期間を「週」に設定し、基準時間範囲を(最大)90 日間に設定することをお勧めします。 90 日間は、比較対象日数が十分にあり、かつデフォルト値が変更されていない限り、測定データを 30 分間の解像度で取得できるため、妥当な妥協案と言えます。
Base prediction on には「Day of the week 」を選択し、Time horizon には90 を入力します(上記画像参照)。
過去 90 日間の範囲を週単位の基準期間に設定することで、Checkmk は基準曲線を計算するために必要な情報を取得できます。 これは、期間内の各月曜日(90 日間では 12 月曜日)を評価し、各月曜日の測定値を他の月曜日の測定値と比較し、平均を計算します。 月曜日以降、Checkmk は火曜日から日曜日までの他の曜日についても同様にハンドルします。 このようにして計算された過去の基準曲線が更新され、将来の予測基準曲線となります。
基準期間の平均値を計算するために使用される値は、RRD ファイル内の履歴データの解像度によっては、すでに計算済み(つまり測定されていない)値である場合もあります。 |
これまでに定義した 2 つのパラメータ(基準期間と基準時間範囲)に基づいて Checkmk が計算した基準曲線は、次の図に黒い線で描かれています。

この画像は、セットアップ完了後に表示できる予測グラフのプレビューです。 黒い基準曲線とは別に、現在の値が青い線で表示されます(表示時間範囲内で利用可能な場合)。
セットアップを完了するには、グラフで黄色と赤の背景色でマークされている、WARN およびCRIT の状態の閾値定義が必要です。 次のセクションでは、これらの閾値の定義について説明します。
2.4. 予測の閾値の定義
WARN およびCRIT の閾値は、基準曲線に表示される予測値に応じて定義します。

閾値定義に使用するさまざまなパラメータ値の効果を説明するために、基準曲線上の 1 つの値を詳しく見てみましょう。 サービスCPU load の予測値が、金曜日の午前 3 時 30 分に 10 であると仮定します。
上限閾値にはパラメータDynamic levels — upper bound 、下限閾値にはDynamic levels — lower bound があります。 どちらのパラメータにも 3 つの選択肢があり、次の 3 つのセクションで説明します。
予測値からの絶対差
この値では、予測値を一定の絶対値だけ増減して閾値が計算されます。
例:Warning at 2.00 では、値が 12 以上 8 未満の場合に警告が表示されます。
予測値からの相対差
この値では、予測値をパーセンテージだけ増減して閾値が計算されます。
例:Warning at 10.0 % では、値が 11 以上 9 未満の場合に警告が表示されます。
標準偏差に対する相対差
この値では、予測値を標準偏差の倍数だけ増減して閾値が計算されます。 標準偏差は、基準期間(たとえば、毎週金曜日の午前 3 時 30 分)における値のばらつきを表します。
このオプションを使用すると、Checkmk は基準期間のすべての測定値から内部で標準偏差を計算するため、閾値の計算はそれほど予測しにくくなります。 この効果を説明するために、金曜日の午前 3 時 30 分における基準期間の 12 件の測定値に関する詳細情報が必要です。 10 件の測定値は 10、1 件は 11、1 件は 9 であると仮定します。 したがって、12 回の測定値の平均値は 10(予測値に相当)、分散は約 0.167、標準偏差は約 0.41 となります。 (ここでは計算の詳細は省略しますが、インターネット上のさまざまな統計ページを参照してください。
例:Warning at 1.00 を標準偏差の倍数として設定すると、値が 10.41 以上 9.59 未満の場合に警告が表示されます。
不要な「WARN 」/「CRIT 」の状態を避けるため、標準偏差が定義されていない場合(基準期間に測定値が 1 つしかない場合など)、または 0 の場合(すべての測定値が同一の場合)は、閾値は適用されません。
一般的には、以下のルールが適用されます。 過去の値が安定しているほど、標準偏差は小さくなり、予測は厳格になります。 したがって、このオプションは、値が安定しており、均一な基準期間について、より厳格な閾値を設定する場合に有用です。
最小上限閾値
最後に、Limit for upper bound dynamic levels では、上限閾値に絶対的な最小値を設定することができます。 これにより、予測値が非常に低い場合に、望ましくない「WARN 」/「CRIT 」状態になることを防ぐことができます。
Warning level 2.00 例:警告の閾値が 2.5 の場合、警告の上限閾値が 1.5 であっても、値が 2 を超えた場合にのみ警告が表示されます。
閾値を使用した予測グラフ
1 つの値について例として説明した効果は、Checkmk によって基準曲線上のすべての値について計算されます。 その結果は、次の章で詳しく説明する予測グラフで確認できます。 このグラフには、基準曲線の上下にある上限閾値と下限閾値の曲線が表示されます。WARN の領域は黄色、CRIT の領域は赤色で表示されます。
特に、標準偏差から閾値を計算している場合は、予測グラフで「WARN 」および「CRIT 」の範囲を注意深くチェックしてください。標準偏差の基礎となる値は、Checkmk ユーザーインターフェースからは直接読み取ることができません。 レベルをチェックし、必要に応じて調整することで、サービスが意図せずに「WARN 」または「CRIT 」の状態になることを防ぐことができます。
これで、予測監視の実装は完了です。 次の章では、監視でセットアップを観察する方法、および予測グラフを表示する方法について説明します。
3. 予測の分析
サービスに対して予測ベースの監視を設定した場合は、変更をアクティブにし、Checkmk がこのサービスのチェックを実行すると、サービスリストに新しいアイコン が表示されます。

特に、サービスの初期セットアップ直後は、設定された予測に必要なデータが十分でないため、このアイコンが表示されない場合があります。
この場合、Summary (予測データなし)列に「 |
サービスリストでをクリックすると、現在の予測時間範囲のグラフィック表示(予測グラフ)が表示されます。

予測グラフには、基準曲線が黒い線で、現在の値が青い線で、OK の状態の範囲が白で、WARN の状態の範囲が黄色で、CRIT の状態の範囲が赤の背景色で表示されます。
表示される時間範囲は、選択した基準期間に基づいています。 たとえば、期間が 1 週間の場合、週の各曜日を個別に表示し、グラフの上にあるドロップダウンリストを使用して別の曜日に切り替えることができます。 特別なEveryday リストエントリを使用すると、データが入力されているすべての曜日の平均値がグラフに表示されます。
このグラフの例では、夜間の利用率が高く、昼間の利用率が低いことがわかります。 0:00 から 04:00 までは、現在の値(青い線)が予測基準曲線(黒い線)よりも低く、実際には下限閾値を下回って断続的にWARN/CRIT 状態になっています。 また、08:30 から 23:30 までの間、青色の線が常に下限の「CRIT 」の範囲にあることもわかります。 この状態は、下限の閾値を高く設定することで、将来は回避できるでしょう。
最後に、グラフは、05:00 から 07:30 までの間、基準曲線の値が減少する一方で、上限閾値が上昇する傾向があるため、上限閾値が標準偏差に基づいていることを示しています。 この動作は、標準偏差によってのみ説明できます。他の 2 つのオプション (絶対値およびパーセンテージ値) を選択した場合、閾値は基準曲線の方向に調整されるからです。
初期設定と同様に、予測監視の変更は、サービスを再度チェックした後でのみ有効になります。 次の定期チェックを待つ必要はありません。サービスリストの アイコンと [Reschedule 'Check_MK' service ] メニュー項目を使用して、手動でチェックをトリガーすることができます。 |
