0

したがって、私は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 の悪さなど)。

ありがとうございました。

4

0 に答える 0