大數據處理解決方案中,有大量的分佈式系統,其日誌分散在集羣的各個節點,這就給跟進系統運行效果以及排錯帶來了很大的難度。
ElasticSearch是一個基於Lucene構建的開源,分佈式,RESTful搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。支持通過HTTP使用JSON進行數據索引。
logstash是一個應用程序日誌、事件的傳輸、處理、管理和搜索的平臺。你可以用它來統一對應用程序日誌進行收集管理,提供 Web 接口用於查詢和統計。
Kibana是一個爲 Logstash 和 ElasticSearch 提供的日誌分析的 Web 接口。可使用它對日誌進行高效的搜索、可視化、分析等各種操作。
這是一個Demo,在單臺PC上安裝並進行初步測試。測試通過後會進行統一規劃後,部署到生產環境。
搭建環境:
OS | Ubuntu Server 12.04 |
Java | Java 1.6.0_31 |
ElasticSearch | 1.0.1 |
Logstash | 1.3.3 |
Kibana | 3.0.0 |
一、安裝ElasticSearch
1. 下載最新版本的ElasticSearch
1 | wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.1.tar.gz |
2. 參考《分佈式搜索引擎Elasticsearch——安裝部署》
二、安裝Logstash
logstash分爲 index和agent ,agent負責監控、過濾日誌,index負責收集日誌並將日誌交給ElasticSearch 做搜索
1. 下載最新版本的Logstash
1
|
wget
https://download.elasticsearch.org/logstash/logstash/logstash-1.3.3-flatjar.jar
|
2. index配置文件:index.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | input { redis { host => '127.0.0.1' data_type => 'list' port => '6379' key => 'logstash:redis' type => 'redis-input' } } output { elasticsearch_http { host => '127.0.0.1' port => '9200' } } |
input設置從redis中獲取數據,output設置將數據輸出到ES。
啓動index:
1
|
java
-jar
/soft/logstash-1.1.0-monolithic.jar
agent
-f
./index.conf
>>
index.log
&
|
3. agent配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | input { file { type => "test" path => "~/opt/logstash/test" } } filter { grep { match => [ "message", "error" ] } } output { redis { host => '127.0.0.1' data_type => 'list' key => 'logstash:redis' } } |
- input設置從文件”~/opt/logstash/test” 中獲取最新的日誌數據;
- filter設置過濾條件,這裏的grep是隻獲取message中包含字段”error”的數據,有更多的高級語法,請到http://logstash.net/docs/1.3.3/學習;
- output設置收集到的數據輸出到redis中。
啓動agent:java -jar /soft/logstash-1.1.0-monolithic.jar agent -f ./agent.conf >> agent.log &
三、安裝Kibana
1. 下載新版Kibana
1
|
wget
https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz
|
2. 修改配置文件
解壓後,打開配置文件config.js。
設置elasticsearch鏈接地址爲:”http://localhost:9200″。(Demo在單機上,如果ES安裝在其他機器,則將localhost修改爲對應的機器地址)
3. 安裝配置Nginx web服務器
1 2 3 4 5 6 7 8 9 | server { listen 80; server_name elk.test.com; location / { root /home/[當前用戶名]/opt/kibana-3.0.0milestone5/; index index.html index.htm; } } |
4. 打開Kibana
配置host:127.0.0.1 elk.test.com;
在瀏覽器打開http://elk.test.com
四、測試系統效果
1. 新增日誌數據
1
2
|
echo
"error
3333"
>>
~/opt/logstash/test
echo
"test
elk"
>>
~/opt/logstash/test
|
2. 查看Kibana
第一條數據滿足filter,被錄入系統,第二條不滿足filter沒有錄入。
參考:
- http://www.elasticsearch.org
- http://logstash.net
- https://github.com/elasticsearch/kibana
- http://www.elasticsearch.org/overview/elkdownloads/
- http://demo.kibana.org/
- 升級Kibana到3.0 http://storysky.blog.51cto.com/628458/1336289
- 用Kibana和logstash快速搭建實時日誌查詢、收集與分析系統 http://storysky.blog.51cto.com/628458/1158707