创建基于Docker的E*K(ElasticSearch、Fluentd、Kibana)日志采集系统

说道日志采集和可视化,有很多方案,而最多的应该莫过于ELK了(ElasticSearch、Logstash和Kibana),而这一套软件,目前也同归于同一项目:https://www.elastic.co/

不过我日志采集系统我没有使用Logstash,而是采用了Fluentd。

一共有两个Docker镜像,一共是日志采集,即fluentd-agent(https://github.com/liubin/fluentd-agent),另一个是日志存储(es)和可视化(kibanna)es-dashboard(https://github.com/liubin/es-dashboard)。其中fluentd-agent运行于nginx服务器上(也可以自己修改td-agent.conf来改写规则),而es-dashboard由两个应用组成,es和kibana,它们既可以运行在一个容器中,也可以分开运行,具体见后面说明。

1. 在同一容器中运行es和kibana

sudo docker run -p 9200:9200 -p 9300:9300 -p 5601:5601 liubin/es-dashboard

2. 或者在两个容器中运行es和kibana

2.1. 启动es

sudo docker run -p 9200:9200 -p 9300:9300 liubin/es-dashboard --name es /tmp/start.sh es

2.2. 启动kibana

得到上一个容器的IP地址和es端口后,启动第二个容器

sudo docker run -p 5601:5601 -e ELASTIC_URl=192.168.33.121:9200 --name kibana liubin/es-dashboard /tmp/start.sh kibana

其中,192.168.33.121:9200需要更加情况使用自己的值。

3. 启动fluentd-agent

es服务器启动后,就可以启动agent了,也很简单。

sudo docker run -e ELASTIC_HOST=172.17.0.92 -e ELASTIC_PORT=9200 -v /var/log:/var/log --name agent liubin/fluentd-agent

需要指定ELASTIC_HOST和ELASTIC_PORT两个变量,都是2.1. es启动后得到的值。

之后,既可以到kibana的首页,默认为http://:5601查看结果了。

3. 安全问题

如果将es服务等放到公网,需要注意安全问题,因为默认es和kibana都不带访问控制的,需要自己使用插件或者其他产品,或者防火墙来实现。

这部分参考资料如下:

1. https://www.elastic.co/blog/scripting-security/
2. https://www.elastic.co/products/shield
3. http://www.elastic.co/guide/en/kibana/current/production.html



Posted in Docker, Tech

无觅相关文章插件,快速提升流量