tangbinde 发表于 2017-5-21 11:14:30

LogStash日志收集系统调研(三) -- LogStash常用配置

1.合并日志
部分日志在打印的时候由于格式问题分成多行打印的,但是实际上是一条日志,需要合并成一行显示。可以通过filter中的multiline。
filter {
  multiline {
    type => "type"   #类型
    pattern => "pattern, aregexp" #参数,也可以认为是字符,有点像grep ,如果符合什么字符就交给下面的 what去处理
    negate => boolean
    what => "previous" or "next" #这个是符合上面pattern 的要求后具体怎么处理,处理方法有两种,合并到上面一条日志或者下面的日志
  }
}
举例:
filter
{
    multiline
    {
        pattern => "^\s+"
        what => "previous"
    }
}
以上配置说明,以空格开始的行都合并到上一行。
2. 邮件
if [nginx_status] != "200"
{
    exec
    {
        command => "echo '%{@timestamp} %{clientip}: %{message}' | mail -slogstash_error XXXX@XXX.com"
    }
}
3.删除多余行(drop)
 if =~ /^[\s]*$/
 {
        drop {}
 }
以上配置为删除空白行。
4.结构化日志
对于格式固定的日志,可以使用filter中的grok对原日志进行结构化处理并解析出自己需要的信息,比如日志内容如下:
55.3.244.1 GET /index.html 15824 0.043
filter
{
     grok {
         match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ]
} }
通过该filter处理后,在输出的日志中就多出了一些额外的fields.
client: 55.3.244.1  、method: GET、request: /index.html、bytes: 15824 、duration: 0.043
页: [1]
查看完整版本: LogStash日志收集系统调研(三) -- LogStash常用配置