logstash开源日志管理系统-2-logstash配置语言介绍

接着上面一篇,今天说一下logstash配置文件的基本语法,相信看过昨天那篇的人,应该会对logstash的配置有那么点点感性的理解,但是还是不够详细,所以今天要详细的说说,关于语法什么的是比较枯燥的,所以本身没有什么太多讲的,只要准确无误,则就基本对得起读文章的人了,所以我这里基本都是引用logstash的官方文档,如果您有什么疑惑,可以直接看官方文档,http://logstash.net/docs/1.3.2/configuration ,看文档,实际上一个程序员最基本的素养,ok,现在就来细细的说说logstash的语法细节。
1.在logstash配置文件
我们可能注意到它的官网或是其他写logstash的人都会说到什么负责日志收集的logstash,和什么负责处理处理日志的logstash,但实际上无论作为shipper的logstash还是作为indexer的logstash只与其配置文件有关,所以我只要掌握了logstash的配置文件的写法就可以很好的使用它来收集并处里日志了。
其配置文件一般分为三部分,大致如下:

 input { #输入到logstash中的内容,
     ... 
    } 
filter {#拦截器,logstash对指定的内容进行拦截,然后收集这些指定的内容
     ... 
   } 
output {#输出,logstash将收集到的日志内容输出到指定输出中
     ... 
   }

从这我们就能看出来logstash的配置实际上只有三大块,而组成这三大块的就是logstash比较强大的插件,比如redis,elsticsearch,log4j,grok,grep等等,如下就指定了两个文件类型的输入(input)插件。
input {
 file {
       path => "/var/log/messages" 
       type => "syslog" 
 } 
   file { 
        path => "/var/log/apache/access.log" 
        type => "apache" 
    } 
}


这个就是指定了file插件,来处理file类型的日志。
3.值类型:
同时logstash配置语言也像普通语言一样,是具有值类型的,大概分为
Boolean,sting,array,number,hash。
4..值引用:
在logstash中的所有属性叫做字段。


5.格式化:
可以通过动态的指定格式来保存输出的日志,例如下面的配置就是使用返回的状态值来动态的格式输出保存apache日志:


output { 
   statsd {
       increment => "apache.%{[response][status]}" 
      } 
 }
我们再开看一个logstash来处理时间格式的,
output {
 file { 
 path => "/var/log/%{type}.%{+yyyy.MM.dd.HH}" 
 }
 }
6.条件语句
在logstash中也可以使用条件语句,其语法如下:
if EXPRESSION {
 ... 
} else if EXPRESSION {
 ... 
} else { 
... 
}
6.1.同时条件语句支持的比较运算符如下;
equality, etc: == != < > <= >=
regexp: =~ !~
inclusion: in, not in
boolean运算符如下:
and, or, nand, xor
6.3.同时判断条件也可以是一个,表达式,例如:
filter {
 if [action] == "login" {
 mutate { remove => "secret" }
 }
 }
一元运算符如下:
!

6.4.同时也可以使用正则表达式来进行判断。官方示例如下:
output {
       if [type] == "apache" {
       if [status] =~ /^5\d\d/ { 
        nagios { ... } 
       } else if [status] =~ /^4\d\d/ { 
      elasticsearch { ... } 
   }
     statsd { increment => "apache.%{status}" }
    }
 }
6.5.在logstash中也可以使用多个表达式来进行判断,范例如下:
output {
 # Send production errors to pagerduty 
 if [loglevel] == "ERROR" and [deployment] == "production" { 
 pagerduty {
 ... 
 }
 } 
}
这大概就是logstash的配置文件的基本语法,明天或者今晚我还会再讲讲如何在实际的场合中搭建logstash,同时使用redis,kibana,elasticsearch,logstash来搭建真正的日志收集系统。
转载注明出处,谢谢,同时也可以关注我的公众帐号:程序猿不是于小炳,





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值