作者: 趙怡
a) 安裝、配置Kibana
安裝:
添加kibana的yum源: rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch /etc/yum.repos.d/kibana.repo [kibana-4.5] name=Kibana repository for 4.5.x packages baseurl=http://packages.elastic.co/kibana/4.5/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
# 通過yum安裝kibana # sudo yum install kibana -y |
配置:
無 |
啓動:
# sudo systemctl daemon-reload # sudo systemctl enable kibana.service # sudo systemctl start kibana.service |
使用:
先可以通過以下命令確認elastic search是否已經獲取到logstash上的index數據信息。 # curl 'localhost:9200/_cat/indices?v' health status index pri rep docs.count docs.deleted store.size pri.store.size yellow open .kibana 1 1 6 1 30.3kb 30.3kb yellow open nova-index 5 1 2674455 0 721.6mb 721.6mb yellow open neutron-index 5 1 32665606 0 10.9gb 10.9gb |
WEB頁面訪問: http://KIBANA_IP:5601
剛進入頁面時, 會要求你輸入index名字, 可以填入neutron-index, 以及nova-index, 並按CREATE。
進入Discover頁面, 查看歷史以及實時的LOG, 其中:
1. 右上角可以配置頁面刷新速率以及顯示數據的時間段
2. 上方有一個搜索欄, 可以填入查詢語句進行內容過濾, 對於log源, 一般可以通過ERROR OR WARN* OR TRACE
過濾出ERROR, WARN, TRACE的log。
3. 左側可以選擇需要顯示的列表字段, 以及各字段中出現頻率最高的內容。字段主要有: 消息獲取時間, log消息從哪個host來的, log文件路徑, log類型, log消息的具體內容等等。
配置頁面數據刷新時間:
配置數據顯示的時間段:
頁面數據過濾和列表顯示項:
通過Visualize界面可以根據數據創建各種圖表:
2. 如何在Python中調用ELK接口
ElasticSearch提供了完全的RestAPI接口, 可以對接第三方軟件。
API接口文檔託管在GITHUB上: https://github.com/elastic/elasticsearch/tree/master/rest-api-spec/src/main/resources/rest-api-spec/api
如果使用Python來調用ElasticSearch做搜索, 可集成pyelasticsearch庫來實現, 示例如下:
#!/bin/python
from pyelasticsearch import ElasticSearch
es = ElasticSearch('http://127.0.0.1:9200/')
result = es.search('ERROR OR WARN* OR TRACE', index='neutron-index')
print result
執行:
# ./es-search.py {u'hits': {u'hits': [{u'_score': 0.9617385, u'_type': u'neutron', u'_id': u'AVZ9KOqvuRi2TVAok7PV', u'_source': {u'type': u'neutron', u'@timestamp': u'2016-08-12T05:10:48.133Z', u'host': u'EXTENV-10-65-0-25', u'path': u'/var/log/neutron/server.log', u'message': u'2016-08-12 13:10:48.119 26577 WARNING keystonemiddleware.auth_token [-] Identity response: {"error": {"message": "An unexpected error prevented the server from fulfilling your request.", "code": 500, "title": "Internal Server Error"}}', .....} |