实验 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 的环境配置进行实作。


<<:  day18 : kafka服务应用 on K8S (下)

>>:  Day03:浅谈 Git 和 GitHub

企划实现(18)

在撰写程序时我发现了一个以前没有遇到过的事情,我原先一直以为是因为环境导致的但是後来我发现跟环境没有...

[Day 25] Reactive Programming - Spring WebFlux(R2DBC)

前言 在上一个范例中,是写死回传的内容,显然在现实生活中应该是不会有公司让你可以这样做的,而当我们的...

Day 11 ( 中级 ) 视差效果

视差效果 教学原文参考:视差效果 这篇文章会介绍,如何在 Scratch 3 里建立五个角色,透过重...

[Day 8] .Net Task 底层(1)

前言 昨天聊过 Task.WhenAll , 得知其底层就是等待多个 Task 完成的机制, 那 T...

AE袅袅升起的烟(香菸)-Day13

竟然到了第四个练习!!! 教学范例:https://www.sixvfx.com/ae_combus...