Supported OS Linux Windows Mac OS

インテグレーションバージョン8.2.0

To find out if this integration is available in your organization, see your Datadog Integrations page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email support@ddog-gov.com.

Elasticsearch ダッシュボード

概要

Elasticsearch クラスターの健全性について、全体的なステータスから JVM のヒープ使用量まで、クラスター内のすべての情報を最新の状態で把握します。レプリカを回復したり、クラスターに容量を追加したり、構成を調整したりする必要があるときに通知を受けます。その後、クラスターメトリクスがどのように反応するかを追跡します。

Datadog Agent の Elasticsearch チェックは、検索とインデックス化のパフォーマンス、メモリ使用量とガベージコレクション、ノード可用性、シャード統計、ディスク容量とパフォーマンス、保留状態のタスクなど多数のメトリクスを収集します。Agent は、クラスターの全体的なステータスに関するイベントとサービスチェックも送信します。

セットアップ

インストール

Elasticsearch チェックは Datadog Agent パッケージに含まれています。追加のインストールは必要ありません。

構成

ホスト

ホストで実行中の Agent に対してこのチェックを構成するには

メトリクスの収集
  1. Elasticsearch のメトリクスを収集するには、Agent の構成ディレクトリのルートにある conf.d/ フォルダーの elastic.d/conf.yaml ファイルを編集します。使用可能なすべての構成オプションについては、サンプル elastic.d/conf.yaml を参照してください。

    init_config:
    
    instances:
      ## @param url - string - required
      ## The URL where Elasticsearch accepts HTTP requests. This is used to
      ## fetch statistics from the nodes and information about the cluster health.
      #
      - url: http://localhost:9200
    
       ## @param username - string - optional
       ## The username to use if services are behind basic or digest auth.
       #
       # username: <USERNAME>
    
       ## @param password - string - optional
       ## The password to use if services are behind basic or NTLM auth.
       #
       # password: <PASSWORD>
    

    :

    • クラスターの外で実行されている 1 つの Datadog Agent からのみ Elasticsearch メトリクスを収集する場合は (ホステッド Elasticsearch を使用する場合など)、cluster_statstrue に設定します。

    • Agent レベルのタグは、Agent を実行していないクラスターのホストには適用されません。すべての メトリクスが一定のタグを持つようにするには、<integration>.d/conf.yaml でインテグレーションレベルのタグを使用します。

      init_config:
      instances:
        - url: "%%env_MONITOR_ES_HOST%%"
          username: "%%env_MONITOR_ES_USER%%"
          password: *********
          auth_type: basic
          cluster_stats: true
          tags:
          - service.name:elasticsearch
          - env:%%env_DD_ENV%%
      
    • AWS Elasticsearch サービスに Agent の Elasticsearch インテグレーションを使用するには、url パラメーターを AWS Elasticsearch stats の URL に設定します。

    • Amazon ES コンフィギュレーション API へのすべてのリクエストには、署名が必要です。詳細は、OpenSearch サービスリクエストの作成と署名を参照してください。

    • aws の認証タイプは、boto3 に依存して .aws/credentials から自動的に AWS 認証情報を収集します。conf.yamlauth_type: basic を使用して、認証情報を username: <USERNAME>password: <PASSWORD> で定義します。

    • 監視するためには、適切な権限を持つユーザーとロール (まだ持っていない場合) を Elasticsearch で作成する必要があります。これは、Elasticsearch が提供する REST API、または Kibana UI を通じて行うことができます。

    • Elasticsearch でセキュリティ機能を有効にしている場合、API を使用して Elasticsearch インデックスに対する呼び出しを行う際に、monitor または manage の権限を使用できます。

    • 作成したロールに以下のプロパティを含めます。

      name = "datadog"
      indices {
        names = [".monitoring-*", "metricbeat-*"]
        privileges = ["read", "read_cross_cluster", "monitor"]
      }
      cluster = ["monitor"]
      

      ユーザーにロールを追加します。

      roles = [<created role>, "monitoring_user"]
      

      詳しくは、ロールの作成または更新およびユーザーの作成または更新を参照してください。

  2. Agent を再起動します

カスタムクエリ

Elasticsearch インテグレーションでは、custom_queries 設定オプションを使用して、カスタム クエリによるカスタム メトリクスの収集が可能です。カスタム クエリのエンドポイントは、複数のメトリクスとタグを収集できます。

