# ELKサービスを設定

利用対象...

* Cloud API Services Platform
* Cloud Big Data
* Cloud Big Data Platform
* Cloud Data Fabric
* Cloud Data Integration
* Cloud Data Management Platform
* Cloud Pipeline Designer Standard Edition
* Data Fabric

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

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からのデータを読み取ることができるようになります。