logstash-初涉

来源:互联网 发布:全国地图软件下载 编辑:程序博客网 时间:2024/05/18 16:55

logstash是一个分布式日志收集框架

分布式:把一个系统根据功能分模块分在多个服务器上运行,就叫分布式。

它的功能很强大,可以用来支持canal等项目。

首先,顾名思义,logstash就是一个日志收集的框架。你去官网上把Logstash下载下来,进行配置,就可以用了。

进入bin目录下,logstash的启动命令为: logstash -f conf/test.conf #后面跟的参数是配置文件的所在地址和文件名。


其中在配置文件text.conf中,主要分为input,filter,output三部分。


input:输入可以源自于某个文件,它可以监听log文件的状态,捕获到新增的log信息。因为logstash被ElasticSearch收购了,所以输入好像用ElasticSearch也很和谐。

filter过滤器:它可以将log根据不同的格式过滤,对log进行格式转换。

output:输出到某个存储系统,或临时中转系统,如mysql,redis,mq(消息中间件)等等。

配置output到mq的配置文件:

output {rabbitmq {exchange => "exchaneg-name"exchange_type => "topic"host => "121.40.30.150"key => "routting-key-name"user => "user-name"password => "password"port => "your-port"vhost => "vhost"connection_timeout => "3000"}}

其中filter中:

if:可以使用If条件,搭配drop{}方法,丢弃掉不符合格式的Log.

if里面可以使用#, in, not , ==, !=, <=, >=, <, >, =~, !~, and, or, xor, nand这几类判断符号。

=~后面加正则表达式

grok:是logstash中比较经典的东西,可以随心的从原本log中获取到有价值的信息,并按照你想要的格式对其进行格式的重新排列。

 我所做的项目由于逻辑简单 并没有用起来grok这个东西,只使用了

grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}
意为把获取的log封装一下。grok使用的是自己的正则,它的正则规律在grok-pattern文件中进行定义,你也可以自定义一下正则表达式。

举个例子对于下面这条日志

55.3.244.1 GET /index.html 15824 0.043

可以这样解析:

filter {    grok {        match=>{ "message"=>"%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

将会得到这样的结果

* client: 55.3.244.1* method: GET* request: /index.html* bytes: 15824* duration: 0.043
其中IP,WORD,NUMBER等都是在grok-pattern文件里面定义过的正则,可以直接用来使用,非常方便。
                                             
0 0
原创粉丝点击