LoginSignup
27
27

Elasticsearchのデータを基にアラート通知する方法の調査

Last updated at Posted at 2019-08-20

X-PackのWatcher Alert

開発元:Elastic
有償

Watcherを始めてみよう

Elasticsearchのアラート検知プラグイン「Watcher」を使ってみた
Elastic Stack Alertingではまったことと対処方法
Elastic Stack を使った予兆検知結果の可視化 〜検知した異常の通知〜
Elasticsearchのプラグイン「Shield」「Watcher」による不正アクセス監査
Elastic StackのX-Packを試す(Watcher編)

X-PackのAlerting and action settings in Kibana

開発元:Elastic

Kibana alerts

Elastic StackをPrometheusとFluentdと組み合わせてKubernetesを監視する
https://www.elastic.co/jp/blog/monitoring-kubernetes-with-the-elastic-stack-using-prometheus-and-fluentd

Prometheusのデプロイでは、Alertmanagerは無効にしていました。Elastic Stackにログ、メトリックを収集した場合、Alertmanagerの代わりにKibana Alertを使ってアラーティングを実装することができます。Prometheusからのメトリックだけではなく、ログでも他のインデックスでも、Elasticsearchに格納されているデータは全て活用することができますし、機械学習を使ったより高度なアラーティングも可能になります。

ElastAlert

開発元:Yelp
Pythonで作られている。
Pythonライブラリの「elasticsearch-py」を使用している。
https://pypi.org/project/elasticsearch/
ライセンスは、Apache License 2.0
0.2.4 (2020/04/17)
https://pypi.org/project/elastalert/

・コマンド・設定ファイル(YAML)ベースでの動作のみ。
・0.2.0b2よりElasticsearch 7.xに対応。
・0.2.0よりPython3対応。
・バグ修正や機能追加は今後ありません。
・Python 3.9以降は動きません。
・Elasticsearch 8に対応していません。
Please don't let this die. ElastAlert usecase is very strong. #2947
Should someone else maintain this? #2946
Status of the elastalert project #2911

AWSのOpenSearch

  • 対応していない。正常に動かない
    (内部のElasticsearch バージョンは7.10.2だが、バージョンを1.0.0と返してしまう。バージョンチェックでElasticsearch 5の処理にいってしまう)
  • ElastAlert2は対応を開始した。

ElasticsearchのBearer認証

  • 対応していない。
  • ElastAlert2は対応してる。

ElasticsearchのApiKey認証

  • 対応していない。
  • ElastAlert2は対応してる。

ElasticsearchのProxy接続

Missing proxy configuration feature

  • 対応していない。
  • ElastAlert2も対応していない。

Python 3.9以降は動きません。

blist no longer works in Python 3.9
Elastalert is broken on python3.9 through blist dependency

  • ElastAlert2は対応してる。

AWS SNSは、以下のように書かないと動かない

    alert:
      - sns:
          aws_region: 'us-east-1'
    sns_topic_arn: 'arn:aws:sns:us-east-1:123456789:somesnstopic'
    aws_access_key_id: 'XXXXXXXXXXXXXXXXXX'
    aws_secret_access_key: 'YYYYYYYYYYYYYYYYYYYY'

検索結果が 10,000 件を超える場合、検索結果画面での件数表示は 10,000 件以上と表示

track_total_hitsをtrueに設定すると10,000hits以上を検索できるようになるが、現在の実装ではtrack_total_hitをtrueにする設定変更をサポートしていない

Elasticsearchを7.Xにアップグレードしたら、hitsが10,000 になってた

blacklist、whitelistに1024の制限がある

Blacklist filter with 10.000+ terms is extremely slow
"Failed to parse query" for blacklist rule when file contains more than 1024 entries
blacklist line limit

Emailアラートの制限

  • Microsoft 365(旧名称Office 365)はfrom_addrに設定に対応していません。to,cc,bccに指定は問題無し。
  • Gmailをfrom_addrに設定する場合、Googleの設定で安全性の低いアプリのアクセスを有効にしないとメールの送信ができません。

KibanaのDashboard関連は正常に動きません

内部のロジックでkibana-intというインデックスを参照していますが、現在のElaticsearchでは.kibana*という名前なのでプログラムを修正しないと動きません。
それとDashboard関係のロジックがElasticsearch 7対応していません。

  • elastalert-rule-from-kibana
  • use_kibana_dashboard
  • use_kibana4_dashboard
  • kibana4_start_timedelta
  • kibana4_end_timedelta
  • download_dashboard

download_dashboardのドキュメントに不備があります。
https://elastalert.readthedocs.io/en/latest/recipes/writing_filters.html#loading-filters-directly-from-kibana-3
https://github.com/Yelp/elastalert/issues/1481

現在の記載

filter:
  download_dashboard: "My Dashboard Name"

正しい記載

filter:
  - term:
      download_dashboard: "My Dashboard Name"

ElastAlertのアラート通知先

