Kubernetes Part6 ---- ELK Stack收集Kubernetes应用日志

2021-01-05 17:29

阅读:494

标签:标准   模式   stat   集合   环境   map   发展   eth   控制   

需求背景

?业务发展越来越庞大,服务器越来越多
?各种访问日志、应用日志、错误日志量越来越多
?开发人员排查问题,需要到服务器上查日志,效率低、权限不好控制
?运维需实时关注业务访问情况

 

K8S环境中需要查看的应用日志

应用程序日志记录体现方式分为两类:
?标准输出:输出到控制台,使用kubectl logs可以看到
?日志文件:写到容器的文件系统的文件

 

日志获取方式

技术图片

 

 

 针对标准输出:以DaemonSet方式在每个Node上部署一个日志收集程序,采集/var/lib/docker/containers/目录下所有容器日志

 

技术图片

 

 

 针对容器中日志文件:在Pod中增加一个容器运行日志采集器,使用emtyDir共享日志目录让日志采集器读取到日志文件

 

ELK 日志系统介绍

技术图片

 

 

 

ELK 是三个开源软件的缩写,提供一套完整的企业级日志平台解决方案。
分别是:
?Elasticsearch:搜索、分析和存储数据
?Logstash :采集日志、格式化、过滤,最后将数据推送到Elasticsearch存储
?Kibana:数据可视化
?Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向Logstash 和Elasticsearch 发送数据。里面应用最多的是Filebeat,是一个轻量级日志采集器。

ELK 日志系统安装配置

准备YAML文件

[root@k8s-master03 elk]# ls -l
total 20
-rw-r--r-- 1 root root 2108 Jan  1 18:09 app-log-logfile.yaml
-rw-r--r-- 1 root root  528 Jan  1 18:09 app-log-stdout.yaml
-rw-r--r-- 1 root root 1450 Jan  1 18:09 elasticsearch.yaml
-rw-r--r-- 1 root root 3166 Jan  1 18:09 filebeat-kubernetes.yaml
-rw-r--r-- 1 root root  924 Jan  1 18:09 kibana.yaml

搭建日志系统:
?elasticsearch.yaml # ES数据库
?kibana.yaml # 可视化展示
日志收集:
?filebeat-kubernetes.yaml # 采集所有容器标准输出
?app-log-stdout.yaml # 标准输出测试应用
?app-log-logfile.yaml # 日志文件测试应用

应用YAML

[root@k8s-master03 elk]# kubectl apply -f elasticsearch.yaml 
deployment.apps/elasticsearch created
persistentvolumeclaim/es-pvc created
service/elasticsearch created
[root@k8s-master03 elk]# kubectl apply -f kibana.yaml 
deployment.apps/kibana created
service/kibana created

[root@k8s-master03 elk]# kubectl get pod -n ops 
NAME                                  READY   STATUS    RESTARTS   AGE
elasticsearch-549b496f94-hnj4v        1/1     Running   0          79s
grafana-757fcd5f7c-wdnt4              1/1     Running   0          90m
kibana-55c8979979-kxqgh               1/1     Running   0          72s

[root@k8s-master03 elk]# kubectl get svc -n ops 
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
elasticsearch        ClusterIP   10.106.236.50            9200/TCP            106s
grafana              NodePort    10.100.91.227            80:30030/TCP        90m
kibana               NodePort    10.109.229.66            5601:30601/TCP      99s
kube-state-metrics   ClusterIP   10.106.88.221            8080/TCP,8081/TCP   71m
node-exporter        ClusterIP   None                     9100/TCP            78m
prometheus           NodePort    10.108.216.228           9090:30090/TCP      104m

 

NodePort访问 http://172.16.0.21;30601 验证可以登录

技术图片

 

 

 

 

应用 filebeat 获取所有容器标准输出

[root@k8s-master03 elk]# kubectl apply -f filebeat-kubernetes.yaml 
configmap/filebeat-config created
configmap/filebeat-inputs created
daemonset.apps/filebeat created
clusterrolebinding.rbac.authorization.k8s.io/filebeat created
clusterrole.rbac.authorization.k8s.io/filebeat created
serviceaccount/filebeat created

[root@k8s-master03 elk]# kubectl  get pod -n ops | grep file
filebeat-7s9xq                        1/1     Running   0          41s
filebeat-qg7jw                        1/1     Running   0          41s

 

查看索引(日志记录集合):Management -> Stack Management -> 索引管理

 技术图片

 

 

 

 

将索引关联到Kibana:索引模式-> 创建-> 匹配模式-> 选择时间戳

技术图片

 

 

 

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 一般一个索引对应一个应用日志

导航至 discover

技术图片

 

 

 

  

基于条件过滤 (只看ops namespace下的pod日志)

kubernetes.namespace : "ops" 

技术图片

 

 

 

查看索引(日志记录集合):Management -> Stack Management -> 索引管理

Kubernetes Part6 ---- ELK Stack收集Kubernetes应用日志

标签:标准   模式   stat   集合   环境   map   发展   eth   控制   

原文地址:https://www.cnblogs.com/houcong24/p/14220600.html


评论


亲,登录后才可以留言!