使用Elasticsearch、Kibana、Logstash和Filebeat搭建日志管理系统
使用Elasticsearch、Kibana、Logstash和Filebeat搭建日志管理系统
在本篇文章中,我们将探讨如何使用Elasticsearch、Kibana、Logstash和Filebeat搭建一个日志管理系统。虽然网络上有很多关于ELK和EFK搭建的教程,包括官方的教程,但是在实际操作中,仍然可能遇到一些问题。这篇文章将记录我在搭建过程中遇到的一些问题和解决方法。
搭建教程
以下是一些有用的资源:
官方教程:这个教程主要使用
docker-compose
进行搭建。我的GitHub仓库:这个仓库包含了一些我自己写的配置,其中
elk-config
包含了部署的配置,filter
记录了请求日志。
遇到的问题和解决方法
1. Elasticsearch版本问题导致证书错误
如果你使用的是Elasticsearch 8.x
版本,在部署的时候直接拷贝yml
配置可能会出现证书错误。有几种解决方法:
- 参考官方教程,在
docker-compose
中创建Elasticsearch
的时候生成证书并配置yml
文件。 - 手动生成证书,然后拷贝出来,配置
Elasticsearch yml
。 - 使用自己申请的CA证书。
2. Logstash不支持密码验证连接
解决这个问题的方法有两种:
- 服务器端口指定IP访问。
- 使用SSL进行验证,也就是创建证书进行配置,客户端需要证书才能连接到
Logstash
。
3. Logstash和MDC的结合使用
Logstash
可以和MDC
(Mapped Diagnostic Context)结合使用。在MDC
中添加的内容无需在logback
中配置日志格式,Logstash
也能够读取,并且会自动转换成JSON
格式。
4. Logstash的实时推送性能要求高
在测试过程中,我发现即使Logstash
采用异步方式,其性能仍然不是很好。为了减轻客户端和服务器端的压力,我改用了Filebeat
。Filebeat
不会增加客户端的性能压力,对于服务器端,Filebeat
会自动进行调节。此外,日志首先记录在本地文件中,然后通过Filebeat
传输到Elasticsearch
,这样就不会丢失日志。
5. 告警设置使用ElastAlert2
告警规则主要是根据状态码来设置,例如排除一些301、404等常见的状态码,主要关注400、500等错误状态码。我使用的是ElastAlert2
进行告警设置,可以配置通过邮件发送告警。
结语
以上就是我在使用Elasticsearch
、Kibana
、Logstash
和Filebeat
搭建日志管理系统过程中遇到的一些问题和解决方法。希望这些信息对你有所帮助。如果你有任何问题或者建议,欢迎留言交流。