【教你通透ELK】Logstash 输入、过滤器和输出插件

鱼弦: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示例实现,演示如何使用Logstash从文件中读取数据,过滤并输出到Elasticsearch:

  1. 准备一个样例数据文件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

这个文件包含了一些简单的日志信息,包括时间戳、日志级别、类名、日志消息等字段。

  1. 创建一个名为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中。

  1. 启动Logstash,指定配置文件:
bin/logstash -f logstash.conf

这将启动Logstash并加载logstash.conf配置文件。

  1. 在Elasticsearch中查看输出结果:
GET /logstash-2023.08.04/_search
{
  "query": {
    "match_all": {}
  }
}

这个查询将返回所有在今天保存到Elasticsearch中的日志数据,可以看到每个字段的值已经被正确识别和分离。

猜你喜欢

转载自blog.csdn.net/feng1790291543/article/details/132102675