用ELK工具收集rancher的容器日志
前言rancher1.6部署的docker集群,在rancher的界面上也能看到日志:
http://i2.运维网.com/images/blog/201811/30/676746ff0646878d3826b8902d6a346e.png
但是rancher上看到的日志容量有限,只要稍微早一点的日志,就无法查看了,需要手动到服务器上使用docker logs查看日志,不太方便,因此搭建一个elk来收集rancher上部署的docker容器日志。
rancher上部署的docker容器,日志位置在/var/lib/docker/containers/containerID/目录下的*-json.log文件里,因此需要收集这个文件的内容。
部署规划
1、服务器规划
服务器
角色
部署服务
10.0.0.101
elk工具
jdk、elasticsearch、logstash、kibana
10.0.0.102
rancher-node
rancher-agent、filebeat
10.0.0.103
rancher-server
rancher-server
2、相关版本
服务器版本:centos7.3
docker版本:1.13.1
rancher-server版本:1.16.24
elk、filebeat版本:6.5.1
jdk版本:1.8
环境准备
1、按照《从0开始搭建ELK及采集日志的简单应用》在10.0.0.101上面部署好jdk、elasticsearch、logstash、kibana服务;
2、在10.0.0.103上部署好rancher-server,并将10.0.0.102作为rancher-node加入到rancher上:
http://i2.运维网.com/images/blog/201811/30/8cac8b2df282b761db4a1f731d84e2f5.png
3、部署如下测试服务:
http://i2.运维网.com/images/blog/201811/30/380ebbd868869762c56c77ba89686c5b.png
4、检查上述服务的LogDriver,保证是json-file格式(这里不配置,服务器上的container目录下可能不会生成json-log文件):
http://i2.运维网.com/images/blog/201811/30/a26829afd2eca68c19854020a28af37c.png
5、查看服务器上是否已经生成json-log(rancher上部署的docker容器,日志文件在/var/lib/docker/containers下面),例如gateway服务:
http://i2.运维网.com/images/blog/201811/30/5b21acc3536b336828963c6a6b195f66.png
日志采集
在10.0.0.102上部署filebeat(用的版本包:filebeat-6.5.1-linux-x86_64.tar.gz)
1、创建专用用户,解压安装包:
# useradd elk;echo 12345678|passwd elk --stdin #创建elk用户,密码设置为12345678
# tar xf filebeat-6.5.1-linux-x86_64.tar.gz -C /usr/local/
# cd /usr/local/filebeat-6.5.1-linux-x86_64/
2、修改配置文件,修改/usr/local/filebeat-6.5.1-linux-x86_64/filebeat.yml下面几个地方:
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
# Change to true to enable this input configuration.
enabled: true #注意:这里默认是false,要改成true,
paths: #配置要采集的日志路径
- /var/lib/docker/containers/*/*json.log
#============================== Kibana =====================================
setup.kibana:
host: "10.0.0.101:5601"
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
hosts: ["10.0.0.101:9200"]
username: "elk"
password: "12345678"
3、启动服务:
# ./filebeat-c filebeat.yml &
kibana查看日志
在kibana上面去查看nginx的访问日志和gateway的服务日志,两个docker容器的IP不同,可以根据容器IP地址来过滤日志,nginx、LB、gateway的容器IP分别是:
http://i2.运维网.com/images/blog/201811/30/83706987fccd69a31f37ed3b675048b1.png
1、查看gateway容器日志
在kibana界面过滤gateway的容器IP地址10.42.243.216,可以看到日志内容如下:
http://i2.运维网.com/images/blog/201811/30/69d77afcd5c0ff08cbc98bdaf982c2e9.png
2、查看nginx的访问日志
注意:nginx在部署的时候,没有将端口暴露出来,而是通过LB单独映射的端口,因此在查看nginx日志的时候,不能用nginx本身的容器IP10.42.221.23去查看,而是要用LB的容器IP10.42.116.220去查看日志:
http://i2.运维网.com/images/blog/201811/30/e06f5e10258e115acdad70f30d7ceabc.png
http://i2.运维网.com/images/blog/201811/30/cb379559301ebf1ce0113b50e73b6d30.png
至此,ELK收集rancher的容器日志,就做好了。
页:
[1]