各カスタム クエリには、次のパラメーターがあります:

  • endpoint (必須): クエリを送信する Elasticsearch API のエンドポイント。
  • data_path (必須): メトリクスの直前までの JSON パス (メトリクス自体は含まない)。ワイルドカードは使用できません。例: 親のサーキット ブレーカーのサイズをクエリし、完全なパスが breakers.parent.estimated_size_in_bytes の場合、data_pathbreakers.parent です。
  • columns (必須): JSON クエリから収集するデータを表すリスト。このリストの各アイテムには次の内容が含まれます:
    • value_path (必須): data_path からメトリクスまでの JSON パス。このパスには、文字列キーやリスト インデックスを含めることができます。例: 親のサーキット ブレーカーのサイズをクエリし、完全なパスが breakers.parent.estimated_size_in_bytes の場合、value_pathestimated_size_in_bytes です。
    • name (必須): Datadog に送信される完全なメトリクス名。typetag に設定した場合、このクエリで収集されるすべてのメトリクスにこの名前のタグが付与されます。
    • type (任意): 送信されるデータのタイプを指定します。可能な値: gauge, monotonic_count, rate, tag。デフォルトは gauge です。
  • payload (任意): 指定した場合、GET リクエストは POST リクエストに変わります。ペイロードを伴うカスタム クエリを作成する際は、YAML フォーマットを使用し、読み取り専用ユーザーを使用してください。

注: カスタム クエリを実行する際は、Elasticsearch インスタンスが変更されないように、読み取り専用アカウントを使用してください。

例:

custom_queries:
 - endpoint: /_search
   data_path: aggregations.genres.buckets
   payload:
     aggs:
       genres:
         terms:
           field: "id"
   columns:
   - value_path: key
     name: id
     type: tag
   - value_path: doc_count
     name: elasticsearch.doc_count
   tags:
   - custom_tag:1

カスタムクエリは GET リクエストとして送信されます。オプションの payload パラメーターを使用すると、POST リクエストとして送信されます。

value_path には文字列キーまたはリストインデックスを指定します。例:

{
  "foo": {
    "bar": [
      "result0",
      "result1"
    ]
  }
}

value_path: foo.bar.1 は値 result1 を返します。

トレースの収集

Datadog APM は、Elasticsearch と統合して分散システム全体のトレースを確認します。Datadog Agent v6 以降では、トレースの収集はデフォルトで有効化されています。トレースの収集を開始するには、以下の手順に従います。

  1. Datadog でトレースの収集を有効にします
  2. Elasticsearch にリクエストを送信するアプリケーションを計装する
ログ収集

