返回

logstash搭建与实践

后端

1. 搭建环境

由于项目需要,选择了使用 docker 作为部署环境,简单方便。logstash 官方提供了基于 docker 的镜像,可以通过以下命令启动一个 logstash 容器:

docker run -it --rm -p 5044:5044 -p 9600:9600 --name logstash logstash:latest

其中,5044 端口是 logstash 的数据输入端口,9600 端口是 logstash 的 web 管理端口。启动容器后,可以使用浏览器访问 http://localhost:9600 来管理 logstash。

2. 配置 logstash

logstash 的配置文件位于 /etc/logstash/conf.d 目录下,可以通过编辑该目录下的配置文件来配置 logstash。logstash 的配置文件使用 JSON 格式,可以参考官方文档来进行配置。

2.1 输入插件

logstash 支持多种数据输入插件,常用的有 file、tcp、udp、syslog 等。在本次项目中,我们使用了 file 插件来读取本地文件。file 插件的配置如下:

input {
  file {
    path => "/var/log/nginx/access.log"
    type => "nginx"
  }
}

2.2 过滤器插件

logstash 支持多种数据过滤器插件,常用的有 grok、mutate、geoip 等。在本次项目中,我们使用了 grok 插件来解析 nginx 日志。grok 插件的配置如下:

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

2.3 输出插件

logstash 支持多种数据输出插件,常用的有 elasticsearch、kafka、stdout 等。在本次项目中,我们使用了 elasticsearch 插件来将日志数据输出到 elasticsearch 集群。elasticsearch 插件的配置如下:

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "nginx-%{+YYYY.MM.dd}"
  }
}

3. 实践探索

在搭建好 logstash 环境并配置好 logstash 配置文件后,就可以启动 logstash 容器并开始处理日志数据了。在 logstash 容器中,可以使用以下命令来启动 logstash:

logstash -f /etc/logstash/conf.d/logstash.conf

启动 logstash 后,就可以使用浏览器访问 http://localhost:9600 来查看 logstash 的运行状态。在 web 管理界面中,可以查看 logstash 的输入、过滤器、输出插件的运行情况,还可以查看日志数据在各个插件之间的处理情况。

通过对 logstash 的深入研究,我们解锁了一些非常有趣的功能,甚至产生了一些骚操作的可能性。例如,我们发现 logstash 可以通过使用 mutate 插件来修改日志数据,甚至可以将日志数据中的敏感信息进行脱敏处理。另外,我们还发现 logstash 可以通过使用 geoip 插件来将日志数据中的 IP 地址转换为地理位置信息,从而可以在地图上查看日志数据的来源分布情况。

4. 总结

logstash 是一款非常强大的日志处理工具,它可以满足各种各样的日志处理需求。通过对 logstash 的深入研究,我们解锁了不少非常有趣的功能,甚至产生了一些骚操作的可能性。在以后的项目中,我们会继续探索 logstash 的更多功能,并将其应用到实际项目中。