鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)
Logstash是一个用于数据处理、转换和传输的开源工具,它的架构包括三个主要组件:输入插件、过滤器和输出插件。输入插件负责从数据源收集数据,过滤器可以对数据进行加工、转换和清洗,输出插件将处理后的数据发送到目标系统。
输入插件:Logstash输入插件负责从数据源收集数据。Logstash支持多种输入插件,包括文件、网络、MQ、数据库等常见数据源。输入插件可以对数据进行解码、编码、压缩等操作,以确保数据的完整性和可用性。
过滤器:Logstash过滤器插件可以对输入的数据进行加工、转换和清洗。Logstash提供了多种内置的过滤器插件,例如grok、mutate、date等,可以对数据进行解析、字段提取、数据类型转换、日期格式化等操作。用户也可以编写自定义的过滤器插件,以满足特定的数据处理需求。
输出插件:Logstash输出插件将处理后的数据发送到目标系统。Logstash支持多种输出插件,包括Elasticsearch、Redis、Kafka、MySQL等常见目标系统。输出插件可以对数据进行格式化、压缩、加密等操作,以确保数据的可靠性和安全性。
Logstash常用于以下场景:
-
日志处理和分析:Logstash可以收集、解析和过滤各种应用和系统产生的日志数据,可用于日志监控、报表分析、故障排查等。
-
数据采集和ETL:Logstash可以从多种数据源中采集数据,并进行转换和清洗,可用于数据仓库、数据分析、BI等。
-
数据管道和流处理:Logstash可以将数据从一个系统传输到另一个系统,支持实时流式处理和批处理。
扫描二维码关注公众号,回复: 16157978 查看本文章
以下是一些有关Logstash输入、过滤器和输出插件的文献材料链接:
-
Logstash输入插件文档:Input plugins | Logstash Reference [8.9] | Elastic
-
Logstash过滤器插件文档:Filter plugins | Logstash Reference [8.9] | Elastic
-
Logstash输出插件文档:Output plugins | Logstash Reference [8.9] | Elastic
-
Logstash grok过滤器插件文档:Grok filter plugin | Logstash Reference [8.9] | Elastic
-
Logstash date过滤器插件文档:Date filter plugin | Logstash Reference [8.9] | Elastic
-
Logstash jdbc输入插件文档:Jdbc input plugin | Logstash Reference [8.9] | Elastic
-
Logstash文件输入插件文档:File input plugin | Logstash Reference [8.9] | Elastic
-
Logstash Elasticsearch输出插件文档:Elasticsearch output plugin | Logstash Reference [8.9] | Elastic
下面是一个简单的Logstash示例实现,演示如何使用Logstash从文件中读取数据,过滤并输出到Elasticsearch:
- 准备一个样例数据文件
sample.log
,内容如下:
2023-08-04 12:00:00,123 INFO [com.example.app] - Request received: GET /api/users/123
2023-08-04 12:00:01,234 ERROR [com.example.app] - Internal server error occurred
2023-08-04 12:00:02,345 WARN [com.example.app] - Slow response time: 500ms
这个文件包含了一些简单的日志信息,包括时间戳、日志级别、类名、日志消息等字段。
- 创建一个名为
logstash.conf
的配置文件,内容如下:
input {
file {
path => "/path/to/sample.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} \[%{DATA:class}\] - %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
这个配置文件指定了一个文件输入插件,一个grok过滤器插件和一个Elasticsearch输出插件。它将从/path/to/sample.log
文件中读取数据,使用grok过滤器将日志数据解析为各个字段,然后使用date过滤器将时间戳转换为Elasticsearch可接受的时间格式,并将处理后的数据输出到Elasticsearch中。
- 启动Logstash,指定配置文件:
bin/logstash -f logstash.conf
这将启动Logstash并加载logstash.conf
配置文件。
- 在Elasticsearch中查看输出结果:
GET /logstash-2023.08.04/_search
{
"query": {
"match_all": {}
}
}
这个查询将返回所有在今天保存到Elasticsearch中的日志数据,可以看到每个字段的值已经被正确识别和分离。