自动运维|logstash收集syslog及保存实践 – 作者:database

什么是logstash?

ELK号称日志聚合分析全家桶,三个字母分别代表Elasticsearch、Logstash、Kibana,Elasticsearch侧重数据的搜索、分析和存储,Kibana主要是为Elasticsearch提供可视化的web操作页面,Logstash能动态地采集、转换和传输数据,可收集并处理日志数据并发送到Elasticsearch(或者数据库存储等)。

Logstash数据处理过程

Logstash数据处理过程主要包括:Inputs、Filters和Outputs,每个过程都有丰富的插件可供使用,可以方便处理多种数据源、数据格式并输出到多种存储中。

Inputs用于从数据源接收、获取数据,常见插件如file、syslog、redis、beats等。

Filters用于转换、处理数据,常见插件如grok、mutate、drop、ruby等。

Outputs用于数据输出,常见插件如elasticsearch、file等。

另外,Codecs作为一个单独组件,可以用于Inputs、Outputs流程中,对数据进行编码处理,常见插件如json、multiline。

以上数据处理过程及插件使用可以通过配置方便组合选用,适配多种应用场景。

应用场景: Logstash收集syslog日志,

并保存到MySQL数据库

syslog日志数据格式说明:

image.png

数据接收配置:

Logstash接收数据采用syslog插件,接收端口为514,默认使用tcp协议,配置如下:

image.png

数据转换配置:

Logstash接收到的syslog消息内容示例如下:

XXX SYS1~2020-05-22T09:30:00~APP1~error~数据异常。

通过filter配置,将日志信息中的各个字段提取出来,这里使用ruby进行解析,还有grok等其他插件也可实现此功能,具体配置如下:

image.png

以上代码整体逻辑是: 

– 将日志信息用分隔符“~”切分开。

– 将切分后的字段与字段key组合成字典格式,生成这样的格式{“header”: “XXX SYS1”, “time”: “2020-05-22T09:30:00”, ……}    

 – 如果格式符合,将如上字典内容添加到event对象中,并在event对象中的tags数组中增加“_sys1”字符串。

数据输出配置:

这部分主要是将上文解析、转换的数据进行输出,如下配置,配置了stdout标准输出和mysql数据库两个输出地址。

image.png

通过rsyslog上报syslog信息,可以看到输出结果如下:

1. stdout标准输出情况:

image.png

其中,字段message为输入原始日志信息,字段header、time、type、level、info字段为日志数据提取信息。

2.mysql数据库存储情况

image.png

美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

来源:freebuf.com 2020-05-29 11:49:01 by: database

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论