LoginSignup
3
2

More than 5 years have passed since last update.

Monitoringでログ表示

Last updated at Posted at 2019-04-17

はじめに

気が付くと、いろいろな機能が追加されているElastic Stackです。
今回はちょっと小さな機能ですが、ピリリとくる(かな?)。

Monitoringでのログ表示

Monitoring機能では各ノードやインデックスのメトリックが表示されていましたが、Infra AppのLogsと連携してログを表示する機能が追加されました。

Screenshot_2019-04-16 Stack Monitoring - Overview.png

が、デフォルトではメッセージが表示されるだけで何も出てくれません。
書いてある通りに、ちゃんとFilebeatをセットアップして表示してみましょう。

Filebeatの設定

設定は、こんな感じで。
Elasticsearchが乗っているサーバにFilebeatを入れます。今回はMonitoring用クラスタがあるわけではないので、そのままローカルのElasticsearchに送り込みます。

filebeat.yml
filebeat.config:
   modules:
     path: /etc/filebeat/modules.d/*.yml
   module: elasticsearch
output.elasticsearch:
   hosts: ["localhost:9200"]

この設定で起動すると、以下のような画面が出てきます。

Screenshot_2019-04-16 Stack Monitoring - Overview(1).png

(さっきとはバージョン違いますが、まぁ、お茶目ってことで)

GithubのIssueを見る限り、ワーニングは色違いで出してくれるようです。

ログの表示

Overviewの場合

ここで表示されるのは、最新の10件だけです。ログの下にはLogs UIへのリンクもあるので、全部見たければそちらに移動します。
押すとLogs UIにとんで、Cluster UUIDでフィルタリングされたログが表示されます。

Screenshot_2019-04-16 Logs - Kibana(2).png

Nodeの場合

Overviewと同様に、ログが表示されます。ここでは、表示されているノードに関連したものが表示されます。

Logs UIにとんでみると、ちゃんとフィルタリングされます。

Screenshot_2019-04-16 Logs - Kibana(1).png

Indexの場合

Screenshot_2019-04-16 Stack Monitoring - Elasticsearch - Indices - filebeat-7 0 0-2019 04 16-000001 - Overview.png

Indexでフィルタリングされたログが表示されます。
Logs UIに飛んでみます。

Screenshot_2019-04-16 Logs - Kibana.png

コンテナへの組み込み

ElasticsearchをDockerなりのコンテナで起動すること、ありますよね。
そんな時にログを簡単に見れるように、Filebeatを組み込んでみます。
といっても、Elasticsearchのコンテナに入れちゃうのではなく、別コンテナに入れたFilebeatでログを読み込んでElasticsearchにログを投げ込みます。

docker-compose.ymlとfilebeat.ymlを、以下のようにして作って見ます。

docker-compose.yml
version: '2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0-SNAPSHOT
    container_name: elasticsearch4
    environment:
      - cluster.name=docker-cluster
      - node.name=node-1
      - cluster.initial_master_nodes=node-1
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - path.repo=/usr/share/elasticsearch/snapshots
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9204:9200
    networks:
      - esnet
  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.0-SNAPSHOT
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch4:9200
    container_name: kibana4
    ports:
      - 5605:5601
    networks:
      - esnet
  beats4:
    image: docker.elastic.co/beats/filebeat:7.1.0-SNAPSHOT
    user: root
    environment:
      - ELASTICSEARCH_CONTAINER_NAME=elasticsearch4
      - ELASTICSEARCH_HOSTS=http://elasticsearch4:9200
      - KIBANA_HOST=http://kibana4:5601
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./filebeat.yml:/usr/share/filebeat/filebeat.yml
    networks:
      - esnet

volumes:
  esdata1:
    driver: local

networks:
  esnet:

ホストのdocker関連ディレクトリを参照する権限が必要なので、Filebeatの起動ユーザをrootにしています。

filebeat.yml
filebeat.autodiscover:
  providers:
    - type: docker
      labels.dedot: true
      templates:
        - condition:
            contains:
              docker.container.name: ${ELASTICSEARCH_CONTAINER_NAME:elasticsearch}
          config:
             - module: elasticsearch
               server:
                 enabled: true
                 input:
                   type: docker
                   containers.ids:
                     - "${data.docker.container.id}"
setup.kibana:
  host: "${KIBANA_HOST:kibana:5601}"
output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'

さいごに

こんな感じで、ログも表示されるとなると、Monitoring用のクラスタも運用したくなってきますね。
あとは、ほかの製品群もログが見れるようになるとうれしいかな。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2