アラート通知先 備考
Command アラート通知確認済
Email アラート通知確認済
gmailまたはoffice365でうまくいかないというissueを見かける問題ありそう。gmailまたはoffice365はfrom_addrに指定しなければ大丈夫
Jira 以下のものがドキュメントに記載し忘れている
・jira_assignee
カスタムフィールドで正常に動かない情報あり
Jira customfield not taking argument #3073
Trying to assign Epic Link to Jira ticket #3108
OpsGenie 以下のものがドキュメントに記載し忘れている
・opsgenie_addr
・opsgenie_proxy
・opsgenie_details
AWS SNS ドキュメントの記載が古い
・aws_access_key→aws_access_key_id
・aws_secret_key→aws_secret_access_key
・profile→aws_profile
HipChat HipChatは2019/02にサービス終了している
Stride Strideは2019/02にサービス終了している
Microsoft Teams アラート通知確認済
Slack アラート通知確認済
以下のものがドキュメントに記載し忘れている
・slack_ca_certs
・slack_ignore_ssl_errors
・slack_timeout
Mattermost アラート通知確認済
Telegram アラート通知確認済
以下のものがドキュメントに記載し忘れている
・telegram_proxy_login
・telegram_proxy_pass
GoogleChat
PagerDuty
PagerTree 最新の0.2.4で正常に動作しない
以下のものがドキュメントに記載し忘れている
・pagertree_proxy
Exotel Exotelは日本でサポート外のため未確認
Twilio アラート通知確認済
VictorOps アラート通知確認済
Gitter アラート通知確認済
ServiceNow アラート通知確認済
Debug
Stomp 最新の0.2.4で正常に動作しない
以下のものがドキュメントに記載し忘れている
・stomp_ssl
Alerta アラート通知は動いているという情報あり
以下のものがドキュメントに記載し忘れている
・alerta_api_skip_ssl
HTTP POST
Line Notify 最新の0.2.4で正常に動作しない
TheHive アラート通知は動いているという情報あり
以下のものがドキュメントに記載し忘れている
・hive_verify
Zabbix ドキュメントで「zbx_item」という記載されているのは「zbx_key」。zbx_itemと書くと「Missing required option(s): zbx_key」のエラーが出る。
・設定を追加して動かすとエラーが出る。バグがあるようです。
(expected 2, got 1)Could not import module zabbix: not enough values to unpack
Zabbix alert #2601
Zabbix alert module error #2621
Elastalet fails if alerter type zabbix is used: "ValueError: not enough values to unpack" [bug] #2586
以下の対応で正常に動作します。動作確認手伝いました
Bugfix and better error handling on zabbix alerter #2640

ElastAlert Server Dockerイメージ

ElastAlert Serverが今後もメンテナンスされるのか不安がある。
bitsensor/elastalertはメンテナンスしていない状況。
johnsusek/elastalert-serverをforkして独自でメンテナンスしていくことが発生することも考えて採用を考えたほうがいいと思います。
・新しいNode.jsへの対応。
・Elasticserachメジャーバージョンアップ対応(直近だと8.x)
・ElastAlert2を使う場合、praecoapp/elastalert-serverとkarql/elastalert2-server以外の選択肢はない。

Dockerイメージ名 タグ ElastAlert 備考
bitsensor/elastalert 2.0.1 0.1.39 Elastcserach 7.xで問題が発生
bitsensor/elastalert lastet 0.1.39 Elastcserach 7.xで問題が発生
bitsensor/elastalert 3.0.0-beta.0 0.2.0b2
bitsensor/elastalert 3.0.0-beta.1 未確認
servercentral/elastalert latest 0.2.1 bitsensor/elastalertフォーク
daichi703n/elastalert 0.2.1-dev2 0.2.1+bugfix servercentral/elastalertフォーク
jfcantu/elastalert:v0.1.1のイメージ使用?。その他のバグ修正は以下のサイトを参照。
Praeco + ElastAlert2.0 + ES7.x 構成の不具合対応方法
daichi703n/elastalert-server (GitHub)
karql/elastalert2-server latest ElastAlert2 2.15.0 bitsensor/elastalertフォーク
node.jsからTypeScriptに変更している
praecoapp/elastalert-server latest ElastAlert2 2.15.0 servercentral/elastalertフォーク
Praeco用ElastAlert Serverの最新版
Elasticsearch 8対応

インデックスのオープンしすぎによるJavaヒープメモリ枯渇

circuit_breaking_exceptionが発生することがある
→ElasticSearchのヒープサイズ変更
→ElasticSearch
indices.breaker.total.limit変更
→ElasticSearchのIndexデータ削除、or 不要Indexデータのクローズ
Elasticsearchのインデックス開きすぎによるヒープメモリ枯渇
elastalert feels very unhappy (circuit_breaking_exception, Data too large) #2485
circuit_breaking_exception, Data too large #349
After Upgrade to 6.2.4 Circuitbreaker Exception Data too large #31197
Elastalert deployment failed

参考URL

