clojure实战——基于logstash搭建日志数据获取与整理平台(2)

来源:互联网 发布:哪个网出售淘宝小号 编辑:程序博客网 时间:2024/04/30 14:35

clojure实战——基于logstash搭建日志数据获取与整理平台(2)

1. logstash简介

logstash是金牌搭档ELK中的“L”,它主要负责数据的收集、解析整理、传输。这对应体现在它的配置文件中的input、filter、output这三段配置。下面仅针对本次项目中需要使用到的地方做一个讲解,其他方面读者可自行到其官网查阅。

2. logstash使用

(1)运行一个logstash

使用logstash非常简单,从官网下载压缩包,解压,执行bin目录下的logstash执行文件,即可:

启动命令:

bin/logstash agent -f logstash-simple.conf

logstash-simple.conf是logstash启动时指定的配置文件,该文件是logstash的核心。

(2)编写conf文件

logstash的conf文件中定义了数据来源,过滤条件,输出目的地。另外logstash为这几个模块都提供了丰富的插件,可以使用这些插件实现自己的业务需求。其文件结构及插件的使用如下:

input {    file {        # file插件, 数据源来自日志文件test.log        # 指定文件路径        path => “/Users/admin/test/test.log”        # 起始位置,beginning会发送旧数据,end则不会        start_position => "end"        codec => plain {                    # plain插件,指定文件解析相关配置                    # 指定字符集为“GBK”                    charset => "GBK"                }    }}filter {    grok {        # grok插件,用于解析非json格式日志时使用,可以自定义匹配模式        # 指定模式文件地址        patterns_dir => "/Users/admin/test/testlogpatterns"        # 对日志内容进行模式匹配        match => ["message", "%{TESTPATTERN}"]        # 移除不需要的一些字段        remove_field => ["@version","@timestamp",message,host,path]    }}output {    http {        # http插件,通过http发送给数据需求者        http_method => "post"        # url地址        url => "http://192.168.5.109:8011/log"    }}

test.log示例文件内容如下:

method:method1,username:snailiu,age:20,message:my test log

testlogpatterns文件内容如下:

TESTPATTERN method:%{DATA:method-name},username:%{DATA:username},age:%{INT:user-age},message:%{DATA:msg}

其中,TESTPATTERN为该匹配模式的ID与filter中grok下的match => [“message”, “%{TESTPATTERN}”]相对应。

后面则是匹配模式,如 %{DATA:method-name} 会将匹配test.log文件中的“method1”字符串,并设别名为method-name,%{DATA:method-name} 会将匹配test.log文件中的20字符串,并设别名为user-age,且将20转为INT型。上述日志通过模式匹配之后应该返回为一个json结构:

{method-name: method1, username: snailiu, user-age: 20, message: my test log , host : $##$#$#$#$#, path: $#$#$#$#$#, @timestamp: XXXXXXXXXXX, @version: XXXX message: XXXXX}

而path,host这些是我们所不需要的,因此可用remove_field进行删除。如此,就完成了数据获取和整理流程。

最后,output中使用http插件,将获取到的数据发送给某一个第三方服务。

0 0
原创粉丝点击