Logstash-工作原理
Logstash工作原理
Logstash 处理管道有三个阶段:输入→过滤器→输出,输入生成事件,过滤器修改它们,然后输出将它们发送到其他地方。输入和输出支持编解码器,使你能够在数据进入或离开管道时对其进行编码或解码,而无需使用单独的过滤器。
输入(Inputs)
可以通过输入组件将数据发送给Logstash。下面是一些常见的输入途径:
1)文件:从文件系统的文件中读取,如UNIX命令tail -0F
2) syslog: 在514端口上监听系统日志消息并根据RFC3164格式进行解析
3)redis: 通过使用redis通道和列表从redis数据库服务器获取数据。Redis通常被用作集中式Logstash的缓存(“broker”),以消息队列的方式搬运事件输入到远端Logstash。
4) beats: 处理Beats发送的事件,beats包括filebeat, winlogbeat等。
过滤器(filter)
过滤器是Logstash管道中间处理部件。如果事件符合特定条件,则可以将过滤器与条件语句结合使用以对事件执行操作。一些有用的过滤器包括:
1)grok: 解析和构造任意的文本,Grok是目前Logstash中解析非结构化数据到结构化和可查询数据最好的插件。在内置的120中模式中,就很有可能找到一个满足你的需要的模式。
2)mutate: 对事件字段进行常规转换,可以重命名,删除,替换和修改事件中的字段。
3)drop: 删除整个事件数据,例如删除debug事件。
4)clone: 制作事件的副本,可能删除和添加字段。
5)geoip: 添加有关IP地址的地理位置信息(可以在kibana中展现绚丽的图表)。
输出(Outputs)
输出是Logstash管道的最后一个阶段。事件消息可以经过多个输出接收端,一旦所有的输出都处理完成,就完成了它的任务。一些常用的输出包括:
1) elasticsearch:将事件数据发送给Elasticsearch。可以高效,方便且易于查询的格式保存数据...... Elasticsearch是最佳选择方式。 2) file:将事件数据写入磁盘上的文件。 3) graphite:将事件数据发送到graphite,一个很流行的用于存储和绘制指标的开源工具。 4) statsd:将事件数据发送到statsd,这是一种侦听统计信息的服务。通过UDP发送并将聚合发送到一个或多个可插入后端服务,如计数器和定时器。
编解码器
编解码器可以作为输入或输出的基本流过滤器的一份子。使用编解码器可以轻松地分割传送过来的已经被序列化的数据。流行的编解码器包括json, msgpack和plan(text)。 1)json:以JSON格式对数据进行编码或解码。 2)multiline:将多行文本事件合并到一个单一的行。例如:java异常和堆栈跟踪消息。
执行模型
Logstash事件通过管道的方式协调输入,过滤器和输出组件的执行。
Logstash管道中的每个输入阶段都在自己的线程中运行,输入将事件写入位于内存(默认)或磁盘上的中央队列,每个管道工作线程从这个队列中取出一批事件,通过配置的过滤器运行事件批处理,然后通过任何输出运行过滤的事件,可以配置批处理的大小和管道工作线程的数量。
默认情况下,Logstash使用有限内存队列在管道之间(输入→过滤器和过滤器→输出)来缓冲事件,如果Logstash不安全的终止,则存储在内存中的任何事件都将丢失。为了防止数据丢失,你可以启用Logstash将运行中的事件持久化到磁盘上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)