chp16 使用ELK Stack收集K8S平台日志

使用ELK Stack收集K8S平台日志

1.收集哪些日志

•K8S系统的组件日志

•K8S Cluster里面部署的应用程序日志

-标准输出

-日志文件

传统配置日志采集工具重要设置什么?

1、日志路径

2、写正则,格式化日志

3、日志源(Pod、命名空间, service,项目)

日志目录

/var/lib/docker/containers/*/*-json.log
/var/lib/kubelet/pods/*/volumes/kubernetes.iowempty-dir/
/var/lib/kubelet/pods/*/

 

2.ELK Stack日志方案

image

Filebeat+ELK

搭建日志收集平台

注意:es采用的是动态pv分布。需要确保动态分配pv已经创建好。参考动态创建pv客户端一节

kubectl apply –f .

elasticsearch.yaml

filebeat-official.yaml

kibana.yaml

如果配置了ingress 可以通过域名访问部署的kibana,或者通过nodeIP:Port 也可以访问到

585433562

image

585499046

9a1a273b-ecf0-45b3-8c29-dbe988f147bf

 

查看日志

c4f019bb-5b44-4c25-b360-c0f780e9613d

在kibana中搜索

0c88d798-3289-4f87-b1ab-56d65507dc79

筛选日志

cd306492-bfac-4344-be14-ca7651f42c1f

 

3.容器中的日志怎么收集

 

方案一:Node上部署一个日志收集程序

•DaemonSet 方式部署日志收集程序

•对本节点/var/log/kubelet/pods和

/var/lib/docker/containers/两个目录下的日志进行采集

•Pod中容器日志目录挂载到宿主机统一目录上

image

方案1:Daemonset部署日志采集器

标准输出:

/var/lib/docker/containers/*/*-json.log

日志文件:

方式1:/var/lib/kubelet/pods/*/volumes/kubernetes.iomempty-dir/

方式2:开发根据容器名命名日志文件,并且部署时统一挂载到宿主机日志目录

 

 

方案二:Pod中附加专用日志收集的容器

•每个运行应用程序的Pod中增加一个日志 收集容器,使用emtyDir共享日志目录让 日志收集程序读取到。

image

image

方案2:sidecar部署一个专用日志采集容器

日志文件:通过 emptydir共享日志目录,手动配置日志源

 

 

方案三:应用程序直接推送日志

•超出Kubernetes范围

image

image

 

 

 

 

 

4.K8S平台中应用日志收集

 

•K8S组件日志收集

点击下载yaml配置文件 k8s-log.yaml

 

•Nginx应用日志收集

•Tomcat应用日志收

集点击下载yaml配置文件 tomcat-logs.yaml

posted @ 2020-11-08 21:56  元贞  阅读(64)  评论(0)    收藏  举报