Elastic StackによるKubernetesモニタリングシステムの紹介
ElastAlert による Elasticsearch のインデックス監視・通知
elastalertでアプリの異常を自動検知して通知したい
elastalert – ElasticSearchによる簡単で柔軟なアラート
ElastAlertでカスタムルールを作成する
ElasticSearch + Elastalertでエラーログ検出時に通知したい
ElastAlertの監視ルールを拡張してすこしだけ幸せになる
Elasticsearchを活用したサービス監視ですこしだけ幸せになる
AWS ElasticSearch ServiceのログをElastAlertで監視する
twitter -> fluentd -> elasticsearch -> elastalert -> slackで、エゴサをしたい人生だった。
elastalertを利用したslackへのアラート
Alerting on Kubernetes Events with EFK Stack
ElastAlert: Alerting At Scale With Elasticsearch, Part 1
Using Elastalert to monitor disk growth

サンプル

elastalert/example_rules
andromedarabbit/elastalert-rule.yaml
elastalertを利用したslackへのアラート

Elastalert rule for CPU usage in percentage
Elastalert-Regel ausgeführt: IOError: [Errno 2] Keine solche Datei oder Verzeichnis: 'config.yaml'
ELK: ElastAlert for alerting based on data from ElasticSearch
manankalra/elastalert-tutorial
・elastalert_cpu_watch.yaml
・elastalert_filesystem_watch.yaml
・elastalert_memory_watch.yaml

ElastAlertのフォーク

BigDataBoutique/elastalert

  • ElastAlert 0.2.4ベース
  • crontrigger, must_notなどを追加している。
  • Python 3.9以降は動きません。
  • Elasticsearch 8に対応していません。

auto1-oss/elastalert

  • ElastAlert 0.2.1ベース
  • auto resolve alert、generate_kibana6_linkなどを追加している。
  • Python 3.9以降は動きません。
  • Elasticsearch 8に対応していません。

sherifabdlnaby/elastalert
v0.4.0

  • ElastAlert 0.2.1ベース
  • Jinja2 Optionsなどを追加している。
  • Python 3.9以降は動きません。
  • Elasticsearch 8に対応していません。

JasperJuergensen/elastalert

  • ElastAlert 0.2.4ベース
  • Python 3.9以降は動きません。
  • Elasticsearch 8に対応していません。

v0.3.0 (2020/6/20)
https://github.com/JasperJuergensen/elastalert/blob/master/changelog.md

Restructure
 Ruletypes in their own module instead of one file
 Alerter in their own module instead of one file
 Enhancements in their own module instead of one file
 Loaders in their own module instead of one file
 New global config Object instead of a dictionary
Added
 MAAS rule
 New metrics for spike and spike metric aggregation rule
 Correlation rule
 Queries
 Rule class which covers some functionality previously the elastalerter object had
 EARuntimeException for exceptions during the execution of a rule
 EAConfigExceptions for exceptions raised during the configuration phase of a rule
Fixed
 Fixed spike metric aggregation rule windows

jsonar/elastalert

  • ElastAlert 0.1.35ベース
  • Python 3.8、elasticsearch-pyバージョンアップなど
  • Python 3.9以降は動きません。
  • Elasticsearch 8に対応していません。

ElastAlert2

メンテナー:Jason Ertel
オリジナルのYelp/elastalertに無い機能があります。
ライセンスは、Apache License 2.0
2.15.0 (2023/11/25)
https://pypi.org/project/elastalert2/

・コードのリファクタリング、テストコードの追加。
・Python 3.9以降に対応している。
・Elasticsearch 7, 8, Opensearchに対応
・アラート通知先にDatadog、Discord、Chartwork、Dingtalk、Rocket.Chat、Amazon SES、Tencent SMS、Alertmanager、HTTP POST 2などが追加されている。
・多数のバグ修正(Line Notify、Stomp、Zabbix、Pagertreeは正常に動作。AWS SNSのバグ修正など)
・Dockerイメージ、 Helm chartも提供しています。

ElastAlert Kibana Plugin

開発元:BitSensor
ライセンスは、The 3-clause BSD license (Modified)
1.1.0 (2019/07/22)

・ElastAlert ルールファイルエディタ
・ElastAlertをKibanaのタブとして組み込める。
・アラートルールディレクトリの直下のファイルしか管理できない
・同じ名前のルールファイル名がある状態で新規で同じ名前のルールファイルを作ると上書きされてしまう。
・ルールのテンプレートフォルダを参照してルールファイルを作成する対応はできていない。
・Kibana 7.2.0~7.5.0に対応している。
・Praecoと一緒に使わないことをおすすめする。
<理由>
Praecoで対応していない設定で編集した場合、Praecoでアラートルールの有効・無効に変更したりした時に書いた設定が消えたりするからです。
なお、この動きは使用者が誤った使い方をしたことにより発生することであり、仕様だと思います。

ElastAlert Kibana Pluginについて思っていること

最新のKibanaで使えない(公式ではKibana 7.5.0までサポート)ので採用をおすすめできない状況
今後動かなくなっても最新のKibanaで動くように改修できるなら採用していいと思います。

Kibana 6.8.1~6.8.10、7.5.1~7.9.3、7.10.0~8.5.3

Kibana 7.10.0以降に対応
https://github.com/karql/elastalert-kibana-plugin
Kibana 6.8.1~6.8.10、7.5.1~7.9.3対応
https://github.com/nsano-rururu/elastalert-kibana-plugin/releases

Kibana 6.8.xでも動く?

kibana 6.8.1 support #117
Can't install elastalert-kibana-plugin-1.0.3-6.8.0.zip to Kibana 6.8.3 #123

Kibana 7.5.1~7.8.1で動きます

elastalert-kibana-plugin-1.1.0-7.5.0.zipをダウンロードしてきて、
kibana/elastalert-kibana-plugin/package.jsonの
Kibanaのバージョンを更新してzipファイルに圧縮すれば
Kibana 7.5.1、7.5.2で動きます。
Kibana 7.6.0~7.8.1については、package.jsonのKibanaのバージョン更新以外にelastalert.jsの差し替えも必要です。

Plugin elastalert-kibana-plugin [7.5.0] is incompatible with Kibana [7.5.1] #139
Plugin is incompatible with Kibana 7.6.0 #141
[Legacy] Route payload must be set to 'parse' when payload validation enabled #57777
update elasticsearch to 7.6.2; also, fix issue idaholab#119

KibanaにElastAlertのプラグインをインストールしたDockerイメージを作る場合

Kibana 7.5.1~7.8.1のDockerイメージの作成方法は別記事を書きました
elastalert-kibana-pluginをインストールした状態のDockerイメージを作成する方法

以下はdocker-composeのcommandでElastAlertのプラグインをインストールする場合

# (参考情報)elastalert-kibana-plugin-1.1.0-7.5.1.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.5.1.zip
unzip elastalert-kibana-plugin-1.1.0-7.5.1.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.5\.1/g" kibana/elastalert-kibana-plugin/package.json
zip elastalert-kibana-plugin-1.1.0-7.5.1.zip kibana/elastalert-kibana-plugin/package.json
rm -rf kibana

# elastalert-kibana-plugin-1.1.0-7.5.2.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.5.2.zip
unzip elastalert-kibana-plugin-1.1.0-7.5.2.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.5\.2/g" kibana/elastalert-kibana-plugin/package.json
zip elastalert-kibana-plugin-1.1.0-7.5.2.zip kibana/elastalert-kibana-plugin/package.json
rm -rf kibana

# (参考情報)elastalert-kibana-plugin-1.1.0-7.6.0.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.6.2; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.6.0.zip
unzip elastalert-kibana-plugin-1.1.0-7.6.0.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.6\.0/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.6.0.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.6.1.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.6.2; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.6.1.zip
unzip elastalert-kibana-plugin-1.1.0-7.6.1.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.6\.1/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.6.1.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.6.2.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.6.2; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.6.2.zip
unzip elastalert-kibana-plugin-1.1.0-7.6.2.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.6\.2/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.6.2.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.7.0.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.7.0; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.7.0.zip
unzip elastalert-kibana-plugin-1.1.0-7.7.0.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.7\.0/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.7.0.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.7.1.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.7.1; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.7.1.zip
unzip elastalert-kibana-plugin-1.1.0-7.7.1.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.7\.1/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.7.1.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

# (参考情報)elastalert-kibana-plugin-1.1.0-7.8.0.zip作成
cd /tmp
curl -L -O https://github.com/bitsensor/elastalert-kibana-plugin/releases/download/1.1.0/elastalert-kibana-plugin-1.1.0-7.5.0.zip
# [update elasticsearch to 7.8.0; also, fix issue idaholab#119](https://github.com/mmguero-dev/Malcolm/commit/b38ddb7f0d4c5b03e6f8ccad58a656644e113b19)
curl -L -O https://raw.githubusercontent.com/mmguero-dev/Malcolm/development/kibana/elastalert-kibana-plugin/server/routes/elastalert.js
mv elastalert.js elastalert-server-routes.js
mv elastalert-kibana-plugin-1.1.0-7.5.0.zip elastalert-kibana-plugin-1.1.0-7.8.0.zip
unzip elastalert-kibana-plugin-1.1.0-7.8.0.zip kibana/elastalert-kibana-plugin/package.json
sed -i "s/7\.5\.0/7\.8\.0/g" kibana/elastalert-kibana-plugin/package.json
mkdir -p kibana/elastalert-kibana-plugin/server/routes/
cp /tmp/elastalert-server-routes.js kibana/elastalert-kibana-plugin/server/routes/elastalert.js
zip elastalert-kibana-plugin-1.1.0-7.8.0.zip kibana/elastalert-kibana-plugin/package.json kibana/elastalert-kibana-plugin/server/routes/elastalert.js
rm -rf kibana
rm elastalert-server-routes.js

ディレクトリ構成

./elastalert/rules、./elastalert/rule_templates、./es/dataは chmodで777設定

ElastAlertのファイルは以下のサイトの物を使用。一部の値を修正
https://github.com/bitsensor/elastalert

