ELK是什麼
- ElasticSearch簡稱ES,它是一個實時的分佈式搜索和分析引擎,它可以用於全文搜索,結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene 基礎上的搜索引擎,使用 Java 語言編寫。
- Logstash是一個具有實時傳輸能力的數據收集引擎,用來進行數據收集(如:讀取文本文件)、解析,並將數據發送給ES。
- Kibana爲 Elasticsearch 提供了分析和可視化的 Web 平臺。它可以在 Elasticsearch 的索引中查找,交互數據,並生成各種維度表格、圖形。
ELK的用途
日誌分析並不僅僅包括系統產生的錯誤日誌,異常,也包括業務邏輯,或者任何文本類的分析。而基於日誌的分析,能夠在其上產生非常多的解決方案,譬如:
- 問題排查。日誌分析技術是問題排查的基石。基於日誌做問題排查,還有一個很帥的技術,叫全鏈路追蹤,比如SkyWalking、Cat、Zipkin,也算是日誌分析技術裏的一種。
- 監控和預警。 日誌,監控,預警是相輔相成的。
- 關聯事件。多個數據源產生的日誌進行聯動分析,通過某種分析算法,就能夠解決生活中各個問題。
- 數據分析。可以根據日誌進行某些數據的分析。
架構圖
搭建Elasticsearch
https://blog.csdn.net/qq_37598011/article/details/103137571
https://blog.csdn.net/qq_37598011/article/details/103140376
我這裏用的版本還是6.7
安裝NPM
wget https://npm.taobao.org/mirrors/node/v4.4.7/node-v4.4.7-linux-x64.tar.gz
tar -zxvf node-v4.4.7-linux-x64.tar.gz
rm -rf node-v4.4.7-linux-x64.tar.gz
ln -s /usr/local/node/node-v4.4.7-linux-x64/bin/npm /usr/local/bin/npm
ln -s /usr/local/node/node-v4.4.7-linux-x64/bin/node /usr/local/bin/node
npm -v
安裝elasticsearch-head
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
如果要其他機器訪問,則需要修改Gruntfile.js,在options對象屬性下增加一個hostname屬性,值爲"*"
vim Gruntfile.js
hostname: '*'
啓動
npm run start
安裝Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz
tar -zxvf logstash-6.7.0.tar.gz
cd logstash-6.7.0/config/
創建logstash-es.conf:
vim logstash-es.conf
配置如下:
input {
stdin { }
beats {
port => 9900
ssl => false
}
}
output {
elasticsearch {
action => "index"
hosts => "127.0.0.1:9200"
index => "logstash-%{+YYYY-MM}"
}
stdout { codec=> rubydebug }
}
啓動
../bin/logstash -f ./logstash-es.conf
安裝kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz
cd kibana-6.7.0-linux-x86_64/config/
修改配置文件
vim kibana.yml
server.port: 5601
server.host: "192.168.78.133"
elasticsearch.hosts: ["http://192.168.78.133:9200"]
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"
i18n.locale: "zh-CN"
啓動
../bin/kibana
OK~
設置Index Pattern,因爲我們在logstash-es.conf中設置爲logstash-%{+YYYY-MM},所以設置爲logstash-*就可以了。
文檔:https://www.elastic.co/guide/index.html
創建Index:https://www.elastic.co/guide/en/kibana/6.7/tutorial-load-dataset.html
批量導入數據到Kibana:https://www.cnblogs.com/hai-ping/p/6068946.html
與Kafka集成
Kafka安裝:https://blog.csdn.net/qq_37598011/article/details/88980317
在logstash的config目錄下添加logstash_kafka.conf
vim logstash_kafka.conf
input {
kafka{
bootstrap_servers=>"192.168.78.133:9092"
topics=>"test"
codec=>plain
}
#stdin { }
}
output {
elasticsearch {
#action => "index"
hosts => "127.0.0.1:9200"
index => "test-%{+YYYY-MM}"
}
#stdout { codec=> rubydebug }
}
重啓logstash
../bin/logstash -f ./logstash_kafka.conf
在Kibana裏創建test索引
測試通過kafka添加數據
./kafka-console-producer.sh --broker-list localhost:9092 --topic test