iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
Software Development

一個新鮮人如何完轉Spring boot與DevOps從0到101系列 第 18

實驗 Spring boot 將 Log 傳給 EFK

這一篇的實驗室透過 docker-compose 中 logging 關鍵字將應用程式 log 轉發到 fluent-bit 並做日誌解析,最後再將其存入 Elasticsearch。

建設基礎環境

  1. 建立 EFK,在我 github 上,透過 clone 下載
  2. 修改 fluent/conf/fluent-bit.conf 的 Elasticsearch 連線位置,改成自己機器的 IP 和 ES 映射的 Port 預設是 9200
  3. 透過 docker-compose 啟動 docker-compose.yml 和 fluent-sidecar-docker-compose.yml

原則上 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 的環境配置進行實作。


上一篇
Fluentd Bit
下一篇
Spring boot 配置 Fluent bit 傳遞 Log
系列文
一個新鮮人如何完轉Spring boot與DevOps從0到10130

尚未有邦友留言

立即登入留言