這一篇的實驗室透過 docker-compose 中 logging 關鍵字將應用程式 log 轉發到 fluent-bit 並做日誌解析,最後再將其存入 Elasticsearch。
建設基礎環境
fluent/conf/fluent-bit.conf
的 Elasticsearch 連線位置,改成自己機器的 IP 和 ES 映射的 Port 預設是 9200
原則上 EFK 基礎設施就會被建立起來,接著我們啟動一個 spring boot 專案進行測試。測試的專案在 github 上。注意這邊的 logging-docker-compose.yml
要進行以下修改如下,最後運行 logging-docker-compose.yml
即可。
version: '3.7'
services:
jaeger-tracing-java-service:
container_name: jaeger-tracing-web-redis-demo
build:
context: .
environment:
# OTEL 相關環境變數先註解
#OTEL_TRACES_EXPORTER: jaeger
#OTEL_EXPORTER_JAEGER_ENDPOINT: http://192.168.101.129:9000 # must URI format
#OTEL_RESOURCE_ATTRIBUTES: "service.name=java-redis-demo,service.version=v1.0.0"
#OTEL_PROPAGATORS: "tracecontext,baggage"
#OTEL_METRICS_EXPORTER: none
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/demo # 這邊改成 jdbc:postgresql://postgres:5432/demo
SPRING_DATASOURCE_USERNAME: demo
SPRING_DATASOURCE_PASSWORD: 123456
SPRING_REDIS_HOST: redis
logging:
driver: fluentd
options:
fluentd-address: 192.168.101.129:24224 # 這邊的 IP 改成機器 IP
tag: web-backend
ports:
- "8000:8080"
redis:
container_name: redis
image: redis:latest
expose:
- 6379
logging:
driver: fluentd
options:
fluentd-address: 192.168.101.129:24224 # 這邊的 IP 改成機器 IP
tag: redis
...
使用 docker ps -a
檢查是否都正常運行
54c3aa17b5c4 fluent/fluent-bit:1.7.0 "/fluent-bit/bin/flu…" 11 minutes ago Up 11 minutes 0.0.0.0:2020->2020/tcp, :::2020->2020/tcp, 0.0.0.0:24224->24224/tcp, :::24224->24224/tcp, 0.0.0.0:24224->24224/udp, :::24224->24224/udp fluent-bit
4eb79214849d docker.elastic.co/kibana/kibana:7.6.0 "/usr/local/bin/dumb…" 16 minutes ago Up 16 minutes 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
kibana
c886270bbe2c docker.elastic.co/elasticsearch/elasticsearch:7.6.0 "/usr/local/bin/dock…" 16 minutes ago Up 16 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch2
4e596a65d2d7 postgres "docker-entrypoint.s…" 22 minutes ago Up 22 minutes (healthy) 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp
postgres
ed493f4b2816 redis:latest "docker-entrypoint.s…" 22 minutes ago Up 22 minutes 6379/tcp
redis
8e4889332516 psql-redis-springboot_jaeger-tracing-java-service "java -javaagent:ope…" 22 minutes ago Up 22 minutes 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp
jaeger-tracing-web-redis-demo
最後可以在 Kibana 上看到 index,如下
接著在 Index pattern
輸入 index 名稱,再按 Next Step,最後點擊 Create index pattern。最後我們可以看見該容器的日誌了。
明天會使用 Spring boot 的環境配置進行實作。