K8S部署EFK收集pod日志,通过邮件报警ERROR【19】

网友投稿 344 2022-10-28

K8S部署EFK收集pod日志,通过邮件报警ERROR【19】

一般情况下我们都会在公司部署elk来收集服务的运行状态,可以直接让开发方便查看,不用登陆机器查看,另外也可以报警,方便快速问题定位。如果想要部署可以看一下我之前的文档部署,有结合redis和kafka的部署

二、架构选型存储层: Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。

展示层:Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 允许你通过 web 界面来浏览 Elasticsearch 日志数据。

缓存层: 需要收集大数据量的日志一般使用Redis、kafka做为中间缓存层来缓冲数据。

采集层:

Fluentd:是一个流行的开源数据收集器, 具有众多插件,通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。Fluentd-bit: 更适用于嵌入设备等资源受限的场景。占用系统资源较少,在插件可以满足需求的同时,无疑是更好的选择。另外Fluent Bit 提供了输出插件,可以把数据发给 Fluentd,因此他们可以在系统中作为独立服务互相协作。对比如下

【备注】:日志采集工具--Logstash、Filebeat、Fluentd、Logagent对比集群yaml文件我已经上传到了百度盘,可以直接下载使用,记得修改报警邮件的授权码

链接:提取码:ap6h

【注】这个参考 prometheus当中的部署,包也在百度盘

使用3个 Elasticsearch Pod 来避免高可用下多节点集群中出现的“脑裂”问题

创建一个名为 logging 的 namespace:

kubectl create namespace logging

kubectl create -f elasticsearch-svc.yaml

访问一下kibana

编写fluentd的ConfigMap文件

kubectl create -f fluentd-configmap.yaml

刚才我们使用ConfigMap对象编写的Fluentd的配置文件,也已经通过volumes 挂载到了Fluentd 容器中。我们也可以通过给节点打标签的方式,灵活控制哪些节点的日志可以被收集。在上面文件中我们定义了nodeSelector字段,来收集集群中含有这个beta.kubernetes.io/fluentd-ds-ready: "true"标签的节点日志。

为需要收集日志的节点添加标签

kubectl label nodes k8s-node1 beta.kubernetes.io/fluentd-ds-ready=truekubectl label nodes k8s-node3 beta.kubernetes.io/fluentd-ds-ready=true

kubectl label nodes k8s-master beta.kubernetes.io/fluentd-ds-ready=true kubectl get nodes --show-labels

使用Daemonset部署Fluentd Podkubectl create -f fluentd-daemonset.yaml

测试应用日志收集

比如我们启动一个nginx看一下如何收集我们指定了只收集具有logging=true标签的Pod日志

好了今天就先到这里欢迎留言评论

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)上
下一篇:Spring Data Jpa多表查询返回自定义实体方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~