0

所以我对 docker world 很陌生,我想设置一个 docker compose 文件,我可以在其中部署我的一个 spring boot 应用程序并将日志推送到 grafana。

我的 docker compose 文件有 5 个服务:

  • 数据库
  • 数据库客户端
  • springboot服务
  • 洛基
  • 石墨烯

它看起来像这样:

version: '3.7'
services:
  mariadb_chronos:
    container_name: mariadb_chronos
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: med_appointment

  adminer_chronos:
    container_name: adminer_chronos
    image: adminer
    restart: always
    ports:
      - '8087:8080'

  backend_chronos:
    restart: on-failure
    container_name: backend_chronos
    build:
      context: .
      dockerfile: Dockerfile-backend
    ports:
      - '8080:8080'
    environment:
      WAIT_HOSTS: 'mariadb_chronos:3306'
      MED_DB: 'jdbc:mariadb://mariadb_chronos:3306/med_appointment'
      MED_USER: 'root'
      MED_PASS: 'root'
    logging:
      driver: loki
      options:
        loki-url: "http://loki_chronos:3100/loki/api/v1/push"
    depends_on:
      - mariadb_chronos
      - loki_chronos

  loki_chronos:
    container_name: loki_chronos
    image: grafana/loki:2.3.0
    ports:
      - "3100:3100"
    volumes:
      - ./docker_setup/loki:/home/loki
    command: -config.file=/home/loki/loki-config.yml

  grafana_chronos:
    container_name: grafana_chronos
    image: grafana/grafana:latest
    ports:
      - "3000:3000"

所以现在的问题是:

  • 真的需要使用 promtail 来获取日志吗?据我了解,如果我想抓取一个文件夹并将其发送给 loki,我应该使用 promtail。

还有第二种方法可以像我所做的那样“覆盖” docker logs 输出,对吧?

问题是,即使我的所有服务都成功启动(spring-boot 应用程序生成日志),我也无法在我的 grafana 实例中看到任何内容。

格拉法纳 在此处输入图像描述

来自 spring-boot 应用程序(终端)的日志

在此处输入图像描述

所以我做错了什么?为什么我在 grafana 中看不到这些日志?PS:对所有事情的任何反馈都很好(想法做得更好,我的 docker compose 有多糟糕等)。

谢谢你。

4

0 回答 0