Logstash之二:原理

1、Logstash 介绍

Logstash 是一款强大的数据处理工具,它能够实现数据传输,格式处理,格式化输出,还有强大的插件功能,经常使用于日志处理。redis

 

2、工做流程

Logstash 工做的三个阶段:mongodb

 

input 数据输入端,能够接收来自任何地方的源数据。缓存

  • file:从文件中读取服务器

  • syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。架构

  • redis:从redis-server list 中获取elasticsearch

  • beat:接收来自Filebeat的事件工具

 

Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,经常使用的过滤器以下。性能

  • grok: 经过正则解析和结构化任何文本。Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,知足大部分需求。大数据

  • mutate: 在事件字段执行通常的转换。能够重命名、删除、替换和修改事件字段。搜索引擎

  • drop: 彻底丢弃事件,如debug事件。

  • clone: 复制事件,可能添加或者删除字段。

  • geoip: 添加有关IP地址地理位置信息。

 

output 是logstash工做的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,经常使用的有:

  • elasticsearch: 发送事件数据到 Elasticsearch,便于查询,分析,绘图。

  • file: 将事件数据写入到磁盘文件上。

  • mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。

  • redis:将数据发送至redis-server,经常使用于中间层暂时缓存。

  • graphite: 发送事件数据到graphite。http://graphite.wikidot.com/

  • statsd: 发送事件数据到 statsd。

3、 Logstash部署架构

Logstash的理念很简单,它只作3件事情:

  1. Collect:数据输入
  2. Enrich:数据加工,如过滤,改写等
  3. Transport:数据输出

别看它只作3件事,但经过组合输入和输出,能够变幻出多种架构实现多种需求。这里只抛出用以解决日志汇总需求的部署架构图:

 

解释术语:

  • Shipper:日志收集者。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存。
  • Indexer:日志存储者。负责从Redis接收日志,写入到本地文件。
  • Broker:日志Hub,用来链接多个Shipper和多个Indexer。

不管是Shipper仍是Indexer,Logstash始终只作前面提到的3件事:

  • Shipper从日志文件读取最新的行文本,通过处理(这里咱们会改写部分元数据),输出到Redis,
  • Indexer从Redis读取文本,通过处理(这里咱们会format文本),输出到文件。

一个Logstash进程能够有多个输入源,因此一个Logstash进程能够同时读取一台服务器上的多个日志文件。Redis是Logstash官方推荐的Broker角色“人选”,支持订阅发布和队列两种数据传输模式,推荐使用。输入输出支持过滤,改写。Logstash支持多种输出源,能够配置多个输出实现数据的多份复制,也能够输出到Email,File,Tcp,或者做为其它程序的输入,又或者安装插件实现和其余系统的对接,好比搜索引擎Elasticsearch。

总结:Logstash概念简单,经过组合能够知足多种需求。

相关文章
相关标签/搜索