Agent バージョン 6.0 以降で利用可能

  1. Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml ファイルでこれを有効にします。

    logs_enabled: true
    
  2. 検索スローログを収集してスローログのインデックスを作成するには、Elasticsearch 設定を構成します。デフォルトでは、スローログは有効になっていません。

    • 特定のインデックス <インデックス> のインデックススローログを構成するには

      curl -X PUT "localhost:9200/<INDEX>/_settings?pretty" -H 'Content-Type: application/json' -d' {
        "index.indexing.slowlog.threshold.index.warn": "0ms",
        "index.indexing.slowlog.threshold.index.info": "0ms",
        "index.indexing.slowlog.threshold.index.debug": "0ms",
        "index.indexing.slowlog.threshold.index.trace": "0ms",
        "index.indexing.slowlog.level": "trace",
        "index.indexing.slowlog.source": "1000"
      }'
      
    • 特定のインデックス <インデックス> の検索スローログを構成するには

      curl -X PUT "localhost:9200/<INDEX>/_settings?pretty" -H 'Content-Type: application/json' -d' {
        "index.search.slowlog.threshold.query.warn": "0ms",
        "index.search.slowlog.threshold.query.info": "0ms",
        "index.search.slowlog.threshold.query.debug": "0ms",
        "index.search.slowlog.threshold.query.trace": "0ms",
        "index.search.slowlog.threshold.fetch.warn": "0ms",
        "index.search.slowlog.threshold.fetch.info": "0ms",
        "index.search.slowlog.threshold.fetch.debug": "0ms",
        "index.search.slowlog.threshold.fetch.trace": "0ms"
      }'
      
  3. Elasticsearch のログの収集を開始するには、次の構成ブロックを elastic.d/conf.yaml ファイルに追加します。

    logs:
      - type: file
        path: /var/log/elasticsearch/*.log
        source: elasticsearch
        service: "<SERVICE_NAME>"
    
    • インスタンスを追加して、スローログの収集を開始します。

      - type: file
        path: "/var/log/elasticsearch/\
              <CLUSTER_NAME>_index_indexing_slowlog.log"
        source: elasticsearch
        service: "<SERVICE_NAME>"
      
      - type: file
        path: "/var/log/elasticsearch/\
              <CLUSTER_NAME>_index_search_slowlog.log"
        source: elasticsearch
        service: "<SERVICE_NAME>"
      

      path パラメーターと service パラメーターの値を変更し、環境に合わせて構成してください。

  4. Agent を再起動します

Docker

コンテナで実行中の Agent に対してこのチェックを構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.check_names"='["elastic"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"url": "http://%%host%%:9200"}]'
ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Docker ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.logs"='[{"source":"elasticsearch","service":"<SERVICE_NAME>"}]'
トレースの収集

コンテナ化されたアプリケーションの APM は、Agent v6 以降でサポートされていますが、トレースの収集を開始するには、追加のコンフィギュレーションが必要です。

Agent コンテナで必要な環境変数

パラメーター
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

利用可能な環境変数とコンフィギュレーションの完全なリストについては、Kubernetes アプリケーションのトレースおよび Kubernetes Daemon のセットアップを参照してください。

次に、アプリケーションコンテナをインスツルメントし、Agent コンテナの名前に DD_AGENT_HOST を設定します。

Kubernetes

このチェックを、Kubernetes で実行している Agent に構成します。

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートをポッドアノテーションとして設定します。他にも、ファイル、ConfigMap、または key-value ストアを使用してテンプレートを構成できます。

Annotations v1 (Datadog Agent < v7.36 向け)

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  annotations:
    ad.datadoghq.com/elasticsearch.check_names: '["elastic"]'
    ad.datadoghq.com/elasticsearch.init_configs: '[{}]'
    ad.datadoghq.com/elasticsearch.instances: |
      [
        {
          "url": "http://%%host%%:9200"
        }
      ]
spec:
  containers:
    - name: elasticsearch

Annotations v2 (Datadog Agent v7.36+ 向け)

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  annotations:
    ad.datadoghq.com/elasticsearch.checks: |
      {
        "elastic": {
          "init_config": {},
          "instances": [
            {
              "url": "http://%%host%%:9200"
            }
          ]
        }
      }
spec:
  containers:
    - name: elasticsearch
ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集を参照してください。

次に、ログのインテグレーションをポッドアノテーションとして設定します。これは、ファイル、ConfigMap、または key-value ストアを使用して構成することも可能です。

Annotations v1/v2

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  annotations:
    ad.datadoghq.com/elasticsearch.logs: '[{"source":"elasticsearch","service":"<SERVICE_NAME>"}]'
spec:
  containers:
    - name: elasticsearch
トレースの収集

コンテナ化されたアプリケーションの APM は、Agent v6 以降を実行するホストでサポートされていますが、トレースの収集を開始するには、追加のコンフィギュレーションが必要です。

Agent コンテナで必要な環境変数

パラメーター
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

利用可能な環境変数とコンフィギュレーションの完全なリストについては、Kubernetes アプリケーションのトレースおよび Kubernetes Daemon のセットアップを参照してください。

次に、アプリケーションコンテナをインスツルメントし、Agent コンテナ名に DD_AGENT_HOST を設定します。

ECS

このチェックを、ECS で実行している Agent に構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "elasticsearch",
    "image": "elasticsearch:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"elastic\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"url\": \"http://%%host%%:9200\"}]"
    }
  }]
}
ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、ECS ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "elasticsearch",
    "image": "elasticsearch:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"elasticsearch\",\"service\":\"<SERVICE_NAME>\"}]"
    }
  }]
}
トレースの収集

コンテナ化されたアプリケーションの APM は、Agent v6 以降でサポートされていますが、トレースの収集を開始するには、追加のコンフィギュレーションが必要です。

Agent コンテナで必要な環境変数

パラメーター
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

利用可能な環境変数とコンフィギュレーションの完全なリストについては、Kubernetes アプリケーションのトレースおよび Kubernetes Daemon のセットアップを参照してください。

次に、アプリケーションのコンテナをインスツルメントし、EC2 プライベート IP アドレスDD_AGENT_HOST を設定します。

検証

Agent の status サブコマンドを実行し、Checks セクションで elastic を探します。

収集データ

デフォルトでは、次のすべてのメトリクスが Agent によって送信されるわけではありません。すべてのメトリクスを送信するには、上述のように elastic.yaml でフラグを構成します。

  • pshard_stats は、elasticsearch.primaries.* および elasticsearch.indices.count メトリクスを送信します。
  • index_stats は、elasticsearch.index.* メトリクスを送信します。
  • pending_task_stats は、elasticsearch.pending_* メトリクスを送信します。
  • slm_stats は、elasticsearch.slm.* メトリクスを送信します
  • cat_allocation_statselasticsearch.disk.* メトリクスを送信します。

メトリクス

イベント

Elasticsearch チェックは、Elasticsearch クラスターの全体的なステータスが赤、黄、緑に変化するたびに、Datadog にイベントを送信します。

サービスチェック

トラブルシューティング

その他の参考資料