メイン コンテンツをスキップする 補完的コンテンツへスキップ

ELKサービスを設定

さまざまなサービスが互いに通信できるよう設定する必要があります。

ELKスタックは次の4つのサービスで構成されています。

  • Filebeat:Remote Engine Gen2とELKスタック間のブリッジ、つまりLogstash
  • Logstash: データを取り込み、変換してElasticsearchに送信するデータ処理パイプライン
  • Elasticsearch: 検索およびアナリティクスエンジン
  • Kibana: Elasticsearchのデータを可視化してElastic Stackをナビゲートするためのユーザーインターフェイス

各サービス間のリンクは次のように設定します。

手順

  1. FilebeatとLogstashは同じDockerネットワークにあるため、filebeat/filebeat.ymlファイルでLogstashサーバーの場所(この例ではlogstash:5044)を設定します。
    filebeat.autodiscover:
      providers:
        - type: docker
          templates:
            - condition:
                contains:
                  docker.container.labels.filebeat_ingest: "true"
              config:
                - type: container
                  paths:
                    - /var/lib/docker/containers/${data.docker.container.id}/*.log
                  json.keys_under_root: true
                  json.add_error_key: true
                  json.message_key: message
                  ignore_older: 10m
    
    output:
      logstash:
        hosts: [ 'logstash:5044' ]

    この設定によってFilebeatはRemote Engine Gen2のログを消費し、解析のためにlogstashに送信できるようになります。

    filebeat/filebeat.ymlファイルではログの検出方法も 設定されます。このケースでは、ラベルがfilebeat_ingest: trueであるコンテナーのログを検索します。

  2. logstash.confファイルで、指定されたinputポートがLogstashサーバーに対応していること、そしてfilebeat.ymlファイルで設定したポートと一致することを確認します。
  3. 同じくlogstash.confで、output値をelasticsearchに設定し、Elasticsearchサーバのホストとポート(この例では9200)を指定します。
    input {
      beats {
        port => 5044
      }
    }
    
    output {
        elasticsearch {
          hosts => '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
      }
    }

    このシンプルな入出力設定によって、KibanaはElasticsearchのホストとポートの組み合わせに接続し、Logstashからのデータを読み取ることができるようになります。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。