用ELK工具收集rancher的容器日誌

前言

rancher1.6部署的docker集羣,在rancher的界面上也能看到日誌:
用ELK工具收集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及採集日誌的簡單應用》在10.0.0.101上面部署好jdk、elasticsearch、logstash、kibana服務;

2、在10.0.0.103上部署好rancher-server,並將10.0.0.102作爲rancher-node加入到rancher上:
用ELK工具收集rancher的容器日誌

3、部署如下測試服務:
用ELK工具收集rancher的容器日誌

4、檢查上述服務的LogDriver,保證是json-file格式(這裏不配置,服務器上的container目錄下可能不會生成json-log文件):
用ELK工具收集rancher的容器日誌

5、查看服務器上是否已經生成json-log(rancher上部署的docker容器,日誌文件在/var/lib/docker/containers下面),例如gateway服務:
用ELK工具收集rancher的容器日誌

日誌採集

在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.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、啓動服務:

[root@test102 filebeat-6.5.1-linux-x86_64]# ./filebeat  -c filebeat.yml &

kibana查看日誌

在kibana上面去查看nginx的訪問日誌和gateway的服務日誌,兩個docker容器的IP不同,可以根據容器IP地址來過濾日誌,nginx、LB、gateway的容器IP分別是:
用ELK工具收集rancher的容器日誌

1、查看gateway容器日誌
在kibana界面過濾gateway的容器IP地址10.42.243.216,可以看到日誌內容如下:
用ELK工具收集rancher的容器日誌

2、查看nginx的訪問日誌
注意:nginx在部署的時候,沒有將端口暴露出來,而是通過LB單獨映射的端口,因此在查看nginx日誌的時候,不能用nginx本身的容器IP10.42.221.23去查看,而是要用LB的容器IP10.42.116.220去查看日誌:
用ELK工具收集rancher的容器日誌

用ELK工具收集rancher的容器日誌

至此,ELK收集rancher的容器日誌,就做好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章