ELK可以完成如下功能:
l 根据关键字查询日志详情
l 监控系统的运行状况
l 统计分析,比如接口的调用次数、执行时间、成功率等
l 异常数据自动触发消息通知
l 基于日志的数据挖掘
ELK可以实现Splunk 基本功能
Splunk 是机器数据的引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备(物理、虚拟和云中)生成的快速移动型计算机数据 。从一个位置搜索并分析所有实时和历史数据。 使用 Splunking 处理计算机数据,可让您在几分钟内(而不是几个小时或几天)解决问题和调查安全事件。监视您的端对端基础结构,避免服务性能降低或中断。以较低成本满足合规性要求。关联并分析跨越多个系统的复杂事件。获取新层次的运营可见性以及 IT 和业务智能。
一、准备工具:
1、Elasticsearch:ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
elasticsearch 1.4.2下载地址:http://www.elasticsearch.org/download/
2、Logstash:是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
logstash-1.4.2.tar.gz下载地址http://www.elasticsearch.org/overview/logstash/download/
3:kibana: 是一个为 ElasticSearch 提供日志分析的 Web UI工具,可使用它对日志进行高效的搜索、可视化、分析等各种操作。
kibana 4 beta 3下载地址?http://www.elasticsearch.org /overview/kibana/installation/
(注意:版本一定要一致,否则可能会有产生一些问题)
二、安装
1、安装Elasticsearch
①解压elasticsearch-1.4.2.tar.gz
tar zxvf elasticsearch-1.4.2.tar.gz
②?进入到elasticsearch-1.4.2文件夹
cd elasticsearch-1.4.2
?③启动Elasticsearch
Run bin/elasticsearch on Unix,or bin/elasticsearch.bat on Windows
2、安装logstash
①解压logstash-1.4.2.tar.gz
tar zxvf logstash-1.4.2.tar.gz
②进入到logstash-1.4.2
cd logstash-1.4.2
③创建采集系统日志的配置文件logstash-syslog.conf
mkdir conf
vim conf/logstash-syslog.conf
监听5000端口的消息,logstash-syslog.conf内容如下
input {
tcp {
port => 5000
type => syslog
}
udp {
port => 5000
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_
pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
④启动logstash采集系统日志
./bin/logstash -f conf/logstash-syslog.conf
⑤向5000端口发送系统日志
telnet localhost 5000
Dec 23 12:11:43 louis postfix/smtpd[31499]: connect from unknown[95.75.93.154] Dec 23 14:42:56 louis named[16000]: client 199.48.164.7#64817: query (cache) ‘amsterdamboothuren.com/MX/IN‘ denied Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log) Dec 22 18:28:06 louis rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="2253" x-info="http://www.rsyslog.com.sixxs.org"] rsyslogd was HUPed, type ‘lightweight‘. |
⑥查看已启动的logstash收集5000端口日志的界面,会产生如下图所示信息:
3.安装Kibana
①解压kibana-4.0.0-beta3.tar.gz
tar zxvf kibana-4.0.0-beta3.tar.gz
?②进入kibana-4.0.0-beta3
cd kibana-4.0.0-beta3
③启动Kibana
./bin/kibana
④打开Kibana前台界面
http://192.168.14.136:5601或者http://localhost:5601
⑤搜索Mozi*
到目前为止ELK已经搭建完成。
三、通过logstash收集Linux系统日志
1、创建logstash-localsyslog.conf
vim conf/logstash-localsyslog.conf
将如下内容添加到logstash-localsyslog.conf中并保存:
input {
file{
type=>"syslog"
# 通配符在此适用:)
path=>["/var/log/messages","/var/log/syslog","/var/log/*.log"]
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_
pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
2、启动收集linux本地系统日志的logstash
./bin/logstash -f conf/logstash-localsyslog.conf
3、通过Kibana进行查询
4、Kibana可以选择查询某个时间段的数据
比如查询过去30min的数据