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的數據