logstash实际上是一个可以管理日志的玩意,它可以把你应用的日志进行收集,存储,并通过elasticsearch进行存储搜索,使繁琐的日志管理变得简单傻瓜式的,同时它也使用了一些分布式的技术,底层是java实现的,操作与部署也非常的简单,只要指定配置文件就可以进行工作,这是它的官网,http://logstash.net/ ,现在logstash已经归属到elasticsearch的大家庭里了,属于elasticsearch在日志处理方面的一个很好的实践。现在让我们先对它有一个简单的认识,所以我们现在要做的事情就是快速的把它搭建起来。
我们可以使用一台linux机器,来模拟分布式的日志处理。先安装java环境,这个读者可以直接到网上搜索,如何搭建,我这里就不详细说明了,之后我们需要下载logstash,http://logstash.net/ ,下载之后,他就是一个jar的大文件,所以基本不用动,我们把它下载到 /usr/local/ 下,然后在这里我们新建一个配置文件:
logstash-simple.conf
input{
stdin{}
}
output{
stdout{
codec => rubydebug
}
}
这一段代码是什么意思,在这先不说,等下一篇我再细细的讲logstash的基本配置语法。之后我们启动它:
java -jar logstash-1.3.2-flatjar.jar agent -f logstash-simple.conf
这时候我们稍等几秒种,等它基本启动之后,我们就可以尝试的在终端输入些字符,比如,“hello”什么的,之后我们在终端就会看到这样的json串,这实际上就模拟了logstash基本的日志输入输出形式。
input {
stdin { type => example }
}
output {
stdout { codec => rubydebug }
elasticsearch { embedded => true }
}
现在我们看看,这个配置文件,貌似明白了点什么了,实际上我们是指定了终端输入(input),为标准输入,又指定了输出(output),为标准输出,这实际上就是一个比较典型的分块的插件式配置文件。(详细的可以看后面的章节,我会慢慢的写,别急)
现在让我们看看如何使用logstash内置的elasticsearch(一种分布式搜索),这里我们只需要指定logstash的配置文件的output为内置的elasticsearch即可,配置文件如下:
input {
stdin { type => example }
}
output {
stdout { codec => rubydebug }
elasticsearch { embedded => true }
}
然后启动logstash:
java -jar logstash-1.3.2-flatjar.jar agent -f logstash-simple.conf
这时我们可以通过访问curl -s http://127.0.0.1:9200/_status?pretty=true | grep logstash,可以看到端口中的内容,这里顺便说一下,elasticsearch的默认端口是9200,所以我们可以通过访问9200端口来请求数据,
"logstash-2014.01.15" : {
"index" : "logstash-2014.01.15"
现在我们已经可以使用内置的elasticsearch来索引我们的数据,curl -gs -XGET "http://localhost:9200/logstash-*/_search?pretty&q=type:example"
就会看到这些如下的数据:
"_index" : "logstash-2014.01.15",
"_type" : "logs",
"_id" : "iARTN3MtQ-Kaf_x0fZaFwQ",
"_score" : 1.4054651, "_source" : {
"message": "fizzle",
"@timestamp": "2014.01.15T00:42:23.453Z",
"@version": "1",
"type": "example",
"host": "pork"
}
大概就是这个鸟样了,ok,下面我们再来看看,复杂点的,我们把配置文件,改成这样,让它来真正的收集点日志。
input {
stdin {
type => "stdin-type"
}
file {
type => "syslog"
path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
}
}
output {
stdout { }
elasticsearch { embedded => true }
}
这一次我们要用到logstash的超级炫的kibana3 web页面,我们只需要启动如下命令:
java -jar logstash-1.3.2-flatjar.jar agent -f logstash-simple.conf -- web
因为logstash内置里kibana,所以可以直接这样启动,然后访问http://127.0.0.1:9292端口,你就会看到一个很炫的web页面,这里说一下kibana,这个东西是一个js编写的web页面,可以部署在任何的服务器上,比如nginx,tomcat等等,这里我们是使用的logstash的内置kibana3,好了,我们现在已经对logstash有了一个感性的认识,我下一篇会讲一讲它真正的实际应用,如何收集日志。以及它的一些配置语言。另外也可以关注我的微信公众帐号:程序猿不是于小炳,来共同学习。共同进步。