/home/ユーザー名/dkwork/es/
|--docker-compose.yml
|--Dockerfiles
|  |--Dockerfile.elastalert
|
|--es
|  |--config
|  |  |--elasticsearch.yml
|  |--data
|
|--kibana
|  |--config
|  |  |--kibana.yml
|  |--plugin
|  |  |--elastalert-kibana-plugin-1.1.0-7.7.0.zip
|
|--elastalert
|  |--bin
|  |  |--elastalert-start.sh
|  |  |--elastic_search_status.sh
|  |--config
|  |  |--config.json
|  |  |--elastalert-test.yaml
|  |  |--elastalert.yaml
|  |--rule_templates
|  |--rules
docker-compose.yml
version: "3.7"
services:
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx512m
      - discovery.type=single-node
    restart: always
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:9200 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 180s

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.7.0
    command: sh -c './bin/kibana-plugin list | grep elastalert-kibana-plugin@1.1.0; result=`echo $$?`; if [ $$result = 1 ]; then  ./bin/kibana-plugin install file:///usr/share/kibana/work/elastalert-kibana-plugin-1.1.0-7.7.0.zip && exec /usr/local/bin/kibana-docker; else exec /usr/local/bin/kibana-docker; fi'
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    restart: always
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
      - ./kibana/plugin:/usr/share/kibana/work
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:5601/api/status || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s
        
  elastalert:
    container_name: elastalert
    build:
      context: .
      dockerfile: Dockerfiles/Dockerfile.elastalert
    image: elastalert:3.0.0-beta.0
    ports:
      - 3030:3030
      - 3333:3333
    depends_on:
      - elasticsearch
      - kibana
    restart: always
    volumes:
      - ./elastalert/config/elastalert.yaml:/opt/elastalert/config.yaml
      - ./elastalert/config/elastalert-test.yaml:/opt/elastalert/config-test.yaml
      - ./elastalert/config/config.json:/opt/elastalert-server/config/config.json
      - ./elastalert/rules:/opt/elastalert/rules
      - ./elastalert/rule_templates:/opt/elastalert/rule_templates
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:3030 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s
Dockerfiles/Dockerfile.elastalert
FROM bitsensor/elastalert:3.0.0-beta.0

USER root

