したがって、私はdockerの世界にまったく慣れていないので、docker構成ファイルをセットアップして、Spring Bootアプリの1つをデプロイし、ログをgrafanaにプッシュできるようにしたいと考えていました.
私のdocker構成ファイルには、5つのサービスがあります。
- データベース
- データベース クライアント
- スプリングブートサービス
- ロキ
- グラファナ
次のようになります。
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 を使用する必要がありますか? 私が理解していることから、フォルダーをスクレイピングしてロキに送信する場合は、promtail を使用する必要があります。
また、私が行ったように docker ログ出力を「オーバーライド」できる 2 番目の方法もありますよね?
問題は、すべてのサービスが正常に開始された (Spring Boot アプリがログを生成した) 場合でも、Grafana インスタンスに何も表示されないことです。
spring-boot アプリ (ターミナル) からのログ
だから私は何か間違ったことをしていますか?これらのログが grafana で表示されないのはなぜですか? PS: すべてについてのフィードバックは好意的に受け取られています (改善するためのアイデア、Docker Compose の悪さなど)。
ありがとうございました。