[アップデート] Amazon Elasticsearch Service でアラート機能がサポートされました

2019.04.17

はじめに

こんにちは。中川です。 Amazon Elasticsearch Service で、アラート機能がサポートされましたので、試してみました。

Amazon Elasticsearch Service でイベント監視およびアラートのサポートを開始

先月、AWSはElasticearchの新しいディストリビューション"Open Distro for Elasticsearch"を公開しました。 このディストリビューションによって追加される機能が、今回のアップデートで追加された形になります。 ディストリビューションの詳細については、以下の記事を参考にしていただければと思います。

AWSがElasticsearchの新ディストリビューションをApacheライセンスで公開

なお、アラート機能を利用するにあたって、以下の点には注意しましょう。

  • Elasticsearchのバージョンが6.2以上であること(本ブログでも6.2を使用)
  • ソフトウェアリリースは、R20190221以上であること
  • SNS連携はOpen Distro for Elasticsearchには無く、Amazon Elasticsearch Serviceの独自機能であること

やってみた

環境

構成はこのようになっており、WebサーバーのアクセスログをElasticsearchに収集しています。 今回は、HTTPステータスコードが200以外で、一定回数発生した場合に、メール通知します。

SNSを作成

通知するためのSNSトピックを作成します。 メールで通知するため、ここではEmailを選択しています。

IAMロールを作成

ElaticsearchがSNSを使用するため、以下のロールを作成します。 ポリシーは、公式ドキュメントに記載されています。

ロール

ポリシー

信頼関係

通知先を設定

いよいよElasticsearchの設定に入っていきます。 まず、通知先の設定をします。 Alerting > Destinationsと選択し、[Add destionation]をクリックします。

各項目を入力し、[Create]をクリックします。

監視を設定

続いて監視の設定をします。 Monitorsを選択し、[Create monitor]をクリックします。

監視設定の項目を入力します。 ここでは監視間隔を5分で設定しています。

監視定義を設定します。 今回はクエリを使用して定義をするため、Define using extraction queryを選択し、Indexではアクセスログのインデックスを指定しています。 クエリでは、ステータスコードが200以外であることをカウント対象にしています。

使用したクエリは以下のとおりです。

{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"from": "{{period_end}}||-5m",
"to": "{{period_end}}",
"include_lower": true,
"include_upper": true,
"format": "epoch_millis",
"boost": 1
}
}
}
],
"must_not": [
{
"match": {
"response": "200"
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"aggregations": {}
}

トリガーを設定

最後にトリガーの設定です。 トリガー名と重要度を設定します。

上のExtraction query responseでは、設定時におけるクエリ結果が表示されており、下のTrigger conditionでトリガーの条件を設定しています。 ここでは、10回以上ヒットした場合を条件にしています。

さきほど設定した通知先をトリガーに設定し、[Create]をクリックすると設定は完了になります。

動作確認

Webサーバーで504エラーを返しました。

メールが届くことを確認できました。

さいごに

Elasticsearch上でログ監視とアラートをやってみました。 以前は、Elasticsearchにログを収集していても、監視は他のサーバーやサービスで実装する必要がありました。 Elasticsearchでは、検索クエリを用いた複雑な監視ができたり、他のデータストアを使用しない分のコスト削減をできるので、ログ監視の選択肢は増えたと思います。 Amazon Elasticsearch Serviceは、今後もますます機能追加が期待できるため、引き続き注目していきたいです。