文章目錄
快速建立 EFK (Elasticsearch Fluentd Kibana) 環境
在之前筆記 Fluentd 使用自定 Log 時間當做 Timestamp 中提到為了要測試 fluentd forwarder 的自訂 parser rule,所以偷懶使用 github 上的 docker-compose (Elastic stack (ELK) on Docker)來快速建立整個環境,這幾天有個 issue 需要 debug log parser rule 的問題,發現透過這樣的方式還是相當不便利,所以我來改個版
基本環境說明
- macOS Catalina 10.15.4
- docker desktop community 2.2.0.5(43884)
docker images
- elasticsearch:7.6.2
- kibana:7.6.2
yowko/fluentd-elasticsearch:1.0.0
詳細建立步驟請參考之前筆記 Fluentd 安裝 Elasticsearch Output Plugin 封裝成 Docker image
使用方式
大致結構還是參考 Elastic stack (ELK) on Docker,但預設移除 x-pack
各 service 設定檔
./config/elasticsearch.yml
--- cluster.name: "docker-cluster" network.host: 0.0.0.0
./config/fluent.conf
# Input <source> @type http port 8888 </source> <source> @type forward port 24224 </source> # Output <match *.**> @type elasticsearch host 192.168.50.97 port 9200 logstash_format true </match>
./config/kibana.yml
--- server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://elasticsearch:9200" ]
準備 ./dock-compose.yml
version: '3.2' services: elasticsearch: image: elasticsearch:7.6.2 volumes: - type: bind source: ./config/elasticsearch.yml target: /usr/share/elasticsearch/config/elasticsearch.yml read_only: true ports: - "9200:9200" - "9300:9300" environment: ES_JAVA_OPTS: "-Xmx256m -Xms256m" ELASTIC_PASSWORD: changeme discovery.type: single-node networks: - elk fluentd: image: yowko/fluentd-elasticsearch:1.0.0 volumes: - type: bind source: ./config/fluent.conf target: /fluentd/etc/fluent.conf ports: - "24224:24224/tcp" - "24224:24224/udp" - "8888:8888" networks: - elk depends_on: - elasticsearch kibana: image: kibana:7.6.2 volumes: - type: bind source: ./config/kibana.yml target: /usr/share/kibana/config/kibana.yml read_only: true ports: - "5601:5601" networks: - elk depends_on: - elasticsearch networks: elk: driver: bridge
使用 docker-compose 啟動 efk
--remove-orphans
用來刪除不再存在 compose 中的資源,可加可不加docker-compose -f docker-compose.yml up -d --remove-orphans
心得
剛接到任務要除錯時,想說我有筆記應該可以很快把環境建起來,沒想到照著筆記還是讓我卡了好一下,這才發現之前原來我是 clone 整個官方的 git repository 回來用,我現在會覺得這樣的 dependency 太重而放棄這麼做(clone 整個 repo 回來),這才發現原來過去我沒有這種感覺XD - 我的立場:明明只是要起個環境,又不是想了解完整內容,還大費周章 clone 整個 repo,實在很沒必要,我只想專注在 debug 我遇到的問題,環境的設定步驟愈少愈好,也就順手紀錄一下,下次應該就可以更快速地建出環境了吧XD
參考資訊
文章作者 Yowko Tsai
上次更新 2020-12-11
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。