一、Logstash介绍
ELK stack任务栈中还有另外两个很关键的组件Logstash和Kibana;Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态的将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。Logstash支持多种数据的获取机制,通过TCP/UDP协议、文件、syslog、windows EventLogs及STDID等;获取到数据后,它支持对数据执行过滤、修改等操作,并把数据输出到用户指定的位置,Logstash是基于JRuby语言所研发,运行在JVM虚拟机上,运行架构为agent/server模式。
二、Logstash的工作流程
Logstash的工作流程由四类基础插件所执行;Input插件:采集各种样式、大小和来源的数据,数据往往以各种各样的形式、或分散或集中的存在于很多的系统中。Logstash支持各种输入选择,可以在同一时间从众多常用的数据来源获取数据,能够以连续的流式传输方式,轻松的从日志、指标、Web应用、数据存储以及各种AWS服务采集数据。
Filter过滤器:实时解析和转换数据;数据从源传输到存储库中,Logstash过滤器能够解析各个事件,识别已经命名的字段的构建结构,并将它们转换成通用的个数,以便更轻松、更快速的分析和实现商业价值。
Logstash能够动态的转换和解析数据,不受格式或复杂度的影响:
1)利用Grok从非结构化数据中派生出结构
2)从IP地址破译出地理坐标
3)将PII数据匿名化,完全排除敏感字段
4)整体处理不受数据源、格式或架构影响
Codec插件:用来对数据做解码编码,修改数据格式;
Output插件:对最后所得到的数据做输出进行存储,用户可以将数据发送到所指定的地方,例如输出到Elasticsearch中进行存储,也可以输出到标准输出;
Logstash所支持的数据类型:
Array:[item1,item2,…]
Boolean:true,false
Bytes:
Codec:编码器
Hash:key => value
Number:
Password:
Path:文件系统路径;
String:字符串
Logstash所支持的条件判断语句:
名称 | 符号 |
---|---|
等于 | == |
不等于 | != |
小于 | < |
大于 | > |
大于等于 | >= |
小于等于 | <= |
匹配正则 | =~ |
不匹配正则 | !~ |
包含 | in |
不包含 | not in |
与 | and |
或 | or |
非与 | nand |
非或 | xor |
复合表达式 | () |
取反符号 | !() |
三、Logstash应用
1)读取标准输入和标准输出
[root@node1 config]# vim stdin.conf
input {
stdin {
}
}
output {
stdout {
codec => rubydebug
}
}
[root@node1 config]# ../bin/logstash -f stdin.conf
Sending Logstash logs to /usr/local/logstash/logs which is now configured via log4j2.properties
[2019-12-14T20:54:12,970][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-12-14T20:54:12,999][INFO ][logstash.runner ] Starting Logstash {
"logstash.version"=>"6.6.2"}
[2019-12-