使用Elasticsearch、Kibana、Logstash和Filebeat搭建日志管理系统

2024 年 5 月 9 日 星期四(已编辑)
5

使用Elasticsearch、Kibana、Logstash和Filebeat搭建日志管理系统

使用Elasticsearch、Kibana、Logstash和Filebeat搭建日志管理系统

在本篇文章中,我们将探讨如何使用Elasticsearch、Kibana、Logstash和Filebeat搭建一个日志管理系统。虽然网络上有很多关于ELK和EFK搭建的教程,包括官方的教程,但是在实际操作中,仍然可能遇到一些问题。这篇文章将记录我在搭建过程中遇到的一些问题和解决方法。

搭建教程

以下是一些有用的资源:

  1. 官方教程:这个教程主要使用docker-compose进行搭建。

  2. 我的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采用异步方式,其性能仍然不是很好。为了减轻客户端和服务器端的压力,我改用了FilebeatFilebeat不会增加客户端的性能压力,对于服务器端,Filebeat会自动进行调节。此外,日志首先记录在本地文件中,然后通过Filebeat传输到Elasticsearch,这样就不会丢失日志。

5. 告警设置使用ElastAlert2

告警规则主要是根据状态码来设置,例如排除一些301、404等常见的状态码,主要关注400、500等错误状态码。我使用的是ElastAlert2进行告警设置,可以配置通过邮件发送告警。

结语

以上就是我在使用ElasticsearchKibanaLogstashFilebeat搭建日志管理系统过程中遇到的一些问题和解决方法。希望这些信息对你有所帮助。如果你有任何问题或者建议,欢迎留言交流。

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...