Logstash 是一款强大的数据处理工具,它能够实现数据传输,格式处理,格式化输出,还有强大的插件功能,经常使用于日志处理。redis
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。
Logstash的理念很简单,它只作3件事情:
别看它只作3件事,但经过组合输入和输出,能够变幻出多种架构实现多种需求。这里只抛出用以解决日志汇总需求的部署架构图:
解释术语:
不管是Shipper仍是Indexer,Logstash始终只作前面提到的3件事:
一个Logstash进程能够有多个输入源,因此一个Logstash进程能够同时读取一台服务器上的多个日志文件。Redis是Logstash官方推荐的Broker角色“人选”,支持订阅发布和队列两种数据传输模式,推荐使用。输入输出支持过滤,改写。Logstash支持多种输出源,能够配置多个输出实现数据的多份复制,也能够输出到Email,File,Tcp,或者做为其它程序的输入,又或者安装插件实现和其余系统的对接,好比搜索引擎Elasticsearch。
总结:Logstash概念简单,经过组合能够知足多种需求。