Alibaba Cloud Elasticsearch インスタンスで X-Pack Watcher を使用すると、特定の条件が満たされたときにアクションを実行できます。たとえば、ログインデックスにエラーログが表示されると、システムは自動的に DingTalk メッセージを送信できます。このトピックでは、X-Pack Watcher アラートを受信するように DingTalk ロボットを設定する方法について説明します。
前提条件
Alibaba Cloud Elasticsearch インスタンスが作成されていること。詳細については、「Alibaba Cloud Elasticsearch インスタンスを作成する」をご参照ください。
説明X-Pack Watcher 機能は、古いネットワークアーキテクチャを使用するシングルゾーンの Elasticsearch インスタンスのみをサポートします。マルチゾーンインスタンスはサポートしていません。
新しいネットワークアーキテクチャでは、ネットワーク制限をバイパスするためにインスタンスの PrivateLink 接続を設定する必要があります。詳細については、「インスタンスの PrivateLink 接続を設定する」をご参照ください。
ネットワークアーキテクチャの詳細については、「[注意] ネットワークアーキテクチャの調整」をご参照ください。
Elasticsearch インスタンスで X-Pack Watcher 機能が有効になっていること。詳細については、「YML パラメーターを設定する」をご参照ください。
VPC 内に ECS インスタンスが作成されていること。詳細については、「カスタム設定を使用してインスタンスを作成する」をご参照ください。
手順
ステップ 1: DingTalk ロボットの作成と設定
アラートを受信するための DingTalk グループを作成します。
グループの右上隅にある
アイコンをクリックします。[グループ設定] パネルで、[ロボット] をクリックします。[ロボット管理] ダイアログボックスで、[ロボットを追加] をクリックし、[カスタム] を選択して、[追加] をクリックします。
[ロボット名] を入力し、[カスタムキーワード] を選択して、キーワードを指定します。
重要キーワードは、設定するアラートメッセージに含める必要があります。
[カスタムロボットのサービス利用規約と免責事項] を選択し、[完了] をクリックします。
ロボットの Webhook URL をコピーするには、[Webhook] の横にある [コピー] をクリックします。
Webhook URL は、将来の使用のために安全に保管してください。外部の Web サイトに投稿しないでください。Webhook URL が漏洩すると、セキュリティリスクが生じます。
ステップ 2: Nginx プロキシと ECS セキュリティグループの設定
ECS インスタンスに Nginx プロキシを設定します。
Nginx プロキシはアラートメッセージを転送します。Elasticsearch の X-Pack Watcher サービスはアラートメッセージを Nginx に送信し、Nginx はそのメッセージを DingTalk または WeCom に転送します。
ECS インスタンスに Nginx をインストールします。
nginx.conf ファイルを設定します。
nginx.conf ファイルの
serverセクションの設定を、次の設定に置き換えます。server { listen 8080; # リスナーポート server_name localhost; # ドメイン名 index index.html index.htm index.php; root /usr/local/webserver/nginx/html; # サイトフォルダ location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ { expires 30d; # access_log off; } location / { proxy_pass <Webhook URL>; } location ~ .*\.(js|css)?$ { expires 15d; # access_log off; } access_log off; }<Webhook URL> を、アラートメッセージを受信する DingTalk ロボットの Webhook URL に置き換えます。
変更した設定ファイルを読み込み、Nginx を再起動します。
/usr/local/webserver/nginx/sbin/nginx -s reload # 設定ファイルを再読み込み /usr/local/webserver/nginx/sbin/nginx -s reopen # Nginx を再起動
ECS セキュリティグループを設定します。
ECS インスタンス上の Nginx プロキシが Elasticsearch インスタンスからアラートメッセージを受信できるようにします。
Alibaba Cloud ECS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[インスタンス] ページで、対象のインスタンスの名前をクリックします。
[セキュリティグループ] タブをクリックします。
[セキュリティグループリスト] タブで、セキュリティグループの名前をクリックします。
[インバウンド] タブで、[ルールを追加] をクリックします。
必須パラメーターを入力します。
パラメーター
説明
認証ポリシー
[許可] を選択します。
優先度
デフォルト値を維持します。
プロトコル
[カスタム TCP] を選択します。
ソース
Alibaba Cloud Elasticsearch インスタンス内のすべてのノードの IP アドレスを追加します。
説明Elasticsearch インスタンス内のすべてのノードの IP アドレスを取得するには、「ノードの基本情報を表示する」をご参照ください。
アクセスの目的
一般的に使用されるポートを入力します。このポートは Nginx を設定する際に必要です。このトピックでは、ポート 8080 を例として使用します。
説明
ルールの説明を入力します。
[OK] をクリックします。
ステップ 3: Watcher アラートの設定
Elasticsearch クラスターの Kibana コンソールにログインし、プロンプトに従って Kibana コンソールのホームページに移動します。
Kibana コンソールへのログイン方法の詳細については、「Kibana コンソールにログインする」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスターを使用します。他のバージョンのクラスターでは操作が異なる場合があります。コンソールでの実際の操作が優先されます。
表示されたページの左側のナビゲーションウィンドウで、[Dev Tools] をクリックします。
[コンソール] で、次のコマンドを実行してアラートドキュメントを作成します。
次の例は、log_error_watch ドキュメントを作成する方法を示しています。システムは 10 秒 ごとに logs インデックスで error ログをクエリします。0 件を超えるエラーログが見つかった場合、アラートがトリガーされます。
PUT _xpack/watcher/watch/log_error_watch { "trigger": { "schedule": { "interval": "10s" } }, "input": { "search": { "request": { "indices": ["logs"], "body": { "query": { "match": { "message": "error" } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 0 } } }, "actions" : { "test_issue" : { "webhook" : { "method" : "POST", "url" : "http://<yourAddress>:8080", "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"An error log has appeared. Please handle it as soon as possible.\"}}" } } } }表 1. 主要なパラメーターの説明
パラメーター
ネットワークタイプ
設定の説明
url
新しいネットワークアーキテクチャ
このパラメーターをエンドポイントのドメイン名に設定します。リクエストはエンドポイントのドメイン名を通じて転送されます。エンドポイントのドメイン名を取得するには、「Alibaba Cloud Elasticsearch のプライベートネットワークピアリングを設定する」をご参照ください。
古いネットワークアーキテクチャ
このパラメーターを次のいずれかのアドレスに設定します:
Nginx プロキシの IP アドレス: リクエストは、同じ VPC 内の Nginx プロキシによってインターネット経由で転送されます。
DingTalk ロボットの Webhook URL。
body
新しいネットワークアーキテクチャ
古いネットワークアーキテクチャ
このパラメーターは、DingTalk ロボットのセキュリティ設定に基づいて設定します。
たとえば、ステップ 1: DingTalk ロボットの作成と設定 で、[セキュリティ設定] を [カスタムキーワード] に設定し、カスタムキーワード error を追加した場合、DingTalk ロボットがアラートメッセージをプッシュするには、body に error を含む content フィールドが含まれている必要があります。
説明コマンドの実行時に
No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]エラーが発生した場合、これは Alibaba Cloud Elasticsearch インスタンスで X-Pack Watcher 機能が有効になっていないことを示します。この機能を有効にしてから、コマンドを再度実行してください。詳細については、「YML パラメーターを設定する」をご参照ください。
ステップ 4: アラート結果の表示
設定が正しければ、クラスター内のデータが ステップ 3: Watcher アラートの設定 で設定したアラート条件を満たした場合、DingTalk グループで エラーログが表示されました。できるだけ早く対応してください。 のようなアラートメッセージを受信します。
監視タスクが不要になった場合は、次のコマンドを実行して削除できます。
DELETE _xpack/watcher/watch/log_error_watch