logstash-初涉

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值