運用環境での監視

運用環境では、監視しているノードが利用できない場合でも、履歴データが利用できるように、監視データを別の 監視クラスター に送信する必要があります。

Elastic Agent と Metricbeat は、監視データを監視クラスターに収集して送信するための推奨方法です。

以前にレガシー収集方法を設定している場合は、Elastic Agent または Metricbeat 収集に移行する必要があります。レガシー収集を他の収集方法と併用しないでください。

Gold サブスクリプション以上をお持ちの場合、専用の監視クラスターを使用することで、中央の場所から複数のクラスターを監視することも可能です。

監視データを別のクラスターに保存するには:

  • 1. 使用する監視クラスターとして設定する Elasticsearch クラスターをセットアップします。たとえば、ノード es-mon-1es-mon-2 を持つ 2 ホストのクラスターを設定することができます。
    • 理想的には、監視クラスターと運用クラスターは同じ Elastic Stack バージョンで実行されます。ただし、最新の 8.x リリースの監視クラスターは、同じメジャーバージョンを使用する運用クラスターとも動作します。8.x を使用する監視クラスターは、最新の 7.x リリースを使用する運用クラスターとも動作します。
    • 監視クラスターには少なくとも 1 つの ingest node が必要です。専用の ingest node である必要はありません。
    • 1.1. (オプション) 監視クラスターでの監視データの収集が無効になっていることを確認します。デフォルトでは、xpack.monitoring.collection.enabled 設定は false です。
      たとえば、次の API を使用してこの設定を確認および変更できます:

Python

  1. resp = client.cluster.get_settings()
  2. print(resp)
  3. resp1 = client.cluster.put_settings(
  4. persistent={
  5. "xpack.monitoring.collection.enabled": False
  6. },
  7. )
  8. print(resp1)

Ruby

  1. response = client.cluster.get_settings
  2. puts response
  3. response = client.cluster.put_settings(
  4. body: {
  5. persistent: {
  6. 'xpack.monitoring.collection.enabled' => false
  7. }
  8. }
  9. )
  10. puts response

Js

  1. const response = await client.cluster.getSettings();
  2. console.log(response);
  3. const response1 = await client.cluster.putSettings({
  4. persistent: {
  5. "xpack.monitoring.collection.enabled": false,
  6. },
  7. });
  8. console.log(response1);

コンソール

  1. GET _cluster/settings
  2. PUT _cluster/settings
  3. {
  4. "persistent": {
  5. "xpack.monitoring.collection.enabled": false
  6. }
  7. }
  • 1.2. Elasticsearch のセキュリティ機能が監視クラスターで有効になっている場合、監視データを送信および取得できるユーザーを作成します:
    Kibana を使用して監視データを表示する予定がある場合、ユーザー名とパスワードの資格情報は、Kibana サーバーと監視クラスターの両方で有効である必要があります。

Python

  1. resp = client.security.put_user(
  2. username="remote_monitor",
  3. password="changeme",
  4. roles=[
  5. "remote_monitoring_agent"
  6. ],
  7. full_name="Internal Agent For Remote Monitoring",
  8. )
  9. print(resp)

Js

  1. const response = await client.security.putUser({
  2. username: "remote_monitor",
  3. password: "changeme",
  4. roles: ["remote_monitoring_agent"],
  5. full_name: "Internal Agent For Remote Monitoring",
  6. });
  7. console.log(response);

コンソール

  1. POST /_security/user/remote_monitor
  2. {
  3. "password" : "changeme",
  4. "roles" : [ "remote_monitoring_agent"],
  5. "full_name" : "Internal Agent For Remote Monitoring"
  6. }

あるいは、remote_monitoring_user 組み込みユーザー を使用します。