Grafana は、Grafana Machine Learningツールキットの一部として外れ値検出機能をリリースした。外れ値検出機能を使用することで、類似グループを監視し、それらの一部が基準とは異なる動作をし始めたときにアラートを受け取れるようになる。
ローンチには、DBSCAN と MAD の 2 つの異なる検出アルゴリズムが含まれている。DBSCAN(Density-based spatial clustering of applications with noise:密度準拠クラスタリング)は、時間の経過とともに一緒に移動するSeries(特定の1次元データ)や、データと強い傾向があるSeriesに最適だ。DBSCAN は、密度と距離に基づいてデータポイントを集団化する。このフラグは、もっとも有意な集団の外側にデータポイントを持つ場合に表示される。データに窓関数を適用(rolling window)することで、基準動作の適用幅をデータにそって移動する。
外れ値の動作を検出する DBSCAN アルゴリズム (黄色) (引用: grafana )
MAD (Median absolute deviation:中央絶対偏差) は、集団の全メンバーが基準動作の一定した幅で移動する場合にもっとも効果的だ。異なるタイミングで再発するような、同期していない事象の影響を受けにくい。各タイムスタンプごとのデータポイント距離を、24時間のrolling中央値と比較する。このフラグは、設定した感度の閾値外にデータポイントがある場合に表示される。
MADアルゴリズムが、安定した帯域(青)から外れたSeriesの外れ値(黄色)を検出する (引用: Grafana )
外れ値検出機能クエリは、比較するSeriesと、基準となる集団とを決定する。この外れ値検出機能クエリは、3つ以上のSeriesを含むあらゆる指標クエリをサポートしている。クエリは、基準となる集団が類似の分析データを示すように、フィルタリングする必要がある。クエリが作成されると、感度の設定に従ってアルゴリズムが選択される。感度が高いほど、外れ値が多くなり、アラートは増える可能性がある。
外れ値検出機能は、Grafana Alertingによるアラートの送信をサポートしている。初期値では、ポッドが1つでもおかしな動きをするとアラートが通知される。アラートは、まとめられた外れ値ルールに調整できる。たとえば、web_api_cluster_cpu_usage
という名前のついた外れ値検出クエリの初期アラートルールはweb_api_cluster_cpu_usage:outliers
となる。集団の10%以上が異なる動作をしている場合にのみ実行されるようにルールを変更するには、以下のとおり。
(sum(web_api_cluster_cpu_usage:outliers) / count(web_api_cluster_cpu_usage:outliers)) > 0.10
Grafana Machine Learning は現在、Prometheus、Graphite、Loki (メトリクス クエリのみ)、Postgres、InfluxDB、BigQuery、Snowflake、Splunk、および Datadog のデータソースをサポートしている。
初期設定での使用量制限は、1つの外れ値検出あたり 1000 個の Series、1 インスタンスあたり 10 個の外れ値検出となっている。Grafanaは、要望次第で上限を引き上げられると表明している。Grafana CloudのPro、Advanced、Customプランの顧客は、追加料金なしで外れ値検出機能を利用可能。ご質問があれば Grafana Labs Slack ワークスペースの #machine-learning チャンネルまで。