zoukankan      html  css  js  c++  java
  • Logspout+ELK 集中收集docker日志

    一、解决的问题

    • 业务中存在多台服务器。每台服务器也有多个docker容器服务,每一个容器一份日志,这导致日志十分分散。
    • ELK很好得解决了这个问题,部署一套ELk(elasticsearch,logstash,kibana)系统,elasticsearch负责存储日志,logstash负责接收处理日志,并将日志存至elasticsearch,
      kibana连接elasticsearch,可视化日志。每台服务器部署logspout,logspout则会收集这台服务器上的每一个容器日志,同时将日志传输到远程的logstash上。

    基本思路通过logstash获取docker中的日志,然后,将日志转发给elasticsearch进行索引,kibana分析和可视化。
    获取docker中的日志文件可以有多种方式:

    • 1、添加一个MQ或者Redis作为docker容器和logstash的中间层,docker中的服务将日志传输到中间层,然后,logstash从中间获取
    • 2、使用工具获取docker中的日志,例如:filebeat,logspout,log-pilot;但是不建议在每个服务器上安装logstash,因为logstash运行会占有大量的服务器资源,增加服务器压力。
    • filebeat的配置好像相对比较复杂,没有具体了解;
    • logspout 可以获取docker的stdout日志
    • log-pilot 是阿里开源的日志工具,可以处理stdout和日志文件

    二、Docker安装ELK

    1、 编辑文件 config/logstash.conf(配置输入输出)

    input { 
       udp {
        port => 5000
        type => json
      }
    }
    output {
    	elasticsearch {
                 hosts => "elasticsearch:9200"  #将logstash的输出到 elasticsearch ,修改成你部署的elasticsearch服务
    	}
    }
    

    1.1 编辑/config/logstash.yml

    path.config: /usr/share/logstash/conf.d/*.conf
    path.logs: /var/log/logstash
    

    2、编写一下 Docker-compose.yml 方便构建

    version: '3'
    services:
     elasticsearch:
      image: elasticsearch:7.1.1
      environment:
       - discovery.type=single-node
      ports:
       - "9200:9200"   
       - "9300:9300"   
    
     logstash:
      image: logstash:7.1.1
      volumes:
       - /data/ELK/config:/usr/share/logstash/conf.d/
       - /data/ELK/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      ports:
       - "5001:5000"
      links:
        - elasticsearch
     kibana:
      image: kibana:7.1.1
      environment:
       - ELASTICSEARCH_URL=http://elasticsearch:9200  //注意修改成你部署的elasticsearch服务
      ports:
       - "5601:5601"
      links:
        - elasticsearch
    

    3、docker-compose up --build -d 命令开启部署

    三、访问kibana http://ip:5601(kibana服务ip)

    1、Create index pattern

    创建index后,即可查看日志

    Docker启动elasticsearch闪退,无法创建的问题解决

    由于官方的elasticsearch 镜像缺少配置,需要配置两处地方

    • 修改max_map_count大小 sysctl -w vm.max_map_count=262144
    • 修改elasticsearch.yml配置文件
    //找到文件
    cd /var/lib/docker/overlay2/
    find . -name "elasticsearch.yml"
    
    //在文件中添加
    bootstrap.system_call_filter: false
    cluster.initial_master_nodes: ["node-1"]
    
  • 相关阅读:
    .net面试题目问答题2
    .net面试题目问答题1
    .net面试题目101-130
    .net面试题目51-100
    .net面试题目1-50
    试题
    2014奇虎360研发类校园招聘面试题分享
    JAVA基础
    JAVA中集合的继承关系
    美团
  • 原文地址:https://www.cnblogs.com/fanzou/p/13793963.html
Copyright © 2011-2022 走看看