Elasticsearch+Kibana+Metricbeats(+FIlebeats)でマシンモニタリング④


4.Beats(Metricbeat+Filebeat)のセットアップ(後半)

次はBeatsのサービスを立ち上げます。
サービスが立ち上がるとelasticsearchにログが出力される様になり、いよいよkibanaでモニタリングができる様になります。
次のdocker-composeファイルを作成し、サービスを立ち上げてください。

docker-compose-beats.yml
version: '3.7'

services:
  metricbeat:
    image: docker.elastic.co/beats/metricbeat:7.5.1
    user: root
    volumes:
      - ./config/metricbeat.docker.yml:/usr/share/metricbeat/metricbeat.yml:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
      - /proc:/hostfs/proc:ro
      - /:/hostfs:ro
    command: metricbeat -e -E output.elasticsearch.hosts=["elasticsearch:9200"]
    networks:
      - elastic-base_default
  filebeat:
    image: docker.elastic.co/beats/filebeat:7.5.1
    user: root
    volumes:
      - ./config/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    command: filebeat -e -strict.perms=false -E output.elasticsearch.hosts=["elasticsearch:9200"]
    networks:
      - elastic-base_default
networks:                                                                                                                                                                                                  
  elastic-base_default:
    external: true
docker stack deploy --prune -c docker-compose-beats.yml elastic-beats

なんとこれだけです。こちらもdocker-composeファイルさえあれば、ほとんどコマンド一発で起動完了します。
ポイントはelastic-baseを立ち上げたときにattachableにしたelastic-base_defaultを、elastic-beatsから参照することです。
この辺を意識して構成すると、swarm外のサービスと連携する必要がない限り、elasticsearchのports設定は要らなくなります。

さて、これで全ての構成が完了しましたので、
http://localhost:5601
にアクセスして、左のメニューからDashboardを選んでください。
searchに「metric system」あたりを入力するといい感じのダッシュボードが検索できるはずなので、いろいろ見てください。
また、この状態でswarmノードにnginxコンテナを立てたりすると、そのログをkibanaで見ることができます。Dashboardの検索に「filebeat nginx」をいれていい感じのダッシュボードを探してみてください。
感動しますよ!
これで、マシンモニタリング編は終了です。
が、metricbeatやfilebeatが特別な設定なしに、stack外のコンテナの情報まで収集できるのにはHints based autodiscoverという仕組みが非常に重要な役割を果たしています。今度投稿する際にはこの辺りを解説できればいいなぁ...
Elasticsearch+Kibana自体はログに限らず、いろんな物の分析に使用できるので、機会があればまた投稿してみます。

Elasticsearch+Kibana+Metricbeats(+FIlebeats)でマシンモニタリング①
Elasticsearch+Kibana+Metricbeats(+FIlebeats)でマシンモニタリング②
Elasticsearch+Kibana+Metricbeats(+FIlebeats)でマシンモニタリング③
Elasticsearch+Kibana+Metricbeats(+FIlebeats)でマシンモニタリング④

参考リンク:
https://www.elastic.co/guide/en/beats/metricbeat/current/running-on-docker.html
https://www.elastic.co/guide/en/beats/filebeat/current/running-on-docker.html
https://www.elastic.co/guide/en/beats/filebeat/current/configuration-autodiscover-hints.html
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html