Docker Foundation(17)-DockerCompress Grafana+MySQLの構築


Grafanaの設定


要求

  • Grafanaの3000ポートはホストの3000ポート바인딩
  • GrafanaのプロファイルGrafana.iniはホストから注入可能に構成されている읽기전용設定
  • Grafanaローカルデータ格納経路の検証도커 볼륨 마운트
  • Grafanaプラグインの追加用환경변수 설정
  • ログドライバオプションによる로그 로테이팅
  • +
  • grafana.iniでデータベースを設定sqlite에서 MySQL로 변경
  • MySQLコンテナをdbサービスとしてdocker-composeに追加
  • grafanaサービスdbサービスをデータベースに接続
  • MySQLのローカルデータ格納パスを検証し、ドックボリュームをマウント
  • Grafanaドックガイド
    https://grafana.com/docs/grafana/latest/installation/docker/
    MySQLドッキングガイド
    https://hub.docker.com/_/mysql
    容器に必要な環境変数などは、正式docsで確認できます.

    Grafana Only


    docker-compose.yml

    version: '3.9'
    
    services:
      grafana:
        image: grafana/grafana:8.2.2
        restart: unless-stopped
        environment:
          GF_INSTALL_PLUGINS: grafana-clock-panel
        ports:
        - 3000:3000
        volumes:
        - ./files/grafana.ini:/etc/grafana/grafana.ini:ro
        - grafana-data:/var/lib/grafana
        logging:
          driver: "json-file"
          options:
            max-size: "8m"
            max-file: "10"
    
    volumes:
      grafana-data: {}

    image

    image: grafana/grafana:8.2.2
    Grafana 8.2.2版の使用

    restart

    restart:unless-stopped
    サーバが再起動してもコンテナを再起動

    environment

    environment:
      GF_INSTALL_PLUGINS: grafana-clock-panel
    プラグインの追加

    port

    ports:
    - 3000:3000
    3000ポートバインド

    volumes

    volumes:
    - ./files/grafana.ini:/etc/grafana/grafana.ini:ro
    プロファイルホスト上の場所(./files/grafana.ini)をコンテナ上の場所(/etc/grafana/grafana.ini)にマウント
    - grafana-data:/var/lib/grafana
    データボリューム(grafana-data)をローカルデータの場所(/var/lib/grafana)にロード

    logging

    logging:
      driver: "json-file"
      options:
        max-size: "8m"
        max-file: "10"
    json形式でログを出力

    grafana.ini

    app_mode = production
    instance_name = ${HOSTNAME}
    
    #################################### Server ####################################
    [server]
    protocol = http
    http_addr =
    http_port = 3000
    
    #################################### Database ####################################
    ; [database]
    ; type = mysql
    ; host = db:3306
    ; name = grafana
    ; user = grafana
    ; password = grafana
    
    
    #################################### Logging ##########################
    [log]
    mode = console
    level = info
    
    #################################### Alerting ############################
    [alerting]
    enabled = true
    サンプルファイル
    docker-compose.ymlなどのフォルダにfilesというフォルダを作成し、ファイルを作成します.

    コマンドの実行

    docker-compose up -d

    3000番ポートが正常に動作

    ノーマルレスポンス

    通常の接続

    Grafanaの初期勘定科目admin/adminに接続します.
    設定値を確認するとdbのタイプがsqliteであることがわかります.

    Grafana + MySQL


    docker-compose.yml

    version: '3.9'
    
    services:
      db:
        image: mysql:5.7
        restart: unless-stopped
        environment:
          MYSQL_ROOT_PASSWORD: grafana
          MYSQL_DATABASE: grafana
          MYSQL_USER: grafana
          MYSQL_PASSWORD: grafana
        volumes:
        - mysql-data:/var/lib/mysql
        logging:
          driver: "json-file"
          options:
            max-size: "8m"
            max-file: "10"
    
      grafana:
        depends_on:
        - db
        image: grafana/grafana:8.2.2
        restart: unless-stopped
        environment:
          GF_INSTALL_PLUGINS: grafana-clock-panel
        ports:
        - 3000:3000
        volumes:
        - ./files/grafana.ini:/etc/grafana/grafana.ini:ro
        - grafana-data:/var/lib/grafana
        logging:
          driver: "json-file"
          options:
            max-size: "8m"
            max-file: "10"
    
    volumes:
      mysql-data: {}
      grafana-data: {}
    dbサービスの追加

    depends_on

     depends_on:
        - db
    dbコンテナを作成し、grafanaコンテナを作成するように設定します.

    grafana.ini

    app_mode = production
    instance_name = ${HOSTNAME}
    
    #################################### Server ####################################
    [server]
    protocol = http
    http_addr =
    http_port = 3000
    
    #################################### Database ####################################
    [database]
    type = mysql
    host = db:3306
    name = grafana
    user = grafana
    password = grafana
    
    
    #################################### Logging ##########################
    [log]
    mode = console
    level = info
    
    #################################### Alerting ############################
    [alerting]
    enabled = true
    データベース・セクションのコメントの消去

    コマンドの実行

    docker-compose up -d

    no matching manifest for linux/arm64/v8 in the manifest list entries
    Apple M 1チップセットでmysqlをダウンロードまたは実行すると、このエラーメッセージが表示されます.
    解決方法については、ここを参照してください。

    正常に動作している場合はgrafanaに接続し、db設定を表示します.
    mysqlに変更されたことを確認できます.

    ドッキングボリュームの確認


    Grafana埃새로운 유저를 추가한뒤コンテナを閉じてデータの永続性を確認する
    docker-compose down
    Do Component終了後
    docker volume ls

    ボリュームが削除されずに保持されていることがわかります.
    終わりだ!