Kubernetes平臺中日誌收集

收集哪些日誌

K8S系統的組件日誌
K8S Cluster裏面部署的應用程序日誌

日誌方案

Kubernetes平臺中日誌收集

容器中的日誌怎麼收集

方案一:Node上部署一個日誌收集程序
1、DaemonSet方式部署日誌收集程序 --這個在每個節點上會有一個pod監聽
2、對本節點(node上的)/var/log和 /var/lib/docker/containers/
兩個目錄下的日誌進行採集

1)/var/log/containers
2)如下圖:
Kubernetes平臺中日誌收集

方案二:Pod中附加專用日誌收集的容器--使用這個方案
每個運行應用程序的Pod中增加一個日誌
收集容器,使用emtyDir共享日誌目錄讓
日誌收集程序讀取到。

方案三:應用程序直接推送日誌
超出Kubernetes範圍,需要在程序中實現的

驗證方案二

1、[root@docker ~]# mkdir logs
2、[root@docker ~]# cd logs/

部署elk
1、官方地址:https://www.elastic.co/cn/
操作文檔:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

2、部署在192.168.1.25上
1)安裝jdk
版本需要在Java 8發行版中安裝Java版本1.80.131或稍後版本,不然運行失敗
下載:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2) [root@docker ~]# cat /etc/yum.repos.d/elastic.repo
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

3)[root@docker ~]# yum install logstash kibana elasticsearch -y

4)修改如下:
[root@docker ~]# cat /etc/kibana/kibana.yml | grep -v '^#'| grep -v '^$'
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.1.25:9200"

5)systemctl start kibana

6)[root@docker ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v '^#'| grep -v '^$'
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.1.25
http.port: 9200

7)需要解析到java
ln -sf /usr/local/jdk1.8.0_191/bin/java /usr/local/bin/java

8)啓動:systemctl start elasticsearch

9)訪問:http://192.168.1.25:5601

10)
Kubernetes平臺中日誌收集

11)
Kubernetes平臺中日誌收集

12)
Kubernetes平臺中日誌收集

13)[root@docker local]# cat /etc/logstash/conf.d/k8s_syslog.conf
input {
#filebeat客戶端
beats {
port => 5044
}
}

#篩選
filter {

   }

output {
#輸出到es
elasticsearch {
hosts => ["http://192.168.1.25:9200"]
index => "k8s-syslog-%{+YYYY.MM.dd}"
}
#控制檯輸出,方便調試
stdout { codec => rubydebug }
}

14)這一步是調試
[root@docker local]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/k8s_syslog.conf

15)啓動
systemctl start logstash

3、到master01上部署filebeat

[root@docker logs]# vi k8s-logs.yaml 說明
fields_under_root:如果該選項設置爲true,則新增fields成爲頂級目錄

1)
Kubernetes平臺中日誌收集

2)
Kubernetes平臺中日誌收集

image: lizhenliang/filebeat:6.4.2 下載docker.hub上的要等很久

3)創建
kubectl apply -f k8s-logs.yaml
4)查看
Kubernetes平臺中日誌收集

5)再每個node上都安裝一個pod,這就是DaemonSet的作用

4、訪問:查看是否有索引
Kubernetes平臺中日誌收集

5、再新建索引
Kubernetes平臺中日誌收集

Kubernetes平臺中日誌收集

6、搭建nginx的環境讓其產生日誌
192.168.1.13
[root@docker php-demo]# ls
deployment.yaml ingress.yaml mysql.yaml.bak namespace.yaml registry-pull-secret.yaml service.yaml
[root@docker php-demo]# kubectl apply -f .
1)刪除deployment.yaml 因爲要讓registry-pull-secret.yaml授權訪問後,再更新
[root@docker php-demo]# kubectl delete -f deployment.yaml
[root@docker php-demo]# kubectl apply -f deployment.yaml

2)查看下pods,svc,ingress
Kubernetes平臺中日誌收集

3)必須要有ingress控制器,才能編輯ingress 規則
因爲ingress-controller 相當於nginx ,ingress.yaml相當於nginx上的轉發的規則

Kubernetes平臺中日誌收集

若是有問題:重新apply
/root/demo/ingress/mandatory.yaml 這個文件就是生成ingress-controller

4)查看ingress-控制器分配在了哪個node上,相當於nginx的服務器IP,這樣就可以在hosts綁定域名
Kubernetes平臺中日誌收集

192.168.1.24 php.ctnrs.com

5 ) 訪問下:http://php.ctnrs.com http://php.ctnrs.com/status.php

6)更新創建filebeat的pod
首先創建filebeat的配置文件,這個是存在Configmap下的

 ![](https://s1.51cto.com/images/blog/201901/08/1372e51072d67e7af4bdbd94511014d6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

 再創建filebeat的pod
 [root@docker logs]# vi nginx-deployment.yaml

 定義pod1:php-demo 若是已創建的話,再更新需要滾動更新(保障容器都在提供服務,一個個滾動替換)完成
 定義pod2:filebeat
 掛載:emptyDir: {} 這個表示2個容器都是共享的,這樣filebeat就可以讀到nginx的日誌文件了

 ![](https://s1.51cto.com/images/blog/201901/08/96d71380a78356db2d5bd908745b9c4e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

7)執行
Kubernetes平臺中日誌收集

8)驗證
這裏的是k8s的監控檢查
Kubernetes平臺中日誌收集

9)修改logstash的文件
分開寫,比如nginx就輸入到nginx裏,k8s就輸入到k8s裏的日誌
Kubernetes平臺中日誌收集

10)重啓logstash
systemctl restart logstash

11)在kibana上添加索引
Kubernetes平臺中日誌收集

Kubernetes平臺中日誌收集

Kubernetes平臺中日誌收集

下面是部署java的日誌
1、
Kubernetes平臺中日誌收集

2、和php-demo的一致

Kubernetes平臺中日誌收集

3、再次查看kibana 有沒有索引生成即可

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