Quantumleap
903 words
5 minutes
Grafana+PrometheusでDockerの状態をウェブから確認しよう

背景#

うちのパソコン、たまに負荷をかけると勝手に再起動してしまう問題がありました。

再起動してもdocker-compose.yamlrestart: alwaysを設定しておけばDockerのサービスが走った段階で勝手にコンテナが立ち上がってくれるのですが、どうせなら現在どんな状態にあるのかもウェブから見れたら便利だなと思った次第です。

まあDocker自体がコケたらウェブサービスもコケるので意味があるのかないのかは微妙なところなのですが、死活監視というのは結構楽しそうでCloudflareにも似たような機能があるっぽいのですがnxapiでも利用されているGrafanaを利用してみることにしました。

Grafana#

Grafanaはサーバーのデータのビジュアライズをしてくれるフレームワークです。

クラウドのサービスも展開しているのですが、小規模であればオンプレでやってしまっても良いでしょう。Dockerのイメージも公開されているのでそれを利用します。

データの流れとしてはこんな感じで、直接Dockerの様子を覗きにいくのはcAdvisorです。

ただしcAdvisor自体はビジュアライズ面がそこまで強力ではないので、Grafanaを利用しようわけですね。

grafana-docker-resource-monitor#

めんどくさかったので全部Dockerで動くようにしました。

Cloudflare Tunnelは必須ではありません。

参考にしたページはDocker Container Monitoring with cAdvisor, Prometheus, and Grafana using Docker Composeで、ファイルもだいたい同じ感じですが不要なポートはDockerから外に出さないようにしてアクセスは全てCloudflare Tunnelを経由するようにしています。

そのせいなのかわかりませんが、Public dashboardを立ち上げるとInternal Server ErrorがData Sourceで返ってきて何も表示されません

datasources.ymlのURLで直接指定してみてもダメだったのでダメなのかもしれません。単にaccess=proxyなのがダメなのかもしれないんですが、原因がわからないのとまあ使えなくてもそこまで不便ではないのでとりあえず放置しています。

わかった方はPR出していただけると助かります。

備忘録#

起動するとError response from daemon: error while creating mount source path '/var/lib/docker': mkdir /var/lib/docker: read-only file systemと表示されることがある。これはDockerがaptではなくsnapでインストールされていることが原因である。

snapaptの比較についてはSnap vs APT: What’s the Difference?がわかりやすい。

項目SnapAPT
パッケージタイプ.snap.deb
ツール名snapedAPT
CLIsnapapt
フォーマットSquashFS archivear archive
リリースSnap StoreDebian repositories
インストールサイズ大きい小さい
依存関係パッケージに梱包共有
アップデート自動手動
セキュリティ制限制限限定的に制限
複数インストール可能不可能
複数バージョンインストール可能不可能

どちらが良いかは一長一短のようなのだが、特に困っていることがなければsnapのほうが安全そうな気はする。

dockerがどこにインストールされているかはwhich dockerで確認できる。/snap/bin/dockerと表示された場合にはsnapでdockerがインストールされている。

    # Snap
      - /var/snap/docker/common/var-lib-docker:/var/snap/docker/common/var-lib-docker:ro
    # APT
    # - /var/lib/docker/:/var/lib/docker:ro

そのときはcadvisorで指定しているvolumesを上のように変更する。すると正しく起動できるようになるはず。

記事は以上。

Grafana+PrometheusでDockerの状態をウェブから確認しよう
https://fuwari.vercel.app/posts/2024/02/grafana/
Author
tkgling
Published at
2024-02-11