ELK
Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。怎么样听起来挺厉害的吧?
在一个典型的使用场景下(ELK):用Elasticsearch作为后台数据的存储,kibana用来前端的报表展示。Logstash在其过程中担任搬运工的角色,它为数据存储,报表查询和日志解析创建了一个功能强大的管道链。Logstash提供了多种多样的 input,filters,codecs和output组件,让使用者轻松实现强大的功能。好了让我们开始吧
官网文档:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
安装环境:centos7 java1.8
1.安装
[root@localhost etc]# yum install logstash
[root@localhost etc]# systemctl start logstash.service
2.运行
[root@localhost ~]# cd /usr/share/logstash/
[root@localhost logstash]# bin/logstash -e 'input { stdin { } } output { stdout {} }'
hello world
2017-06-15T21:05:42.455Z localhost.localdomain hello world
以上例子我们在运行logstash中,定义了一个叫”stdin”的input还有一个”stdout”的output,无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符。这里注意我们在命令行中使用了-e参数,该参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。
让我们再试个更有意思的例子。首先我们在命令行下使用CTRL-C命令退出之前运行的Logstash。现在我们重新运行
[root@localhost logstash]# bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'
goodnight moon
{
"@timestamp" => 2017-06-15T21:11:21.118Z,
"@version" => "1",
"host" => "localhost.localdomain",
"message" => "goodnight moon"
}
以上示例通过重新设置了叫”stdout”的output(添加了”codec”参数),我们就可以改变Logstash的输出表现。类似的我们可以通过在你的配置文件中添加或者修改inputs、outputs、filters,就可以使随意的格式化日志数据成为可能,从而订制更合理的存储格式为查询提供便利。
Logstash管道有两个必需的组件,input和output以及一个可选的组件,filters。 input组件收集来自源地址的数据,filters组件按照指定的方式修改数据,然后通过output组件将数据写入到目的地。
使用Elasticsearch存储日志
现在,你也许会说:”它看起来还挺高大上的,不过手工输入字符,并把字符从控制台回显出来。实际情况并不实用”。说的好,那么接下来我们将建立Elasticsearch来存储输入到Logstash的日志数据。如果你还没有安装Elasticsearch,你可以下载RPM/DEB包或者手动下载tar包,通过以下命令: