Metricbeatを使用したElasticsearchの監視データの収集

6.5以降では、Metricbeatを使用してElasticsearchに関するデータを収集し、レガシー収集方法で説明されているようにエクスポーターを介してルーティングするのではなく、監視クラスターに送信できます。

Elastic Agentを使用したいですか? Elastic Agentを使用した監視データの収集を参照してください。

監視アーキテクチャの例

  • 1. Metricbeatをインストール。理想的には、scope: clusterで構成された単一のMetricbeatインスタンスをインストールし、hostsを設定して、クラスター内のマスター不適格ノードにリクエストを送信するエンドポイント(例:負荷分散プロキシ)を指すようにします。これが不可能な場合は、プロダクションクラスター内の各Elasticsearchノードに対して1つのMetricbeatインスタンスをインストールし、デフォルトのscope: nodeを使用します。Metricbeatがscope: nodeを使用してElasticsearchを監視している場合、各Elasticsearchノードに対してMetricbeatインスタンスをインストールする必要があります。そうしないと、一部のメトリックが収集されません。scope: nodeを使用したMetricbeatは、クラスターの選出されたマスターからほとんどのメトリックを収集するため、この追加の負荷を考慮してすべてのマスター適格ノードをスケールアップする必要があり、専用のマスターノードがある場合はこのモードを使用しないでください。
  • 2. 各ElasticsearchノードでMetricbeatのElasticsearchモジュールを有効にします。
    たとえば、modules.dディレクトリ内のElastic Stack監視機能のデフォルト構成を有効にするには、次のコマンドを実行します:
    1. metricbeat modules enable elasticsearch-xpack
    詳細については、Elasticsearchモジュールを参照してください。
  • 3. 各ElasticsearchノードでMetricbeatのElasticsearchモジュールを構成します。
    modules.d/elasticsearch-xpack.ymlファイルには、次の設定が含まれています:

Yaml

  1. - module: elasticsearch
  2. xpack.enabled: true
  3. period: 10s
  4. hosts: ["http://localhost:9200"]
  5. #scope: node
  6. #username: "user"
  7. #password: "secret"
  8. #ssl.enabled: true
  9. #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
  10. #ssl.certificate: "/etc/pki/client/cert.pem"
  11. #ssl.key: "/etc/pki/client/cert.key"
  12. #ssl.verification_mode: "full"
デフォルトでは、モジュールはElasticsearchの監視メトリックを収集します。
http://localhost:9200。そのホストとポート番号が正しくない場合は、
hosts設定を更新する必要があります。Elasticsearchを暗号化された通信を使用するように構成した場合は、HTTPS経由でアクセスする必要があります。たとえば、hosts設定を使用します。
https://localhost:9200のように。
デフォルトでは、scopenodeに設定されており、hostsリストの各エントリは
Elasticsearchクラスター内の異なるノードを示します。scopeclusterに設定した場合、
hostsリストの各エントリは、異なる
Elasticsearchクラスターの単一のエンドポイントを示します(たとえば、クラスターの前面にある負荷分散プロキシ)。クラスターに専用のマスターノードがある場合は、
scope: clusterを使用し、hostsリスト内のエンドポイントを構成して、
専用のマスターノードにリクエストを送信しないようにする必要があります。

Elasticセキュリティ機能が有効になっている場合、Metricbeatがメトリックを正常に収集できるように、ユーザーIDとパスワードを提供する必要があります:

  • 3.1. プロダクションクラスターに、remote_monitoring_collector組み込みロールを持つユーザーを作成します。あるいは、remote_monitoring_user組み込みユーザーを使用します。
  • 3.2. Elasticsearchモジュールの構成ファイルにusernameおよびpassword設定を追加します。
  • 3.3. ElasticsearchクラスターのHTTP層でTLSが有効になっている場合、hosts設定でURLスキームとしてhttpsを使用するか、ssl.enabled: true設定を追加する必要があります。ElasticsearchクラスターのTLS構成に応じて、追加のssl.*設定を指定する必要がある場合もあります。
    • 4. オプション:Metricbeatでシステムモジュールを無効にします。
      デフォルトでは、システムモジュールが有効になっています。ただし、収集される情報はKibanaの監視ページに表示されません。その情報を他の目的で使用しない限り、次のコマンドを実行します:
      1. metricbeat modules disable system
    • 5. 監視データを送信する場所を特定します。
      プロダクション環境では、データを保存するために別のクラスター(監視クラスターと呼ばれる)を使用することを強くお勧めします。別の監視クラスターを使用することで、プロダクションクラスターの停止が監視データへのアクセスに影響を与えるのを防ぎます。また、監視活動がプロダクションクラスターのパフォーマンスに影響を与えるのを防ぎます。
      たとえば、Metricbeat構成ファイル(metricbeat.yml)にElasticsearch出力情報を指定します:

Yaml

  1. output.elasticsearch:
  2. # Array of hosts to connect to.
  3. hosts: ["http://es-mon-1:9200", "http://es-mon-2:9200"]
  4. # Optional protocol and basic auth credentials.
  5. #protocol: "https"
  6. #username: "elastic"
  7. #password: "changeme"
この例では、データはノードがある監視クラスターに保存されます。
es-mon-1およびes-mon-2

監視クラスターを暗号化された通信を使用するように構成した場合は、HTTPS経由でアクセスする必要があります。たとえば、hosts設定を使用します。
https://es-mon-1:9200のように。
Elasticsearchの監視機能はインジェストパイプラインを使用するため、監視データを保存するクラスターには少なくとも1つのインジェストノードが必要です。
監視クラスターでElasticsearchのセキュリティ機能が有効になっている場合、Metricbeatがメトリックを正常に送信できるように、有効なユーザーIDとパスワードを提供する必要があります: