すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:DingTalk ロボットを設定して X-Pack Watcher アラートを受信する

最終更新日:Nov 25, 2025

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 インスタンスが作成されていること。詳細については、「カスタム設定を使用してインスタンスを作成する」をご参照ください。

    説明

    Alibaba Cloud Elasticsearch の X-Pack Watcher 機能は、インターネットに直接アクセスできません。仮想プライベートクラウド (VPC) 内のインスタンスのプライベートエンドポイントを使用して通信する必要があります。したがって、VPC 内の ECS インスタンスは、インターネットにアクセスするために、Elastic IP アドレス (EIP) に関連付けるか、ソースネットワークアドレス変換 (SNAT) を設定する必要があります。詳細については、「EIP の関連付け」または「SNAT の設定」をご参照ください。

手順

ステップ 1: DingTalk ロボットの作成と設定

  1. アラートを受信するための DingTalk グループを作成します。

  2. グループの右上隅にある 设置.png アイコンをクリックします。[グループ設定] パネルで、[ロボット] をクリックします。

  3. [ロボット管理] ダイアログボックスで、[ロボットを追加] をクリックし、[カスタム] を選択して、[追加] をクリックします。

  4. [ロボット名] を入力し、[カスタムキーワード] を選択して、キーワードを指定します。

    重要

    キーワードは、設定するアラートメッセージに含める必要があります。

  5. [カスタムロボットのサービス利用規約と免責事項] を選択し、[完了] をクリックします。

  6. ロボットの Webhook URL をコピーするには、[Webhook] の横にある [コピー] をクリックします。

    Webhook URL は、将来の使用のために安全に保管してください。外部の Web サイトに投稿しないでください。Webhook URL が漏洩すると、セキュリティリスクが生じます。

ステップ 2: Nginx プロキシと ECS セキュリティグループの設定

  1. ECS インスタンスに Nginx プロキシを設定します。

    Nginx プロキシはアラートメッセージを転送します。Elasticsearch の X-Pack Watcher サービスはアラートメッセージを Nginx に送信し、Nginx はそのメッセージを DingTalk または WeCom に転送します。

    1. ECS インスタンスに Nginx をインストールします。

    2. 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 に置き換えます。

    3. 変更した設定ファイルを読み込み、Nginx を再起動します。

      /usr/local/webserver/nginx/sbin/nginx -s reload            # 設定ファイルを再読み込み
      /usr/local/webserver/nginx/sbin/nginx -s reopen            # Nginx を再起動
  2. ECS セキュリティグループを設定します。

    ECS インスタンス上の Nginx プロキシが Elasticsearch インスタンスからアラートメッセージを受信できるようにします。

    1. Alibaba Cloud ECS コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[インスタンス & イメージ] > [インスタンス] を選択します。

    3. [インスタンス] ページで、対象のインスタンスの名前をクリックします。

    4. [セキュリティグループ] タブをクリックします。

    5. [セキュリティグループリスト] タブで、セキュリティグループの名前をクリックします。

    6. [インバウンド] タブで、[ルールを追加] をクリックします。

    7. 必須パラメーターを入力します。

      パラメーター

      説明

      認証ポリシー

      [許可] を選択します。

      優先度

      デフォルト値を維持します。

      プロトコル

      [カスタム TCP] を選択します。

      ソース

      Alibaba Cloud Elasticsearch インスタンス内のすべてのノードの IP アドレスを追加します。

      説明

      Elasticsearch インスタンス内のすべてのノードの IP アドレスを取得するには、「ノードの基本情報を表示する」をご参照ください。

      アクセスの目的

      一般的に使用されるポートを入力します。このポートは Nginx を設定する際に必要です。このトピックでは、ポート 8080 を例として使用します。

      説明

      ルールの説明を入力します。

    8. [OK] をクリックします。

ステップ 3: Watcher アラートの設定

  1. Elasticsearch クラスターの Kibana コンソールにログインし、プロンプトに従って Kibana コンソールのホームページに移動します。

    Kibana コンソールへのログイン方法の詳細については、「Kibana コンソールにログインする」をご参照ください。

    説明

    この例では、Elasticsearch V6.7.0 クラスターを使用します。他のバージョンのクラスターでは操作が異なる場合があります。コンソールでの実際の操作が優先されます。

  2. 表示されたページの左側のナビゲーションウィンドウで、[Dev Tools] をクリックします。

  3. [コンソール] で、次のコマンドを実行してアラートドキュメントを作成します。

    次の例は、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 ロボットがアラートメッセージをプッシュするには、bodyerror を含む 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