大量のデータを管理する必要がある場合は、ある日、データの異常や不整合を指摘し、リアルタイムで警告するツールを望んでいることに気付くでしょう。
ElastAlertとは何ですか?
ElastAlertは、まさにそれを行うように設計されています。これは、Elasticsearchに追加されたデータから異常、スパイク、またはその他のルールのパターンを検出したときにアラートを出すシンプルなフレームワークです。
たとえば、「頻度」アラートを設定して、Y時間にX個のイベントが発生したときに通知することができます。
または、「スパイク」イベントが発生した場合、つまりイベントの発生率が突然増加または減少した場合に、すぐに警告を表示したい場合があります。
含まれている他のルールタイプは次のとおりです。
- 「フラットライン」–Y時間にX未満のイベントがある場合
- 「ブラックリスト/ホワイトリスト」–特定のフィールドが「ブラックリスト」または「ホワイトリスト」と一致する場合
- 「any」–特定のフィルターに一致するイベントが発生したとき
- 「変更」–指定された期間内にフィールドに2つの異なる値がある場合
サポートされているアラートタイプ
現在、ElastAlertには、次のアラートタイプのサポートが組み込まれています。
- コマンド
- メール
- JIRA
- OpsGenie
- SNS
- HipChat
- たるみ
- 電報
- GoogleChat
- デバッグ
- ストンプ
- theHive
UbuntuにElasticsearchを使用してElastAlertをインストールする
この記事では、ubuntu18.04にElastAlertをインストールする方法を紹介します。
要件
- Elasticsearch
- ISO8601またはUnixのタイムスタンプ付きデータ
- Python 2.7
- pip、requirements.txtを参照–(https://github.com/Yelp/elastalert/blob/master/requirements.txt)
- ubuntuのパッケージ– python-pip python-dev libffi-dev libssl-dev
前提条件のインストール
Python 2.7をインストールする:
sudo apt-get install python-minimal
Pythonのバージョンを確認してください:
sudo python --version
次に、Python2.7の出力を取得します。

必要なパッケージをインストールします:
sudo apt-get install python-pip python-dev libffi-dev libssl-dev
ElastAlertをインストールする方法はいくつかありますが、ここではgitリポジトリのクローンを作成してインストールします。
したがって、先に進む前に「git」をインストールする必要があります。通常、Ubuntu18.04にはすでにgitがインストールされています。
インストールされているバージョンまたは利用可能なバージョンのgitを確認します:
sudo apt-cache policy git
これにより、インストールされているgitバージョンと候補のgitバージョンの詳細が表示されます。

インストールされているgitバージョンが表示されない場合は、次のコマンドを実行してください。
sudo apt-get install git
ElastAlertリポジトリを「/opt」フォルダに複製するため、ディレクトリを変更します。
sudo cd /opt
次に、gitリポジトリのクローンを作成します。
sudo git clone https://github.com/Yelp/elastalert.git
次に、モジュールをインストールします。
sudo pip install "setuptools>=11.3"
sudo python setup.py install
このようなエラーが発生する可能性があります。

次に、以下のコマンドを実行して「PyOpenSSL」をインストールします
sudo pip install PyOpenSSL
ここでは、Elasticsearch6.xと統合します。そのため、Elasticsearch5.0以降がここにインストールされます。
sudo pip install "elasticsearch>=5.0.0"
ElastAlertの構成
ElastAlertリポジトリのクローンを「/opt」ディレクトリに作成したため、続行する前にディレクトリを変更してください。
sudo cd /opt/elastalert/
これで、config.yaml.exampleファイルのコピーがconfig.yamlとして取得されます
sudo cp config.yaml.example config.yaml
config.yamlファイルを変更します。
vim config.yaml
次の行のコメントを解除して変更します。
ElasticSearchのホスト名またはIP
es_host: elk-server
ElasticServerポート
es_port: 9200
基本認証のコメントを外す:
es_username: es_password:

ファイルを保存して閉じます。
ElastAlertインデックスを作成します。
sudo elastalert-create-index
ルールの作成
次に、「/ opt / elastalert /example_rules/」フォルダー内の「example_frequency.yaml」というタイトルのファイルを編集します
sudo vim example_rules/example_frequency.yaml
次のようにインデックスのコメントを解除して変更します。
index: filebeat-*
次に、アラートのフィルターを定義します。ここでは、文字列「exception」でキーワードをフィルタリングします。
filter: - query_string: query: "message:*exception*"
SlackでAlterを設定します。ここでは、Slackチャネルと着信Webhookを作成する必要があります。次に、次のように構成の詳細を追加します。
alert: - "slack" slack: slack_webhook_url: "https://hooks.slack.com/services/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" slack_username_override: "Fosslinux-Elastic-Bot" slack_channel_override: "#fosslinuxalert" slack_emoji_override: ":robot_face:" slack_msg_color: "danger"
以下の手順に従って、Slackチャネルを作成できます。
ElastAlertのSlackチャネルの構成
Slackアカウントをお持ちでない場合は、登録するだけでアカウントを取得できます。 「slack.com」にアクセスしてメールアドレスを入力し、「はじめに」をクリックします。

次に、[新しいワークスペースを作成]をクリックして、メールアドレスを確認します。これで、ログインしてダッシュボードを表示できます。
[アプリの参照]->[カスタム統合]->[受信Webhook]->[新しい構成]
に移動します
次に、[新しいチャネルを作成]をクリックして、アラートを送信するためのチャネルを作成します。

次に、[チャンネルの作成]ボタンをクリックすると、Webhook統合ページに移動します。

[受信WebHooks統合の追加]ボタンをクリックします。これにより、統合設定が作成されます。

テストルール
ディレクトリをElastAlertに変更します。
sudo cd /opt/elastalert/
以下のコマンドを実行して、構成されたルールをテストします。
sudo elastalert-test-rule example_rules/example_frequency.yaml

ElastAlertを実行
バックグラウンドサービスとしてElastAlertを開始します。このコマンドは、「/ opt /elastalert/」フォルダー内で実行する必要があります。
sudo python -m elastalert.elastalert --verbose --rule example_frequency.yaml &

これで、ElastAlertはElasticsearch(ELKサーバー上)でクエリのチェックを開始します。一致するものがある場合は、Slackにアラートを送信します。
アラートがトリガーされました。

アラートはSlackチャネルに送信されます。

これで、Elastic Searchを使用してElastAlertを正常にインストールおよび構成し、Slackへのアラートを設定しました。この徹底的なチュートリアルが、ElastAlertをインストールし、アラートを簡単にトリガーするためのいくつかのルールを設定するのに役立つことを願っています。コメントセクションで質問やフィードバックを歓迎します。