美文网首页Log
Docker集群日志收集之EFK实践

Docker集群日志收集之EFK实践

作者: LangK | 来源:发表于2018-08-27 13:17 被阅读0次

    docker集群中日志收集采用EFK(elasticsearch、fluent、kibana)方案。

    • Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。
    • Fluentd:由于docker的logdriver默认支持Fluentd,所以发送端默认选定Fluentd.
    • Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

    首先保证每台docker宿主机上装有Fluentd,docker启动镜像时,使用docker run --log-driver Fluentd.将容器里面控制台的信息转发给Fluentd,由Fluentd转发给elasticsearch存储。再通过kibana展示和分析。

    访问https://www.elastic.co/cn/,下载最新的Elasticsearch和Kibana,需注意两者版本要一致。直接解压运行即可,不需要配置什么环境变量(Elasticsearch依赖jdk环境)。注意修改Elasticsearch和kibana的配置文件 server.host=0.0.0.0,可通过外网访问。

    下载elasticsearch

    $wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
    

    下载Kibana

    $wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz
    

    解压安装

    $tar -zxvf elasticsearch-6.0.0.tar.gz
    $tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz
    

    运行

    $./elasticsearch-6.0.0/bin/elasticsearch
    $./kibana-6.0.0-linux-x86_64/bin/kibana
    

    然后直接安装fluentd。
    前奏,查看当前最大打开文件数:

    $ ulimit -n
    1024
    

    如果查看到的是1024,那么这个数值是不足的,则需要修改配置文件提高数值

    vi /etc/security/limits.conf
    

    设置值如下

    root soft nofile 65536
    root hard nofile 65536
    * soft nofile 65536
    * hard nofile 65536
    

    修改network参数

    vi /etc/sysctl.conf
    

    设置值如下

    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.ip_local_port_range = 10240    65535
    

    然后重启系统
    安装fluentd

    curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
    

    启动fluentd

    $ /etc/init.d/td-agent start 
    Starting td-agent: [  OK  ]
    $ /etc/init.d/td-agent status
    td-agent (pid  21678) is running...
    

    安装必要的插件

    $ /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch
    $ /usr/sbin/td-agent-gem install fluent-plugin-typecast
    $ /usr/sbin/td-agent-gem install fluent-plugin-secure-forward
    
    $ systemctl restart td-agent
    

    配置td-agent,使docker生成的日志输出到elasticsearch

    $ vi /etc/td-agent/td-agent.conf
    

    修改内容为如下(这里我没有填写端口,默认使用9200端口)

    <source>
      @type forward
      port 24224
      bind 0.0.0.0
    </source>
    
    <match **>
      @type elasticsearch
      logstash_format true
      flush_interval 10s # for testing
      host 127.0.0.1
    </match>
    

    重启td-agent

     systemctl restart td-agent
    

    相关文章

      网友评论

        本文标题:Docker集群日志收集之EFK实践

        本文链接:https://www.haomeiwen.com/subject/lziziftx.html