前言:隨着硬件成本的不斷低廉,咱們能夠存儲更多數據內容,也會對各數據加以利用,其中一項很重要的數據內容即是日誌文件,不管是訪問日誌仍是系統日誌或是應用日誌,都顯得十分重要,而怎麼加以利用一直是一個難題,本文就着重於ELK三套件的搭建,是比較流行或者說可靠的日誌分析組件,值得注意的說,本文暫時只考慮單機Elasticsearch,而且爲了做爲演示,就linux的系統日誌收集做爲演示。linux
版本說明:git
ElasticSearch 1.7.1github
Kibana 4..1ruby
Logstash 1.5.2bash
JAVA jdk-7u76服務器
注: 最新的上面不必定是最新的版本,不一樣的版本之間可能有兼容問題,而上面的組合是本人已經驗證過的了。app
首先放一張圖鎮鎮樓cors
強調:不要用IE瀏覽Kibana!!!運維
ELK下載地址:https://www.elastic.co/downloads curl
JAVA環境的安裝就不演示了!!!(推薦使用jdk-7u76-linux-x64.gz)
tar zxvf elasticsearch-1.7.1.tar.gz tar zxvf kibana-4.1.1-linux-x64.tar.gz tar zxvf logstash-1.5.2.tar.gz
值得注意的是,你能夠經過elastic提供的rpm包直接安裝,可是那對於一個運維人員太沒挑戰性了~~再者,對ELK的認識實在不夠深入。
下載elasticsearch-servicewrapper(是一個elasticsearch的啓動腳本)
#wget https://github.com/elastic/elasticsearch-servicewrapper/archive/master.zip
###經過這個腳本能夠更簡單執行Elasticsearch服務啓動關閉等命令
其中包括
Console 在前臺啓動
Start 在後臺啓動
Stop 關閉
Install 裝到啓動項裏面
Remove 移除卸載
開始安裝
mv elasticsearch-1.7.1 /data/elasticsearch unzip master.zip mv elasticsearch-servicewrapper-master/*/data/elasticsearch/bin/ mv logstash-1.5.2 /data/logstash mv kibana-4.1.1 /data/kibana
ELK三套件都是依賴JAVA環境並不須要編譯安裝,因此安裝其實很是簡單,只是有版本兼容問題因此部分人老是裝不上,再者ELK須要相關優化,否則就會老是拋出異常。
ELK中的E,elasticsearch一個全文搜索引擎,存儲着收集過來的全部數據並支持集羣模式,你只用真正的會用的時候你纔會體會到它的異常強大,雖然筆者也是剛剛深刻,可是又一次經過Python調用API查詢自安裝使用至今,查詢結果大於五萬條數據,嗖的一下就返回,沒有任何延遲,而且是結果聚合的數據,因而可知一斑,並且是單機版的。
配置elasticsearch
vi/data/elasticsearch/config/elasticsearch.yml
增長下面兩行
http.cors.enabled:true http.cors.allow-origin:http://ip(本機IP)
啓動Elasticsearch
/data/elasticsearch/bin/service/elasticsearch start
本地測試Elasticsearch
curl -X GET http://localhost:9200/ { "status" : 200, "name" : "Jack Flag", "cluster_name" :"elasticsearch", "version" : { "number" : "1.7.1", "build_hash" :"927caff6f05403e936c20bf4529f144f0c89fd8c", "build_timestamp" : "2015-07-16T14:11:12Z", "build_snapshot" : false, "lucene_version" :"4.10.2" }, "tagline" : "You Know, forSearch" }
ELK中的L指Logstash,是一個日誌收集應用,本文主要用來收集系統日誌,你固然也能夠用來解析各類日誌,如Tomcat,Nginx,MongoDB等相關應用日誌,此文檔做爲安裝文檔就不作演示了。
配置logstash
mkdir /data/logstash/conf/ vi /data/logstash/conf/sys.conf
input {
syslog{
port => "514"
type => "syslog"
}
}
output {
elasticsearch {
host => "127.0.0.1"
}
}
上面的信息是說,以syslog做爲輸入,監聽514端口,Type爲syslog,將接收的信息輸出到本機的elasticsearch。
若是你執行/data/logstash/bin/logstash -f /data/logstash/conf/sys.conf
你會發現本機監聽514端口,可是沒有用,由於沒有配置任何機器的rsyslog,其餘機器怎麼會發信息過來~
因此咱們配置一下,須要收集系統日誌的主機的rsyslog
yum -y install rsyslog vi /etc/rsyslog.conf ##加入下面一行,ip填日誌服務器的IP *.* @@ip:514
當你重啓被收集日誌主機的rsyslog,該主機就會往日誌服務器的514端口以syslog的格式發送系統日誌了。
由於是源碼安裝的,因此可能須要用& 或者nohup 或者本身寫的啓動腳本將logstash服務放到後臺,這裏推薦supverisor,後面的kibana也經過supervisor放到後臺。
#修改kibana配置文件
# vi/data/kibana/config/kibana.yml port: 80 ##改成80(默認監聽5601端口)
而後啓動kibana
/data/kibana/bin/kibana>/dev/null 2>&1 &
可是經過&或者nohup實在太不優雅了,咱們使用supervisor
yum -y install supervisor [program:kibana] command=/data/kibana/bin/kibana autorestart = true redirect = true stderr_logfile = /var/log/kibana/kibana.log startsecs = 3 [program:logstash] command=/data/logstash/bin/logstash -f /data/logstash/conf/logstash.conf -l /data/logstash/logstash_debug.log autorestart = true redirect = true stderr_logfile = /var/log/logstash/logstash.log startsecs = 3
至於supervisord的詳細配置,請參考:http://youerning.blog.51cto.com/10513771/1714627
最後啓動supervisord便可。
如今你就能夠訪問日誌服務器了。
第一次登錄,應該是下面的頁面
由於咱們沒有建立索引,因此他會提示咱們建立索引,點擊create便可,若是你沒有配置發送系統日誌的rsyslog你會發現,輸入框是紅色,不能create,這是由於elasticsearch沒有任何內容。
固然能夠手工的建立一條信息。
建立一個配置文件
vi hello.conf
input { stdin { type => "human" } } output { stdout { codec => rubydebug } elasticsearch { host => "127.0.0.1" } }
/data/logstash/bin/logstash -f hello.conf
在提示Completed以後,隨便輸入一條信息便可。
上面安裝完成後,你會發現kibana老是會出現紅色提示框"shards faild",因此須要相關優化
關於elasticsearch的優化
配置文件/data/elasticsearch/config/elasticsearch.yml增長一面內容
# Search pool
threadpool.search.type: fixed
threadpool.search.size: 20
threadpool.search.queue_size: 10000
系統優化
vi /etc/security/limits.conf
elasticsearch soft nofile 32000 elasticsearch hard nofile 32000 root hard nofile 32000 root soft nofile 32000
後記:好吧,安裝文檔就到這裏吧,關於Elasticsearch的API調用(主要經過Python)以及Kibana的使用在之後的內容文章會說到