官方
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
下载和文档:https://www.elastic.co/cn/logstash/
docker部署:https://hub.docker.com/_/logstash
为什么选择使用Logstash
1、集中、转换和存储数据
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
2、输入、过滤器和输出
Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用 Grok 从非结构化数据中派生出结构,从 IP 地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。
3、采集各种样式、大小和来源的数据
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择,可以同时从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
4、实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便进行更强大的分析和实现商业价值。
5、可以选择自己的存储库,导出需要的数据
尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
6、以自己的方式创建和配置管道
Logstash 采用可插拔框架,拥有 200 多个插件。您可以将不同的输入选择、过滤器和输出选择混合搭配、精心安排,让它们在管道中和谐地运行。
部署logstash
镜像拉取
docker pull logstash:7.17.9
部署
[root@test231 docker_data]# mkdir logstash
[root@test231 docker_data]# mkdir -p logstash/config/conf.d
[root@test231 docker_data]# cd logstash/config/conf.d
[root@test231 docker_data]# touch shininglog.conf
[root@test231 docker_data]# chmod -R 777 /home/docker_data/logstash
#–network=es-net \
docker run -d \
--name=logstash \
--restart=always \
-p 5044:5044 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/logs:/data/logs \
-v /home/docker_data/logstash/config:/usr/share/logstash/config \
-v /home/docker_data/logstash/data:/usr/share/logstash/data \
-v /home/docker_data/logstash/log/messages:/var/log/messages \
logstash:7.17.9
配置
input {
file {
#标签
type => "shining-plat-applet"
#采集点
path => "/data/logs/shining-plat-applet/*.log"
#开始收集点
start_position => "beginning"
#扫描间隔时间,默认是1s,建议5s
stat_interval => "5"
}
}
# filter {
# mutate {
# remove_field => ["host","_index","type","_id","_type","@version","path","_score"]
# }
#}
filter {
if [message] == "" or [message] == "\r"{
drop{}
}
}
output {
if ["type"] == "shining-plat-applet" {
elasticsearch {
hosts => ["10.255.20.231:9200"]
index => "shininglog-plat-applet-%{+YYYY.MM.dd}"
}
}
}
注意⚠️
我们使用的是docker容器,所以,一定要做输入数据源的来源文件映射,切记
配置说明
input: 输入管道
outerput: 输出管道
filter: 过滤管道
配置注意⚠️
输出管道 if [“type”] == “shining-plat-applet” ,一定要制定标签type,因为conf.d会有很多配置,如果不配置所有的输入源都会进入所有的输出管道,另一篇文章具体说明
当然,也可以用其他方式判断,比如:tags
如果节省一些空间,一些不必要的数据可以移除,使用filter过滤掉,比如使用mutate
还有一些不想输出的可以使用filter drop掉
外传
😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️+留言📝
💬格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