- ELK 和 Kafka 介紹
LK 分別是由 Logstash(收集+分析)、
ElasticSearch(搜索+存儲)、Kibana(可視化展示)組成,主要是為了在海量的日志系統里面實現分布式日志數據集中式管理和查詢,便於監控以及排查故障,極大方便微服務項目查看日志;
-
Logstash 接收應用系統的日志數據, 對進行過濾、分析、統一格式等操作對接,然后將其寫入到 ElasticSearch 中;Logstash 可以支持 N 種 log 渠道:Kafka 日志隊列對接讀取、和 log 硬盤目錄對接讀取、Reids 中存儲日志隊列讀取等等;
-
ElasticSearch 存儲日志數據,是一種分布式搜索引擎,具有高可伸縮、高可靠、易管理等特點,可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來;
-
Kibana 對存放在 ElasticSearch 中日志數據進行:數據展現、報表展現,並且是實時的;
單純使用 ELK 做日志系統,由於 Logstash 消耗系統資源比較大,運行時占用 CPU 和內存資源較高,且沒有消息隊列緩存,可能存在數據丟失的風險,只能適合於數據量小的環境使用;
Apache Kafka 是消息中間件的一種,是一種分布式的,基於發布/訂閱的消息系統。能實現一個為處理實時數據提供一個統一、每秒百萬級別的高吞吐、低延遲的平台,且擁有分布式的,可划分的,冗余備份的持久性的日志服務等特點。
和采用 Redis 做輕量級消息隊列不同,Kafka 利用磁盤作隊列,所以也就無所謂消息緩沖時的磁盤問題;而且 Redis 作為集群使用時,對應的應用對應一個 Redis,在某種程度上會造成數據的傾斜性,從而導致數據的丟失,若對於數據量小的環境下使用 Redis 的隊列替換 Kafka,效率和成本會很大提升;
-
- ELK Docker 環境搭建
Docker 環境搭建可參考:Docker 快速入門和安裝
Github Elk Docker and Compose:https://github.com/deviantony/docker-elk
(0)、本機環境 CentOS7,其他環境大同小異;安裝 Docker 環境(如已安裝請忽略此步驟);
(1)、Github 搜索 docker elk(下載地址如上鏈接),將其 clone 或下載到 linux 上,因機器問題,本文只安裝單節點版;
(2)、講解一下 docker-compose.yml;

(3)、進入到該目錄,在有 docker-compose.yml 的目錄使用下面的命令進行下載和啟動(第一次下載會比較久);
#啟動容器,方便控制台調試,第一次建議使用該命令進行下載和啟動 docker-compose up #后台啟動容器 docker-compose up -d #其他命令,查看 docker-compose --help #安全關閉 docker-compose #docker-compose down -v

注:若出現 -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、檢查是否安裝成功; docker-compose -version
(4)、出現綠色 done 則表示下載完成並啟動;開放端口 ,我這邊使用的是阿里雲,所以需要去雲實例的安裝組配置規則開放端口;


(5)、理解各個端口的作用,並訪問 Elasticsearch 控制台和 Kibana 控制台;
5000: Logstash TCP input #日志采集端口 9200: Elasticsearch HTTP #控制台端口 9300: Elasticsearch TCP transport #集群通信端口,作心跳檢測 5601: Kibana #控制台端口
Elasticsearch 控制台(默認用戶名:elastic,密碼:changeme,在 docker-compose.yml 修改),如下界面說明服務已成功啟動:

Kibana 控制台(默認用戶名:elastic,密碼:changeme,在 docker-elk-master/kibana/config下 kibana.yml 修改),如下界面說明服務已成功啟動:

- Kafka Docker 搭建
Github Kafka Docker and Compose:https://github.com/wurstmeister/kafka-docker
(0)、本機環境 CentOS7,其他環境大同小異;安裝 Docker 環境(如已安裝請忽略此步驟);
(1)、Github 搜索 docker kafka(下載地址如上鏈接),將其 clone 或下載到 linux 上,因機器問題,本文只安裝單節點版;
(2)、docker-compose.yml 會搭建多節點集群,本文不做演示,所以使用單節點文件 docker-compose-single-broker.yml;

(3)、進入到該目錄,在有 docker-compose.yml 的目錄使用下面的命令進行下載和啟動(第一次下載會比較久);
#第一次建議使用該命令進行下載和啟動 docker-compose -f docker-compose-single-broker.yml up #后台啟動 docker-compose -f docker-compose-single-broker.yml up -d

(4)、出現綠色 done 則表示下載完成並啟動,查看運行狀態;
docker-compose ps

- 關聯 Logstash 和 Kafka
(1)、修改 logstash.conf 配置(在 docker-elk-master/logstash/pipeline 里);
input { #tcp { # port => 5000 #} kafka { id => "my_plugin_id" bootstrap_servers => "localhost:9092" topics => ["test"] auto_offset_reset => "latest" } }

(2)、重新啟動 Logstash;
docker-compose restart logstash