RUN apk update && \
    apk add bash curl && \
    rm -rf /var/cache/apk/*

ADD elastalert/bin/elastalert-start.sh /usr/local/bin/
ADD elastalert/bin/elastic_search_status.sh /usr/local/bin/

RUN chmod +x /usr/local/bin/elastalert-start.sh 
RUN chmod +x /usr/local/bin/elastic_search_status.sh

USER node

ENTRYPOINT ["/usr/local/bin/elastalert-start.sh"]
elastalert/bin/elastic_search_status.sh
#!/bin/bash

set -e

if [ $# -gt 0 ]; then
  ES_URL="$1"
elif [[ -n $ELASTICSEARCH_URL ]]; then
  ES_URL="$ELASTICSEARCH_URL"
elif [[ -n $ES_HOST ]] && [[ -n $ES_PORT ]]; then
  ES_URL="http://$ES_HOST:$ES_PORT"
else
  ES_URL="http://elasticsearch:9200"
fi

until [[ "$(curl -fsSL "$ES_URL/_cat/health?h=status" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" =~ ^(yellow|green)$ ]]; do
  # printf '+' >&2
  sleep 1
done

echo "Elasticsearch is up and healthy at "$ES_URL"" >&2
elastalert/bin/elastalert-start.sh
#!/bin/bash

set -e

echo "Giving Elasticsearch at $ELASTICSEARCH_URL time to start..."

elastic_search_status.sh

echo "Starting ElastAlert!"
npm start
es/config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
kibana/config/kibana.yml
server.name: kibana
server.host: "0"
elasticsearch.hosts: http://elasticsearch:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true

# elastalert-kibana-plugin
elastalert-kibana-plugin.serverHost: elastalert
elastalert-kibana-plugin.serverPort: 3030
elastalert/config/config.json
{
  "appName": "elastalert-server",
  "port": 3030,
  "wsport": 3333,
  "elastalertPath": "/opt/elastalert",
  "verbose": false,
  "es_debug": false,
  "debug": false,
  "rulesPath": {
    "relative": true,
    "path": "/rules"
  },
  "templatesPath": {
    "relative": true,
    "path": "/rule_templates"
  },
  "es_host": "elasticsearch",
  "es_port": 9200,
  "writeback_index": "elastalert_status"
}

es_hostの値を「localhost」から「elasticsearch」に変更

elastalert/config/elastalert-test.yml
# NOTE: This config is used when testing a rule

# The elasticsearch hostname for metadata writeback
# Note that every rule can have its own elasticsearch host
es_host: elasticsearch

# The elasticsearch port
es_port: 9200

# This is the folder that contains the rule yaml files
# Any .yaml file will be loaded as a rule
rules_folder: rules

# How often ElastAlert will query elasticsearch
# The unit can be anything from weeks to seconds
run_every:
  seconds: 5

# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 1

# Optional URL prefix for elasticsearch
#es_url_prefix: elasticsearch

# Connect with TLS to elasticsearch
#use_ssl: True

# Verify TLS certificates
#verify_certs: True

# GET request with body is the default option for Elasticsearch.
# If it fails for some reason, you can pass 'GET', 'POST' or 'source'.
# See http://elasticsearch-py.readthedocs.io/en/master/connection.html?highlight=send_get_body_as#transport
# for details
#es_send_get_body_as: GET

# Option basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

# The index on es_host which is used for metadata storage
# This can be a unmapped index, but it is recommended that you run
# elastalert-create-index to set a mapping
writeback_index: elastalert_status

# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 2

es_hostの値を「localhost」から「elasticsearch」に変更

elastalert/config/elastalert.yml
# The elasticsearch hostname for metadata writeback
# Note that every rule can have its own elasticsearch host
es_host: elasticsearch

# The elasticsearch port
es_port: 9200

# This is the folder that contains the rule yaml files
# Any .yaml file will be loaded as a rule
rules_folder: rules

# How often ElastAlert will query elasticsearch
# The unit can be anything from weeks to seconds
run_every:
  seconds: 5

# ElastAlert will buffer results from the most recent
# period of time, in case some log sources are not in real time
buffer_time:
  minutes: 1

# Optional URL prefix for elasticsearch
#es_url_prefix: elasticsearch

# Connect with TLS to elasticsearch
#use_ssl: True

# Verify TLS certificates
#verify_certs: True

# GET request with body is the default option for Elasticsearch.
# If it fails for some reason, you can pass 'GET', 'POST' or 'source'.
# See http://elasticsearch-py.readthedocs.io/en/master/connection.html?highlight=send_get_body_as#transport
# for details
#es_send_get_body_as: GET

# Option basic-auth username and password for elasticsearch
#es_username: someusername
#es_password: somepassword

# The index on es_host which is used for metadata storage
# This can be a unmapped index, but it is recommended that you run
# elastalert-create-index to set a mapping
writeback_index: elastalert_status

# If an alert fails for some reason, ElastAlert will retry
# sending the alert until this time period has elapsed
alert_time_limit:
  days: 2

1.PNG
2.PNG
「Save」ボタンをクリックすると elastalert/rulesディレクトリに
Rule nameのyamlファイル(ここではtest.yaml)が作成されます。
3.PNG
4.PNG
Delete ruleボタンを押すと確認ダイアログが出ますので
OKを押すとelastalert/rulesディレクトリから該当の
ルールファイルが削除されます。
5.PNG
削除確認ダイアログ
6.PNG

Praeco

メンテナー:John Susek、Naoyuki Sano
ライセンスは、GNU General Public License v3.0
1.8.18 (2024/01/04)

Praeco (ElastAlert GUI) を Helm で Kubernetes にインストールする (Beta)
Praeco + ElastAlert2.0 + ES7.x 構成の不具合対応方法
Praeco (ElastAlert GUI)でElasticsearchログアラートする
Praeco、ElastAlertServer、Hiveなど(英語)

・Praecoでは、ElastAlert Kibana Pluginの開発元のBitSensorが開発したElastAlert ServerをForkしたjohnsusek/elastalert-serverを使用している。
・Praecoを使用することでGUIベースでElastAlertを操作して、
 Elasticsearchのログからアラート通知設定ができる。
・アラートルール設定
・アラート履歴
 → 1.0.1では何も表示されません。1.1.0で修正されました(2020/6/17確認)
・クエリ履歴
・一定期間のアラートルールの無効化
・Elasticsearch 7対応(0.4.2~)
・アラート通知先はSlack、Email、HTTP POST、Telegram、Jira、MS Teams、Mattermost、Command、Line Notify、Gitter、Zabbix、SNS、Twilio、PagerTree、Exotel、GoogleChat、Stomp、VictorOps、ServiceNow、Chatwork、Discord、TheHive、Alerta, Datadog、AWS SES、Rocket.Chatの設定がある
・Rule Typeは、Percentage MatchとSpike Aggregationは対応しない。
Add "Percentage Match" rule type #82
Add "Spike Aggregation" rule type #228
・ElastAlert Serverが、Amazon Elasticsearch Serviceの接続に対応できていない。

Dockerイメージ

Dockerイメージ名 タグ Praeco 備考
praecoapp/praeco latest 1.8.11
mkdir Dockerfiles
touch Dockerfiles/Dockerfile.elastalert
mkdir -p es/config
touch es/config/elasticsearch.yml
mkdir -p es/data
chmod 777 es/data
mkdir -p kibana/config
touch kibana/config/kibana.yml
mkdir -p praeco/bin
touch praeco/bin/elastalert-start.sh
touch praeco/bin/elastic_search_status.sh
mkdir -p praeco/config
mkdir -p praeco/nginx_config
mkdir -p praeco/public
mkdir -p praeco/public/js
mkdir -p praeco/rule_templates
chmod 777 praeco/rule_templates
mkdir -p praeco/rules
chmod 777 praeco/rules
cd praeco/rules
wget https://raw.githubusercontent.com/johnsusek/praeco/master/rules/BaseRule.config
cd ../
cd praeco/config
wget https://raw.githubusercontent.com/johnsusek/praeco/master/config/api.config.json
wget https://raw.githubusercontent.com/johnsusek/praeco/master/config/elastalert.yaml
cd ../
cd nginx_config
wget https://raw.githubusercontent.com/johnsusek/praeco/master/nginx_config/default.conf
wget https://raw.githubusercontent.com/johnsusek/praeco/master/nginx_config/nginx.conf
cd ../
cd public
wget https://raw.githubusercontent.com/johnsusek/praeco/master/public/praeco.config.json
cd ../../

docker-compose up -d

praeco.PNG

/home/ユーザー名/dkwork/es/
|--docker-compose.yml
|--Dockerfiles
|  |--Dockerfile.elastalert
|--es
|  |--config
|  |  |--elasticsearch.yml
|  |--data
|
|--kibana
|  |--config
|  |  |--kibana.yml
|
|--praeco
| |--bin
| |  |--elastalert-start.sh
| |  |--elastic_search_status.sh
| |--config
| |  |--api.config.json
| |  |--elastalert.yaml
| |--public
| |  |--praeco.config.json
| |--rule_templates
| |--rules
| |  |--BaseRule.config
Dockerfiles/Dockerfile.elastalert
FROM johnsusek/elastalert-server:latest

USER root

RUN apk update && \
    apk add bash curl && \
    rm -rf /var/cache/apk/*

ADD praeco/bin/elastalert-start.sh /usr/local/bin/
ADD praeco/bin/elastic_search_status.sh /usr/local/bin/

RUN chmod +x /usr/local/bin/elastalert-start.sh 
RUN chmod +x /usr/local/bin/elastic_search_status.sh

USER node

ENTRYPOINT ["/usr/local/bin/elastalert-start.sh"]
praeco/bin/elastic_search_status.sh
#!/bin/bash

set -e

if [ $# -gt 0 ]; then
  ES_URL="$1"
elif [[ -n $ELASTICSEARCH_URL ]]; then
  ES_URL="$ELASTICSEARCH_URL"
elif [[ -n $ES_HOST ]] && [[ -n $ES_PORT ]]; then
  ES_URL="http://$ES_HOST:$ES_PORT"
else
  ES_URL="http://elasticsearch:9200"
fi

until [[ "$(curl -fsSL "$ES_URL/_cat/health?h=status" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g')" =~ ^(yellow|green)$ ]]; do
  # printf '+' >&2
  sleep 1
done

echo "Elasticsearch is up and healthy at "$ES_URL"" >&2
praeco/bin/elastalert-start.sh
#!/bin/bash

set -e

echo "Giving Elasticsearch at $ELASTICSEARCH_URL time to start..."

elastic_search_status.sh

echo "Starting ElastAlert!"
npm start
es/config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
kibana/config/kibana.yml
server.name: kibana
server.host: "0"
elasticsearch.hosts: http://elasticsearch:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true
docker-compose.yml
version: "3.7"
services:
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx512m
      - discovery.type=single-node
    restart: always
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:9200 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 180s

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.7.0
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    restart: always
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:5601/api/status || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s

  elastalert:
    container_name: elastalert
    build:
      context: .
      dockerfile: Dockerfiles/Dockerfile.elastalert
    image: elastalert-server:1.1.0
    ports:
      - 3030:3030
      - 3333:3333
    depends_on:
      - elasticsearch
    restart: always
    volumes:
      - ./praeco/config/elastalert.yaml:/opt/elastalert/config.yaml
      - ./praeco/config/api.config.json:/opt/elastalert-server/config/config.json
      - ./praeco/rules:/opt/elastalert/rules
      - ./praeco/rule_templates:/opt/elastalert/rule_templates
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:3030 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s

  praeco:
    container_name: praeco
    image: johnsusek/praeco:latest
    ports:
      - 8080:8080
    depends_on:
      - elastalert
    restart: always
    volumes:
      - ./praeco/public/praeco.config.json:/var/www/html/praeco.config.json
    healthcheck:
        test: ["CMD-SHELL", "curl -f http://localhost:8080 || exit 1"]
        interval: 30s
        timeout: 15s
        retries: 3
        start_period: 200s

以下のファイルはPraecoのサイトの物を使用
https://github.com/johnsusek/praeco
・praeco/config/api.config.json
・praeco/config/elastalert.yaml
・praeco/public/praeco.config.json
・praeco/rules/BaseRule.config

OpenSearch

2.4.1 (2022/12/03)
開発元:AWS

AmazonはElasticsearchのフォークをOpenSearchにブランド変更
AWS、ElasticsearchとKibanaのフォークによる「OpenSearch」プロジェクトを発表。Elasticとの溝は埋まらないまま
ElasticのクライアントライブラリがAWS OpenSearchへの接続を排除。AWSは仕方なくクライアントライブラリのフォークを発表

Open Distro for Elasticsearch

Open Distro for Elasticsearch development has moved to OpenSearch. The ODFE plugins will continue to work with legacy versions of Elasticsearch OSS, but we recommend upgrading to OpenSearch to take advantage of the latest features and improvements.

■google翻訳
Elasticsearch開発用のOpenDistroはOpenSearchに移動しました。 ODFEプラグインはElasticsearchOSSのレガシーバージョンで引き続き機能しますが、最新の機能と改善点を利用するには、OpenSearchにアップグレードすることをお勧めします。
https://opendistro.github.io/for-elasticsearch-docs/

開発元:AWS
ライセンスは、Apache License 2.0
「Elasticsearch」の独自ディストリビューション
1.13.2 (2021/04/07。ElastcsearchとKibanaのバージョンは7.10.2)
amazon/opendistro-for-elasticsearch
amazon/opendistro-for-elasticsearch-kibana

画面を動かしてみて気づいた点(バージョン1.3.0)

・ログイン画面がある
 初期ユーザー/パスワードは、admin/admin

・X-PackのIndex managementのように画面でIndexの削除するのは、現在のバージョンではできない?

・X-PackのIndex Lifecycle Management(ILM)のような機能は設定するyamlを画面で編集できる機能のようです。

・アラートの設定を画面でできる
Amazon Elasticsearch ServiceのAlertingを使ってAWS ConsoleLoginを監視してみた

・CSV/PDFファイルに出力機能は、まだ実装されていない
PDF Generation and reporting #16

以下は、まだ未確認

・Elastic社のKibana 7.4.2で作成したダッシュボードをImportできるか。また7.4.2より上のバージョンの場合はどうなるか。

・FluentdのElastcsearchプラグインの設定で、Index Lifecycle Management(ILM)に関する設定は利用できないはずなので設定がある場合はコメントにして動作確認する必要がありそう

・FluentdのX-Packに関するプラグインはアンインストールして動作確認する必要がありそう

・Fluentd、Metricbeat、Filebeat、Heartbeat、Logstashは、まだ情報が少ないので情報をもとに動く設定を調査して使用するかよく検討する必要がありそう。

Security
https://opendistro.github.io/for-elasticsearch-docs/docs/security-configuration/
https://opendistro.github.io/for-elasticsearch-docs/docs/security-access-control/
https://opendistro.github.io/for-elasticsearch-docs/docs/security-audit-logs/

Alerting
https://opendistro.github.io/for-elasticsearch-docs/docs/alerting/

SQL
https://opendistro.github.io/for-elasticsearch-docs/docs/sql/

Index State Management(ISM)
X-PackのIndex Lifecycle Management(ILM)のような機能
https://opendistro.github.io/for-elasticsearch-docs/docs/ism/

KNN
https://opendistro.github.io/for-elasticsearch-docs/docs/knn/

Anomaly Detection (Alpha)
https://opendistro.github.io/for-elasticsearch-docs/docs/ad/

Performance Analyzer
https://opendistro.github.io/for-elasticsearch-docs/docs/pa/

Root Cause Analysis (Alpha)
https://opendistro.github.io/for-elasticsearch-docs/docs/rca/

Fluentd
Fluentd support
Self-signed Certificate verify failed (Fluend + Open Distro for Elasticsearch) #597

Beats
Trying out Open Distro for Elasticsearch with LogstashFilebeat connection issue
Integration with beats
Unable to index filebeat logs with LogStash #136
filebeat 6.5.4 output to elasticsearch #21
Metricbeat User Permission
Configuring OSS Beats (File/Metric) with opendistro
Alerting using metricbeat parameters #13
Logstash intergration

新登場 – Open Distro for Elasticsearch
AWSのOpen Distro for Elasticsearchに異議を唱えるベンダたち
AWSがElasticsearchの新ディストリビューションをApacheライセンスで公開
Open Distro for Elasticsearchを作ってみた!
Open Distro for Elasticsearch Kickstart guide
[アップデート] Amazon Elasticsearch Service でアラート機能がサポートされました

Grafana

読み方は、グラファナ
開発元:Grafana Labs
ライセンスは、Apache License 2.0
9.3.2 (2022-12-16)

5.2.0からElasticsearch内のデータに対するアラート通知が可能になっている。

[Alerting]
(https://grafana.com/docs/grafana/latest/alerting/)
Alert Notifications
DingDing
Discord
Email
Google Hangouts Chat
Hipchat
Kafka
Line
Microsoft Teams
OpsGenie
Pagerduty
Prometheus Alertmanager
Pushover
Sensu
Slack
Squadcast
Telegram
Threema
VictorOps
Webhook
Creating alert that can send SNMP Trap as a notification

That is not supported right now

Email
Grafanaでアラート時通知を設定する
Grafana Eメール通知設定
Grafanaのメール設定で詰まった話
Grafana でメール通知

Slack
BLE経由で取得したデータの 可視化(Grafana) & アラート通知(Slack) を実施
Grafana で Elasticserch に蓄積したサーバーメトリクスの可視化+アラートのSlack通知環境を構築してみた (ニフクラ)
Prometheus+Grafanaでパフォーマンス監視をしています

Discord
Grafana5.2.0+でElasticsearch内のデータに対するAlertingを実行し、Discordに通知する

Teams
Prometheusのすすめ - Grafana で AlertをTeamsに通知するのは簡単です

webhook
Prometheus2とGrafana6によるシステム監視 GrafanaのAlertを使う

Elastalert UI

ライセンスは、Apache License 2.0
メンテナンス終了。GitHubの最終更新日は2018/02/12

27
27
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27