最近在學習ELK的時候踩了不少的坑,特此寫個筆記記錄下學習過程。
日志主要包括系統日志、應用程序日志和安全日志。系統運維和開發人員可以通過日志了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日志可以了解服務器的負荷,性能安全性,從而及時采取措施糾正錯誤。
通常,日志被分散的儲存不同的設備上。如果你管理數十上百台服務器,你還在使用依次登錄每台機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務器上的日志收集匯總。
集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
開源實時日志分析ELK平台能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。官方網站: https://www.elastic.co/products
- Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
- Logstash是一個完全開源的工具,他可以對你的日志進行收集、過濾,並將其存儲供以后使用(如,搜索)。
- Kibana 也是一個開源和免費的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
Elastic Stack 是 原 ELK Stack 在 5.0 版本加入 Beats 套件后的新稱呼。
Elastic Stack 在最近兩年迅速崛起,成為機器數據分析,或者說實時日志處理領域,開源界的第一選擇。和傳統的日志處理方案相比,Elastic Stack 具有如下幾個優點:
- 處理方式靈活。Elasticsearch 是實時全文索引,不需要像 storm 那樣預先編程才能使用;
- 配置簡易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 設計,都是目前業界最通用的配置語法設計;
- 檢索性能高效。雖然每次查詢都是實時計算,但是優秀的設計和實現基本可以達到全天數據查詢的秒級響應;
- 集群線性擴展。不管是 Elasticsearch 集群還是 Logstash 集群都是可以線性擴展的;
- 前端操作炫麗。Kibana 界面上,只需要點擊鼠標,就可以完成搜索、聚合功能,生成炫麗的儀表板。
安裝准備:
先安裝官方新版的Java,包括對應的Jdk並配置好環境變量,下載並解壓Elasticsearch,Logstash,Kibana。
安裝Elasticsearch:
1.編輯config/elasticsearch.yml文件
2.修改如下兩個參數
cluster.name: es
network.host: 0.0.0.0
3.創建用戶( Elasticsearch為了安全考慮,不讓使用root啟動)
4.保證虛擬機內存足夠,Elasticsearch默認需要2g內存。
5.安裝X-Pack
X-Pack是一個Elastic Stack的擴展,將安全,警報,監視,報告和圖形功能包含在一個易於安裝的軟件包中。在Elasticsearch 5.0.0之前,您必須安裝單獨的Shield,Watcher和Marvel插件才能獲得在X-Pack中所有的功能。(安裝需要點時間,請耐心等待)
bin/elasticsearch-plugin install x-pack
6.啟動Elasticsearch並訪問
安裝LogStash:
在終端中,像下面這樣運行命令來啟動 Logstash 進程:
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
待到啟動成功后
你會發現終端在等待你的輸入。沒問題,敲入 Hello World,回車,然后看看會返回什么結果!
結果:
部分解釋:
Logstash 會給事件添加一些額外信息。最重要的就是 @timestamp,用來標記事件的發生時間。因為這個字段涉及到 Logstash 的內部流轉,所以必須是一個 joda 對象,如果你嘗試自己給一個字符串字段重命名為 @timestamp
的話,Logstash 會直接報錯。
此外,大多數時候,還可以見到另外幾個:
- host 標記事件發生在哪里。
- type 標記事件的唯一類型。
- tags 標記事件的某方面屬性。這是一個數組,一個事件可以有多個標簽。
安裝Kibana:
1.安裝X-Pack
bin/kibana-plugin install x-pack
安裝過程會比較久,耐心等待。
2.修改配置文件(config/kibana.yml)
server.host: 192.168.25.129 (你安裝Kibana當前機子的IP)
elasticsearch.url: "http://127.0.0.1:9200" (ES的地址)
kibana.index: ".kibana" (索引名稱)
elasticsearch.username: "elastic" (用戶名)
elasticsearch.password: "changeme" (密碼)
3.啟動Kibana, 訪問5601端口