elk 和 kafka 介紹
lk 分別是由 logstash(收集+分析)、
elasticsearch(搜尋+儲存)、kibana(視覺化展示)組成,主要是為了在海量的日誌系統裡面實現分布式日誌資料集中式管理和查詢,便於監控以及排查故障,極大方便微服務專案檢視日誌;
單純使用 elk 做日誌系統,由於 logstash 消耗系統資源比較大,執行時占用 cpu 和記憶體資源較高,且沒有訊息佇列快取,可能存在資料丟失的風險,只能適合於資料量小的環境使用;
apache kafka 是訊息中介軟體的一種,是一種分布式的,基於發布/訂閱的訊息系統。能實現乙個為處理實時資料提供乙個統
一、每秒百萬級別的高吞吐、低延遲的平台,且擁有分布式的,可劃分的,冗餘備份的永續性的日誌服務等特點。
和採用 redis 做輕量級訊息佇列不同,kafka 利用磁碟作佇列,所以也就無所謂訊息緩衝時的磁碟問題;而且 redis 作為集群使用時,對應的應用對應乙個 redis,在某種程度上會造成資料的傾斜性,從而導致資料的丟失,若對於資料量小的環境下使用 redis 的佇列替換 kafka,效率和成本會很大提公升;
elk docker環境搭建
docker 環境搭建可參考:docker 快速入門和安裝
(2)、講解一下 docker-compose.yml;
#後台啟動容器
docker-compose up -d
#其他命令,檢視 docker-compose --help
#安全關閉 docker-compose
注:若出現 -bash: docker-compose: command not found 時,解決如下:
# 1、先安裝 pip ,檢查是否已有;
pip -v
# 2、若已安裝 pip 則忽略此步驟 ,若報錯 -bash: pip: command not found 請安裝;
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
# 3、安裝docker-compose;
pip install docker-compose# 4
、檢查是否安裝成功;
(5)、理解各個埠的作用,並訪問 elasticsearch 控制台和 kibana 控制台;
5000elasticsearch 控制台(預設使用者名稱:elastic,密碼:changeme,在 docker-compose.yml 修改),如下介面說明服務已成功啟動:: logstash tcp input #日誌採集埠
9200
: elasticsearch http #控制台埠
9300
: elasticsearch tcp transport #集群通訊埠,作心跳檢測
5601: kibana #控制台埠
kibana 控制台(預設使用者名稱:elastic,密碼:changeme,在 docker-elk-master/kibana/config下 kibana.yml 修改),如下介面說明服務已成功啟動:
kafka docker 搭建
github kafka docker and compose:
(2)、docker-compose.yml 會搭建多節點集群,本文不做演示,所以使用單節點檔案 docker-compose-single-broker.yml;
docker-compose -f docker-compose-single-broker.yml up
#後台啟動
關聯 logstash 和 kafka
(1)、修改 logstash.conf 配置(在 docker-elk-master/logstash/pipeline 裡);
(2)、重新啟動 logstash;
docker-compose restart logstashelk redis 搭建nginx日誌分析平台
logstash,elasticsearch,kibana 怎麼進行nginx的日誌分析呢?首先,架構方面,nginx是有日誌檔案的,它的每個請求的狀態等都有日誌檔案進行記錄。其次,需要有個佇列,redis的list結構正好可以作為佇列使用。然後分析使用elasticsearch就可以進行分析和查詢...
elk redis 搭建nginx日誌分析平台
logstash,elasticsearch,kibana 怎麼進行nginx的日誌分析呢?首先,架構方面,nginx是有日誌檔案的,它的每個請求的狀態等都有日誌檔案進行記錄。其次,需要有個佇列,redis的list結構正好可以作為佇列使用。然後分析使用elasticsearch就可以進行分析和查詢...
elk redis 搭建nginx日誌分析平台
logstash,elasticsearch,kibana 怎麼進行nginx的日誌分析呢?首先,架構方面,nginx是有日誌檔案的,它的每個請求的狀態等都有日誌檔案進行記錄。其次,需要有個佇列,redis的list結構正好可以作為佇列使用。然後分析使用elasticsearch就可以進行分析和查詢...