DockerにおけるEFK環境の構築と使用

3797 ワード

問題はサービスでdockerを使っていくつかのserverを構築しました.serverに問題が発生したら、docker logs命令でログを確認するしかないです.あるいはjson-fileログを使って駆動できます.1.docker logsコマンドを使用するのは面倒で、保存できません.開発や実施者が確認するのはあまり便利ではありません.2.json-fileログを使って得られたログは、/var/lib/docker/containers/container_id/container_ID.json方式は存在して、最も肝心な点は容器がいったん再建されたらで、日誌はもう存在しません.
EFKの概要Elasticsearch、Flouentd、Kibanaの3つの組み合わせはEFKと略称され、Elasticsearchはオープンソースの分散型検索エンジンで、収集、分析、データ保存の三つの機能を提供します.その特徴は、分布、ゼロ配置、自動発見、インデックス自動スライス、インデックスコピーメカニズム、リセットスタイルインターフェース、多データソース、自動検索負荷などです.Flouentdはログ収集システムであり、豊富なプラグインを通じて、各種システムやアプリケーションからのログを収集し、ユーザー定義に従ってログを分類して処理することができます.Kibanaはオープンソースと無料ツールでもあります.KibanaはFlouentとElasticSearchのために提供するログの分析に友好的なWebインターフェースで、重要なデータログのまとめ、分析、検索を助けることができます.Flouentdで集めたログをElasticsearchに検索して使い、Kibanaで可視化する.
  • 準備docker-compose.yml
    version: "3"
    services:
      elk_server:
        image: lis0x90/efk 
        container_name: efk_server
            network_mode: bridge   #     
        ports:
          - "5601:5601"
          - "9200:9200"
          - "24224:24224"
        volumes:
          - ./config:/etc/fluent  # ./config/fluent.conf    fluentd     
          - ./log:/var/log  #  fluentd         ,      
          - /etc/localtime:/etc/localtime  #        (    )
        logging:
          driver: "json-file"
          options:
             max-size: "200k"
             max-file: "10"
  • fluuent.com nf
        
          @type forward
          port 24224
          bind 0.0.0.0
        
    
        <match *.**>
          @type copy
          
            @type elasticsearch
            host localhost
            port 9200
            logstash_format true
            logstash_prefix fluentd
            logstash_dateformat %Y%m%d
            include_tag_key true
            type_name access_log
            tag_key @log_name
            flush_interval 1s
          
          
            @type stdout
          
        match>
  • を用意します.
  • docker-compse up-dを実行し、EFKを起動します.
  • テストサービス:httpd_server docker-compser.yml
    version: '3'
    services:
      http_server:
        image: httpd
        container_name: http_server
        ports:
          - "80:80"
        logging:
          driver: "fluentd"
          options:
            fluentd-address: localhost:24224
            tag: httpd_server
  • docker-compse up-dを実行し、http_を起動する.server.
  • http://your_ip:9200/_search?pretty取得“_index”:“fluuentd-*”、
  • http://your_ip:5601 kiabnaを使う