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
网友评论