Logstash 工作原理
编辑Logstash 工作原理
编辑Logstash 事件处理管道包含三个阶段:输入 → 过滤器 → 输出。输入生成事件,过滤器修改事件,输出将事件发送到其他地方。输入和输出支持编解码器,使您能够在数据进入或退出管道时对其进行编码或解码,而无需使用单独的过滤器。
输入
编辑您可以使用输入将数据导入 Logstash。一些常用的输入包括
-
file: 从文件系统上的文件读取数据,类似于 UNIX 命令
tail -0F
- syslog: 在众所周知的端口 514 上侦听 syslog 消息,并根据 RFC3164 格式进行解析
- redis: 从 redis 服务器读取数据,使用 redis 频道和 redis 列表。Redis 通常用作集中式 Logstash 安装中的“代理”,它对来自远程 Logstash “发送器” 的 Logstash 事件进行排队。
- beats: 处理由 Beats 发送的事件。
有关可用输入的更多信息,请参见 输入插件。
过滤器
编辑过滤器是 Logstash 管道中的中间处理设备。您可以将过滤器与条件语句结合使用,以便在事件满足特定条件时对其执行操作。一些有用的过滤器包括
- grok: 解析和构建任意文本。Grok 目前是 Logstash 中将非结构化日志数据解析成结构化且可查询数据的最佳方法。Logstash 内置了 120 种模式,您很可能会找到满足您需求的模式!
- mutate: 对事件字段执行通用转换。您可以重命名、删除、替换和修改事件中的字段。
- drop: 完全丢弃事件,例如,调试事件。
- clone: 创建事件的副本,可能添加或删除字段。
- geoip: 添加有关 IP 地址地理位置的信息(还在 Kibana 中显示令人惊叹的图表!)
有关可用过滤器的更多信息,请参见 过滤器插件。
输出
编辑输出是 Logstash 管道的最后阶段。一个事件可以经过多个输出,但是一旦所有输出处理完成,事件就完成了其执行。一些常用的输出包括
- elasticsearch: 将事件数据发送到 Elasticsearch。如果您计划以高效、便捷且易于查询的格式保存数据……Elasticsearch 是最佳选择。就是这样。是的,我们有偏见 :)
- file: 将事件数据写入磁盘上的文件。
- graphite: 将事件数据发送到 graphite,这是一种流行的开源工具,用于存储和绘制指标图表。 http://graphite.readthedocs.io/en/latest/
- statsd: 将事件数据发送到 statsd,这是一种“侦听统计信息(如计数器和计时器)、通过 UDP 发送统计信息并将聚合数据发送到一个或多个可插拔后端服务”的服务。如果您已经在使用 statsd,这可能对您有所帮助!
有关可用输出的更多信息,请参见 输出插件。
编解码器
编辑编解码器基本上是流过滤器,可以作为输入或输出的一部分运行。编解码器使您能够轻松地将消息的传输与序列化过程分离。常用的编解码器包括 json
、msgpack
和 plain
(文本)。
- json: 以 JSON 格式编码或解码数据。
- multiline: 将多行文本事件(例如 java 异常和堆栈跟踪消息)合并到单个事件中。
有关可用编解码器的更多信息,请参见 编解码器插件。