所以我对 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 有多糟糕等)。
谢谢你。