Elasticsearch+Fluentd+Kafka搭建分散式日誌系

bluepeach發表於2021-09-09


前言由於此處所指的EFK是Elasticsearch + Fluentd + Kfka,實際上K應該是Kibana。演示,此處僅收集資料的採集流程。

#必然

  1. [docker]([docker-compose]([apache kafka服務](https://liangyuanpeng.com/post/docker-deploy-kafka/

#架構

資料採集​​流程

資料的產生使用cadvisor採集容器的監控資料和資料傳輸到Kafka。

資料的傳輸傳輸是這樣的:Cadvisor-> Kafka-> Fluentd-> elasticsearch

![ ](

每一個服務都可以橫向擴充套件,新增服務到日誌系統。

配置檔案

docker-compose.yml

版本: “3.7” 服務:  elasticsearch:   影像:elasticsearch:7.5.1    環境:    - discovery.type =單節點#使用單機模式啟動   埠:    - 9200:9200   cadvisor:    影像:谷歌/ cadvisor     命令: - storage_driver =卡夫卡-storage_driver_kafka_broker_list = 192.168.1.60:9092(卡夫卡服務IP:PORT)-storage_driver_kafka_topic = kafeidou     depends_on:      - elasticsearch   fluentd:   影像:lypgcs / fluentd-ES-卡夫卡:V1.3.2    卷:    - ./:/etc/流利    -在/ var /日誌/ fluentd:在/ var /日誌/ fluentd ```


  


















  

其中:  
1. cadvisor產生的資料會傳輸到192.168.1.60這臺機器的kafka服務,topic為kafeidou  
2. elasticsearch指定為單機模式啟動(``discovery.type=single-node``環境變數),單機模式啟動是為了方便實驗整體效果  

fluent.conf  

輸入http

埠8888

@type kafka經紀人192.168.1.60:9092格式json主題kafeidou

<match **>
@type複製

@type標準輸出

@type elasticsearch host 192.168.1.60埠9200 logstash_format true #target_index_key machine_name logstash_prefix kafeidou logstash_dateformat%Y.%m。%d

flush_interval 10秒

其中:  
1. type為copy的外掛是為了能夠將fluentd接收到的資料複製一份,是為了方便除錯,將資料列印在控制檯或者儲存到檔案中,這個配置檔案預設關閉了,只提供必要的es輸出外掛.  
需要時可以將``@type stdout``這一塊開啟,除錯是否接收到資料.  

2. 輸入源也配置了一個http的輸入配置,預設關閉,也是用於除錯,往fluentd放入資料.  
可以在linux上執行下面這條命令:    

curl -i -X POST -d'json = {“ action”:“ write”,“ user”:“ kafeidou”}'

3. target_index_key引數,這個引數是將資料中的某個欄位對應的值作為es的索引,例如這個配置檔案用的是machine_name這個欄位內的值作為es的索引.

### 開始部署  

在包含docker-compose.yml檔案和fluent.conf檔案的目錄下執行:  
``
docker-compose up -d
``  

在檢視所有容器都正常工作之後可以檢視一下elasticsearch是否生成了預期中的資料作為驗證,這裡使用檢視es的索引是否有生成以及資料數量來驗證:  

-bash:-:未找到命令[root @ master kafka] #curl http://192.168.1.60:9200/_cat/indices?v健康狀態索引uuid pri rep docs.count docs.deleted store.size pri.store。大小黃色開放55a4a25feff6 Fz_5v3suRSasX_Olsp-4TA 1 1 1 0 4KB 4KB 也可以直接在瀏覽器輸入`

http://192.168.1.60:9200/_cat/indices?v 檢視結果,會更方便。可以看到我這裡是用了不同不同不同不同不同不同不同不同不同不同不同不同不同不同不同不同machine_name這個欄位作為索引值,查詢的結果是生成了一個叫 55a4a25feff6 的索引資料,生成了1條資料( docs.count )到目前為止 kafka-> fluentd-> ES 這樣一個日誌收集流程就搭建完成了當然。了,架構不是固定的。也可以使用 fluentd-> kafka-> ES 這樣的方式進行收集資料。這裡不做演示了,無非是修改一下fluentd。 conf配置檔案,將和卡夫卡相關的配置做一下對應的位置調換就可以可以了。

鼓勵多看官方文件,在github或Fluentd官網上都可以找到到Fluentd-es外掛和fluentd-kafka外掛。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2558/viewspace-2824887/,如需轉載,請註明出處,否則將追究法律責任。

相關文章