前言
rancher1.6 部署的 docker 集群, 在 rancher 的界面上也能看到日志:
但是 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 及采集日志的简单应用》 http://blog.51cto.com/10950710/2311618 在 10.0.0.101 上面部署好 jdk,Elasticsearch,logstash,kibana 服务;
2, 在 10.0.0.103 上部署好 rancher-server, 并将 10.0.0.102 作为 rancher-node 加入到 rancher 上:
3, 部署如下测试服务:
4, 检查上述服务的 LogDriver, 保证是 JSON-file 格式 (这里不配置, 服务器上的 container 目录下可能不会生成 JSON-log 文件):
5, 查看服务器上是否已经生成 JSON-log(rancher 上部署的 docker 容器, 日志文件在 / var/lib/docker/containers 下面), 例如 gateway 服务:
日志采集
在 10.0.0.102 上部署 filebeat(用的版本包: filebeat-6.5.1-Linux-x86_64.tar.gz)
1, 创建专用用户, 解压安装包:
- [root@test102 ~]# useradd elk;echo 12345678|passwd elk --stdin #创建 elk 用户, 密码设置为 12345678
- [root@test102 ~]# tar xf filebeat-6.5.1-Linux-x86_64.tar.gz -C /usr/local/
- [root@test102 ~]# cd /usr/local/filebeat-6.5.1-Linux-x86_64/
2, 修改配置文件, 修改 / usr/local/filebeat-6.5.1-Linux-x86_64/filebeat.YAML 下面几个地方:
- #=========================== 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, 启动服务:
[root@test102 filebeat-6.5.1-Linux-x86_64]# ./filebeat -c filebeat.YAML &
kibana 查看日志
在 kibana 上面去查看 nginx 的访问日志和 gateway 的服务日志, 两个 docker 容器的 IP 不同, 可以根据容器 IP 地址来过滤日志, nginx,LB,gateway 的容器 IP 分别是:
1, 查看 gateway 容器日志
在 kibana 界面过滤 gateway 的容器 IP 地址 10.42.243.216, 可以看到日志内容如下:
2, 查看 nginx 的访问日志
注意: nginx 在部署的时候, 没有将端口暴露出来, 而是通过 LB 单独映射的端口, 因此在查看 nginx 日志的时候, 不能用 nginx 本身的容器 IP10.42.221.23 去查看, 而是要用 LB 的容器 IP10.42.116.220 去查看日志:
至此, ELK 收集 rancher 的容器日志, 就做好了.
来源: http://www.bubuko.com/infodetail-2867146.html