Smart Metrics helps you configure alarms with algorithms
はじめに
ベテラン SRE エンジニアから「毎日数十件のアラームを受信しないと不安だ」「毎日アラームが報告されるが、アプリケーションには何も問題がない」という声を聞きます。これは「誤アラームの氾濫」という非常に一般的な現象を反映しており、「真の」アラームが見えにくくなっています。ARMS AIOps チームが応答時間とエラー率の急増に関する 6 万件以上のアラームを分析したところ、「真の」アラームはわずか 3.05% でした。また、誤アラーム氾濫の根本原因は、既存のアラーム製品の機能だけでは効果的なアラートルールを設定することが難しい点にあることが判明しました。そこで ARMS は、Grafana マネージド版をベースに、アルゴリズムを活用して「アラーム設定と運用の難しさ」というユーザーの課題を解決するインテリジェントアラームプラグイン SmartMetrics を提供します。
本記事では、一般的な 2 種類の無効なアラームルールから始め、効果的なアラーム設定が難しい理由と誤アラームが蔓延する原因を分析し、SmartMetrics がアラーム設定の問題をどのように解決するかを紹介し、ベストプラクティスも紹介します。最後に、SmartMetrics のディスカッショングループへのご参加をお待ちしています。DingTalk グループ番号は 25125004458 です。
アラーム状況の分析
誤アラームの氾濫
ARMS のアラームデータとユーザーインタビューの分析を通じて、多くのユーザーが 1 日に数百件のアラームを受信しているものの、実際に有用なアラームはごくわずかであることがわかりました。さらに深刻なことに、それらの「真の」アラームが大量の誤アラームに埋もれてしまい、ユーザーが本当の障害にいち早く対処できていないケースも見られます。これらの誤アラームは、不適切なアラーム設定習慣によって引き起こされることが多く、以下の 2 種類が典型的です。
「一律適用」型のアラームモード:
たとえば、ある SRE エンジニアが多数のインターフェイスを管理している場合、アラーム設定の手間を省くため、すべてのアプリケーション/インターフェイスの応答時間、エラー率、呼び出し量に対して統一された固定のしきい値を設定します。しかし、異なるアプリケーション/インターフェイスの通常時の応答時間、呼び出し量、エラー率の正常な水位はそれぞれ異なります。数百のアプリケーション/インターフェイスに同じしきい値を適用すれば、当然ながら大量の誤アラームが発生します。
「放置」型のアラームしきい値:
一部のアラームルールは当初は問題なく機能していますが、ビジネスの成長に伴い、応答時間や呼び出し量などのビジネス指標や、CPU 使用率などのマシン指標の平均的な水位が変化します。しかし、SRE がしきい値を適時に更新しなかったため、システムが正常な状態でもアラームが発報され続けることになります。
一般的に言えば、上記 2 種類のアラーム戦略を最適化すれば、大量の誤アラームを効果的に回避できます。しかし実際には、その最適化は簡単ではありません。その理由は、既存のアラーム製品が静的しきい値を使用したアラーム設定しかサポートしていないからです。
典型的なアラーム設定ページを見てみましょう。平均値、最大値、最小値、差分など、多くの一般的な集約演算子が提供されており、ユーザーはこれらの演算子を使用してアラームルールをカスタマイズできます。
実際の運用保守指標、たとえば QPS(1 分あたりのリクエスト数)を見てみましょう。以下のようになります。
では、最大値、最小値、平均値をどう設定すべきでしょうか。しきい値はどう設定すればよいでしょうか。
効果的なアラームの設定と運用が難しい理由
変化しやすい実際の運用保守指標を前にしては、経験豊富な運用保守の専門家でも効果的なアラームを設定するのは困難です。効果的なアラームの設定と運用が難しい主な理由をまとめます。
1. 多くの運用保守指標は変動し、適切な静的しきい値を設定するのが難しい。
これらの指標は時間、日、週の周期で季節性を示すことがよくあります。指標自体が変動するため、静的しきい値や前年同月比しきい値との適合性が悪くなります。
2. 同じ指標でも、アプリケーション/インターフェイス/ホストごとにしきい値が異なる。
応答時間の指標を例にとると、あるインターフェイスの正常時の応答時間が約 200 ms であれば、応答時間が 300 ms を超えた時点で異常と判断できます。しかし、長期的なトラフィック量が多いインターフェイスでは、全体的な指標が正常時でも 500 ms 前後で変動しており、適切なアラームしきい値は 600 ms 程度になる場合があります。1 つのアプリケーションに数百のインターフェイスがある場合、運用保守担当者はすべてのインターフェイスに適切なしきい値を設定する必要があり、時間的コストが非常に高くなります。
3. 指標の正常な水位はビジネスの成長に伴い変化する。
会社のビジネスの発展や新しいアプリケーションの導入に伴い、正常時の一部の指標の水位は継続的に変化します。しきい値を適時に更新しないと、大量の誤アラームが発生しやすくなります。
まとめると、既存のアラーム製品の静的しきい値方式に依存すると、SRE 担当者は多大な時間とコストを費やしても、良い結果を得ることは困難です。この問題を解決するため、ARMS は Grafana ベースのインテリジェントアラームプラグイン SmartMetrics をリリースしました。アルゴリズムを活用して、ユーザーが効果的なアラームを設定できるように支援します。
よりシンプルなアラーム設定 - SmartMetrics
SmartMetrics は「スマートで使いやすく、可視化された」アラームプラグインです。過去のメトリックデータから指標の特徴を学習し、将来の指標の正常範囲を予測して上側境界と下側境界を生成します。ここでの上側境界と下側境界に囲まれた区間は、デフォルトで 90% 信頼区間です。つまり、過去数日間の傾向に基づき、指標に異常がなければ、その将来の値が 90% の確率で予測した上側境界と下側境界の範囲内に収まることを意味します。
SmartMetrics は Grafana のネイティブアラーム機能をサポートしています。SmartMetrics が生成した上側境界と下側境界をアラート設定のしきい値として使用できます。シンプルなアラーム戦略では、指標が上限を超えた場合または下限を下回った場合にアラームを発報します。より複雑な戦略も設定できます。たとえば、元の曲線が上側境界の 1.5 倍を超え、かつ過去 1 時間に上側境界を超えたことがない場合にのみアラームを発報するといった設定も可能です。
現在、SmartMetrics は Grafana マネージド版で既に提供されており、今後は ARMS のアラーム機能に追加機能として組み込まれる予定です。
SmartMetrics による上側境界と下側境界の生成方法
SmartMetrics はマルチモデル融合により、異なるタイプの指標に対して上側境界と下側境界を算出します。まず Smart PLR アルゴリズムで指標の重要な特徴を抽出し、分類アルゴリズムを使用して指標曲線のタイプを判定します。そのタイプに応じて、最も適した時系列予測モデルと最適なパラメータを選択します。最後に、上側境界と下側境界を生成します。
SmartMetrics は、業界で広く利用されているオープンソースアルゴリズム Prophet、STL、ARIMA、BiLSTM を採用し、Alibaba Cloud 内部のビッグデータ実践に基づいて、単一周期/複数周期の識別、トレンド識別、外れ値識別、スパイク識別、変化点検出を最適化し、最終的にこれらを統合してマルチモデル Smart Prophet アルゴリズムソリューションを構築しています。SmartMetrics には以下の特徴があります。
a. 正確性:本アルゴリズムは Alibaba Cloud 内の複数のシナリオで検証されており、正確かつ包括的な異常検知機能を備えています。アラーム持続時間と組み合わせることで、正確なアラーム効果を実現します。
b. 汎用性:本アルゴリズムはビジネス指標と基本指標の両方をサポートし、周期性、トレンド、変動性のある指標に対して、より適切な曲線分類とモデルパラメータ設定を行います。
c. メンテナンスフリー:SmartMetrics を使用するユーザーは、ビジネスの変化に応じてアルゴリズムのパラメータを動的に調整する必要はありません。アルゴリズムが指標の変化パターンを学習することで、ビジネスの変化に自動適応します。
SmartMetrics による効果的なアラームの設定と運用の難しさの解決方法
1. SmartMetrics は変動する運用保守指標に対する効果的なアラーム設定のニーズにどう対応するか
SmartMetrics は 7 日間の履歴データに基づいて、正常時の今後 1 日間の曲線の上側境界と下側境界を自動的に予測し、指標の実測値をリアルタイムで書き込みます。ユーザーは Grafana の組み込みアラーム機能を使用してアラームを設定できます。指標の実測値が上側境界と下側境界を超えた場合、または実測値が上側境界値の 1.5 倍を超えた場合などにアラームを発報します。さまざまなアラームルールをカスタマイズできます。詳細なベストプラクティスについては、SmartMetrics の公式ドキュメントを参照してください。
2. SmartMetrics は同じ指標で異なるアプリケーション/インターフェイス/ホストのアラームしきい値シナリオにどう対応するか
異なるアプリケーション/インターフェイス/ホストの指標に対して、SmartMetrics を使用して上側境界と下側境界を生成します。SmartMetrics はそれぞれの特徴を自動的に学習し、適切な動的ベースラインを生成します。ユーザーが手動で静的しきい値を入力する必要はありません。
3. SmartMetrics はビジネス発展による静的しきい値メンテナンスの難しさにどう対応するか
SmartMetrics はデフォルトで毎日モデルを更新し、ビジネス変化に伴う指標の正常な水位変化を自動的に学習するため、手動メンテナンスは不要です。
SmartMetrics ベストプラクティス
ステップ 1 動的しきい値タスクの作成
• 適切なデータソースを選択します。
• 動的モニタリング対象の指標を選択します。
注意:現在は 1 つの指標タスクのみサポートされているため、指標内のラベル値を指定するか、sum や count などの演算子を使用して単一の指標をクエリする必要があります。マルチ指標設定は現在計画中です。オンライン化の可否はユーザーフィードバックに基づいて決定されます。
• 選択後、Query を実行して対応する指標曲線を確認します。
• 適切なモデルパラメータを設定し、感度を選択します。デフォルト設定の使用を推奨します。
• 正しい名前と説明を入力します。
• 「Create Forecast」をクリックして作成を完了します。
ステップ 2 メトリックの表示
• タスクの作成に成功したら、クリックしてタスクリストに戻ることができます。
注意:タスク作成後、タスクは直ちに開始され、データ取得、計算、保存などの処理が実行されます。このプロセスには約 1〜2 分ほどお待ちいただく必要があります。
• 「View the market」をクリックして、具体的な指標と対応する上側境界および下側境界を確認します。
• 全体表示には、元の指標時系列データと対応する上側境界および下側境界で構成される正常範囲が表示されます。指標値が境界内にあれば、アルゴリズムにより正常と判断されます。上側境界と下側境界を超えている場合、アルゴリズムにより異常と判断されます。
• 「Edit」をクリックして編集ページに移動します。
• 現在の指標と上側境界および下側境界は、Prometheus データソース cloud_ product_ prometheus_ cn-hangzhou_ aiops_ UserId に統一的に保存されています。指標名はタスク作成時に設定した名前です。対応するラベル:smart_metric の異なる値(actual、upper、lower)は、それぞれ(元の指標、上側境界指標、下側境界指標)に対応します。たとえば、上側境界のみを確認したい場合は、対応するデータソース cloud_ product_ prometheus_ cn-hangzhou_ aiops_ UserId で smart_metric="upper" の指標を検索してください。
ステップ 3 異常検知とアラート設定
• 指標グラフ表示ページで「Edit」をクリックして編集ページに移動します。
• Query ページで、D クエリ指標を確認できます。デフォルトでは、上側境界を超える指標クエリが事前に設定されています。
tuyang_ test{smart_metric="actual"} > ignoring (smart_metric) tuyang_ test{smart_metric="upper"}
• Grafana のタブページで、Alert ページに移動して Alert を作成します。
• NULL 設定があれば問題ありません。同時に通知先と通知情報を設定します。
ステップ 4 アラーム通知
• 発生したアラームについては、設定した通知方法でアラームを受け取ることができます。リンクをクリックして Grafana に移動し、詳細を確認できます。
ステップ 5 タスク管理
• 不要になった動的しきい値検出タスクは、タスクリストから削除できます。
ベテラン SRE エンジニアから「毎日数十件のアラームを受信しないと不安だ」「毎日アラームが報告されるが、アプリケーションには何も問題がない」という声を聞きます。これは「誤アラームの氾濫」という非常に一般的な現象を反映しており、「真の」アラームが見えにくくなっています。ARMS AIOps チームが応答時間とエラー率の急増に関する 6 万件以上のアラームを分析したところ、「真の」アラームはわずか 3.05% でした。また、誤アラーム氾濫の根本原因は、既存のアラーム製品の機能だけでは効果的なアラートルールを設定することが難しい点にあることが判明しました。そこで ARMS は、Grafana マネージド版をベースに、アルゴリズムを活用して「アラーム設定と運用の難しさ」というユーザーの課題を解決するインテリジェントアラームプラグイン SmartMetrics を提供します。
本記事では、一般的な 2 種類の無効なアラームルールから始め、効果的なアラーム設定が難しい理由と誤アラームが蔓延する原因を分析し、SmartMetrics がアラーム設定の問題をどのように解決するかを紹介し、ベストプラクティスも紹介します。最後に、SmartMetrics のディスカッショングループへのご参加をお待ちしています。DingTalk グループ番号は 25125004458 です。
アラーム状況の分析
誤アラームの氾濫
ARMS のアラームデータとユーザーインタビューの分析を通じて、多くのユーザーが 1 日に数百件のアラームを受信しているものの、実際に有用なアラームはごくわずかであることがわかりました。さらに深刻なことに、それらの「真の」アラームが大量の誤アラームに埋もれてしまい、ユーザーが本当の障害にいち早く対処できていないケースも見られます。これらの誤アラームは、不適切なアラーム設定習慣によって引き起こされることが多く、以下の 2 種類が典型的です。
「一律適用」型のアラームモード:
たとえば、ある SRE エンジニアが多数のインターフェイスを管理している場合、アラーム設定の手間を省くため、すべてのアプリケーション/インターフェイスの応答時間、エラー率、呼び出し量に対して統一された固定のしきい値を設定します。しかし、異なるアプリケーション/インターフェイスの通常時の応答時間、呼び出し量、エラー率の正常な水位はそれぞれ異なります。数百のアプリケーション/インターフェイスに同じしきい値を適用すれば、当然ながら大量の誤アラームが発生します。
「放置」型のアラームしきい値:
一部のアラームルールは当初は問題なく機能していますが、ビジネスの成長に伴い、応答時間や呼び出し量などのビジネス指標や、CPU 使用率などのマシン指標の平均的な水位が変化します。しかし、SRE がしきい値を適時に更新しなかったため、システムが正常な状態でもアラームが発報され続けることになります。
一般的に言えば、上記 2 種類のアラーム戦略を最適化すれば、大量の誤アラームを効果的に回避できます。しかし実際には、その最適化は簡単ではありません。その理由は、既存のアラーム製品が静的しきい値を使用したアラーム設定しかサポートしていないからです。
典型的なアラーム設定ページを見てみましょう。平均値、最大値、最小値、差分など、多くの一般的な集約演算子が提供されており、ユーザーはこれらの演算子を使用してアラームルールをカスタマイズできます。
実際の運用保守指標、たとえば QPS(1 分あたりのリクエスト数)を見てみましょう。以下のようになります。
では、最大値、最小値、平均値をどう設定すべきでしょうか。しきい値はどう設定すればよいでしょうか。
効果的なアラームの設定と運用が難しい理由
変化しやすい実際の運用保守指標を前にしては、経験豊富な運用保守の専門家でも効果的なアラームを設定するのは困難です。効果的なアラームの設定と運用が難しい主な理由をまとめます。
1. 多くの運用保守指標は変動し、適切な静的しきい値を設定するのが難しい。
これらの指標は時間、日、週の周期で季節性を示すことがよくあります。指標自体が変動するため、静的しきい値や前年同月比しきい値との適合性が悪くなります。
2. 同じ指標でも、アプリケーション/インターフェイス/ホストごとにしきい値が異なる。
応答時間の指標を例にとると、あるインターフェイスの正常時の応答時間が約 200 ms であれば、応答時間が 300 ms を超えた時点で異常と判断できます。しかし、長期的なトラフィック量が多いインターフェイスでは、全体的な指標が正常時でも 500 ms 前後で変動しており、適切なアラームしきい値は 600 ms 程度になる場合があります。1 つのアプリケーションに数百のインターフェイスがある場合、運用保守担当者はすべてのインターフェイスに適切なしきい値を設定する必要があり、時間的コストが非常に高くなります。
3. 指標の正常な水位はビジネスの成長に伴い変化する。
会社のビジネスの発展や新しいアプリケーションの導入に伴い、正常時の一部の指標の水位は継続的に変化します。しきい値を適時に更新しないと、大量の誤アラームが発生しやすくなります。
まとめると、既存のアラーム製品の静的しきい値方式に依存すると、SRE 担当者は多大な時間とコストを費やしても、良い結果を得ることは困難です。この問題を解決するため、ARMS は Grafana ベースのインテリジェントアラームプラグイン SmartMetrics をリリースしました。アルゴリズムを活用して、ユーザーが効果的なアラームを設定できるように支援します。
よりシンプルなアラーム設定 - SmartMetrics
SmartMetrics は「スマートで使いやすく、可視化された」アラームプラグインです。過去のメトリックデータから指標の特徴を学習し、将来の指標の正常範囲を予測して上側境界と下側境界を生成します。ここでの上側境界と下側境界に囲まれた区間は、デフォルトで 90% 信頼区間です。つまり、過去数日間の傾向に基づき、指標に異常がなければ、その将来の値が 90% の確率で予測した上側境界と下側境界の範囲内に収まることを意味します。
SmartMetrics は Grafana のネイティブアラーム機能をサポートしています。SmartMetrics が生成した上側境界と下側境界をアラート設定のしきい値として使用できます。シンプルなアラーム戦略では、指標が上限を超えた場合または下限を下回った場合にアラームを発報します。より複雑な戦略も設定できます。たとえば、元の曲線が上側境界の 1.5 倍を超え、かつ過去 1 時間に上側境界を超えたことがない場合にのみアラームを発報するといった設定も可能です。
現在、SmartMetrics は Grafana マネージド版で既に提供されており、今後は ARMS のアラーム機能に追加機能として組み込まれる予定です。
SmartMetrics による上側境界と下側境界の生成方法
SmartMetrics はマルチモデル融合により、異なるタイプの指標に対して上側境界と下側境界を算出します。まず Smart PLR アルゴリズムで指標の重要な特徴を抽出し、分類アルゴリズムを使用して指標曲線のタイプを判定します。そのタイプに応じて、最も適した時系列予測モデルと最適なパラメータを選択します。最後に、上側境界と下側境界を生成します。
SmartMetrics は、業界で広く利用されているオープンソースアルゴリズム Prophet、STL、ARIMA、BiLSTM を採用し、Alibaba Cloud 内部のビッグデータ実践に基づいて、単一周期/複数周期の識別、トレンド識別、外れ値識別、スパイク識別、変化点検出を最適化し、最終的にこれらを統合してマルチモデル Smart Prophet アルゴリズムソリューションを構築しています。SmartMetrics には以下の特徴があります。
a. 正確性:本アルゴリズムは Alibaba Cloud 内の複数のシナリオで検証されており、正確かつ包括的な異常検知機能を備えています。アラーム持続時間と組み合わせることで、正確なアラーム効果を実現します。
b. 汎用性:本アルゴリズムはビジネス指標と基本指標の両方をサポートし、周期性、トレンド、変動性のある指標に対して、より適切な曲線分類とモデルパラメータ設定を行います。
c. メンテナンスフリー:SmartMetrics を使用するユーザーは、ビジネスの変化に応じてアルゴリズムのパラメータを動的に調整する必要はありません。アルゴリズムが指標の変化パターンを学習することで、ビジネスの変化に自動適応します。
SmartMetrics による効果的なアラームの設定と運用の難しさの解決方法
1. SmartMetrics は変動する運用保守指標に対する効果的なアラーム設定のニーズにどう対応するか
SmartMetrics は 7 日間の履歴データに基づいて、正常時の今後 1 日間の曲線の上側境界と下側境界を自動的に予測し、指標の実測値をリアルタイムで書き込みます。ユーザーは Grafana の組み込みアラーム機能を使用してアラームを設定できます。指標の実測値が上側境界と下側境界を超えた場合、または実測値が上側境界値の 1.5 倍を超えた場合などにアラームを発報します。さまざまなアラームルールをカスタマイズできます。詳細なベストプラクティスについては、SmartMetrics の公式ドキュメントを参照してください。
2. SmartMetrics は同じ指標で異なるアプリケーション/インターフェイス/ホストのアラームしきい値シナリオにどう対応するか
異なるアプリケーション/インターフェイス/ホストの指標に対して、SmartMetrics を使用して上側境界と下側境界を生成します。SmartMetrics はそれぞれの特徴を自動的に学習し、適切な動的ベースラインを生成します。ユーザーが手動で静的しきい値を入力する必要はありません。
3. SmartMetrics はビジネス発展による静的しきい値メンテナンスの難しさにどう対応するか
SmartMetrics はデフォルトで毎日モデルを更新し、ビジネス変化に伴う指標の正常な水位変化を自動的に学習するため、手動メンテナンスは不要です。
SmartMetrics ベストプラクティス
ステップ 1 動的しきい値タスクの作成
• 適切なデータソースを選択します。
• 動的モニタリング対象の指標を選択します。
注意:現在は 1 つの指標タスクのみサポートされているため、指標内のラベル値を指定するか、sum や count などの演算子を使用して単一の指標をクエリする必要があります。マルチ指標設定は現在計画中です。オンライン化の可否はユーザーフィードバックに基づいて決定されます。
• 選択後、Query を実行して対応する指標曲線を確認します。
• 適切なモデルパラメータを設定し、感度を選択します。デフォルト設定の使用を推奨します。
• 正しい名前と説明を入力します。
• 「Create Forecast」をクリックして作成を完了します。
ステップ 2 メトリックの表示
• タスクの作成に成功したら、クリックしてタスクリストに戻ることができます。
注意:タスク作成後、タスクは直ちに開始され、データ取得、計算、保存などの処理が実行されます。このプロセスには約 1〜2 分ほどお待ちいただく必要があります。
• 「View the market」をクリックして、具体的な指標と対応する上側境界および下側境界を確認します。
• 全体表示には、元の指標時系列データと対応する上側境界および下側境界で構成される正常範囲が表示されます。指標値が境界内にあれば、アルゴリズムにより正常と判断されます。上側境界と下側境界を超えている場合、アルゴリズムにより異常と判断されます。
• 「Edit」をクリックして編集ページに移動します。
• 現在の指標と上側境界および下側境界は、Prometheus データソース cloud_ product_ prometheus_ cn-hangzhou_ aiops_ UserId に統一的に保存されています。指標名はタスク作成時に設定した名前です。対応するラベル:smart_metric の異なる値(actual、upper、lower)は、それぞれ(元の指標、上側境界指標、下側境界指標)に対応します。たとえば、上側境界のみを確認したい場合は、対応するデータソース cloud_ product_ prometheus_ cn-hangzhou_ aiops_ UserId で smart_metric="upper" の指標を検索してください。
ステップ 3 異常検知とアラート設定
• 指標グラフ表示ページで「Edit」をクリックして編集ページに移動します。
• Query ページで、D クエリ指標を確認できます。デフォルトでは、上側境界を超える指標クエリが事前に設定されています。
tuyang_ test{smart_metric="actual"} > ignoring (smart_metric) tuyang_ test{smart_metric="upper"}
• Grafana のタブページで、Alert ページに移動して Alert を作成します。
• NULL 設定があれば問題ありません。同時に通知先と通知情報を設定します。
ステップ 4 アラーム通知
• 発生したアラームについては、設定した通知方法でアラームを受け取ることができます。リンクをクリックして Grafana に移動し、詳細を確認できます。
ステップ 5 タスク管理
• 不要になった動的しきい値検出タスクは、タスクリストから削除できます。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
