工作流程
Logstash工作的三个阶段:
input数据输入端,以接收来自任何地方的源数据
* file:从文件中读取
* syslog:监听在514端口的系统日志信息, 并解析成RFC3164格式
* redis:从redis-server list中获取
* beat:接收来自Filebeat的事件
举例:从file文件输入:
Filter数据中转层, 主要进行格式处理, 数据类型转换、数据过滤、字段添加, 修改等, 常用的过滤器如下
* grok:通过正则解析和结构化任何文本Grok目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化,logstash内置了120个匹配模式, 满足大部分需求
* mutate:在事件字段执行一般的转换可以重命名、删除、替换和修改事件字段
* drop:完全丢弃事件, 如debug事件
* clone:复制事件, 可能添加或者删除字段
* geoip:添加有关IP地址地理位置信息
举例:过滤ip和时间戳
output数据输出端,是logstash工作的最后一个阶段, 负责将数据输出到指定位置, 兼容大多数应用, 常用的有:
* elasticsearch:发送事件数据到Elasticsearch, 便于查询, 分析, 绘图
* file:将事件数据写入到磁盘文件上
* mongodb:将事件数据发送至高性能NoSQL mongodb, 便于永久存储, 查询, 分析, 大数据分片
* redis:将数据发送至redis-server, 常用于中间层暂时缓存
* graphite:发送事件数据到graphitehttp://graphite.wikidot.com/
* statsd:发送事件数据到statsd
举例:
Logstash 输入输出规则:
* 输入规则:
- stdin ——> Logstash ——> stdout
- logfile ——> Logstash ——> stdout
- syslog ——> Logstash ——> stdout
- filebeat ——> Logstash ——> stdout
- kafka ——> Logstash(作为消费者) ——> stdout
* 输出规则:
- 输出到Elasticsearch
- 输出到kafka(作为生产者)