Glancesで取得したサーバー情報を外部のサーバーで拾って一元監視したいと思ったのでメモ。
GlancesにはデフォルトでBasic認証を掛けられるオプションがあるので、Docker上で起動したGlancesをWebサーバーモードでかつパスワード保護付きで起動します。
基本的には以下のドキュメントの手順に従います。
環境
- Ubuntu 22.04
- Docker 27.3.1
GlancesをWebサーバーモードで起動する
Dockerがインストールされているかチェック
$ sudo docker -v
Docker version 27.3.1, build ce12230
ルートディレクトリ直下にglancesディレクトリを作成
任意のテキストエディタでcompose.yamlを作成
$ mkdir glances
$ cd glances
$ nano compose.yaml
compose.yamlに設定を書き込み
services:
glances:
image: docker.io/nicolargo/glances
container_name: glances
restart: always
ports:
- 61208-61209:61208-61209
environment:
- GLANCES_OPT=-w
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock.ro
pid: host
Docker Composeでコンテナを起動
psで起動確認
$ sudo docker compose up -d
$ sudo docker ps
この時点でポート番号61208でHTTPアクセスするとGlancesをブラウザから閲覧できるようになります。
パスワードファイルを作成
Glancesを使用してパスワードファイルを作成します。
コンテナのシェルを開く
$ sudo docker exec -it glances sh
パスワードファイルを生成
(--usernameでユーザーネームを指定しない場合、デフォルトのglancesが使用されます)
$ glances -w --password
コンテナから退出
$ exit
コンテナ内からパスワードファイルをコピーする
$ sudo docker cp glances:/root/.config/glances/glances.pwd ./glances/glances_password
compose.yamlを再編集
$ nano compose.yaml
environmentに--password、secretsをそれぞれ追加
services:
glances:
image: docker.io/nicolargo/glances
container_name: glances
restart: always
ports:
- 61208-61209:61208-61209
environment:
- GLANCES_OPT=-w --password
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock.ro
pid: host
secrets:
- source: glances_password
target: /root/.config/glances/glances.pwd
secrets:
glances_password:
file: /home/{ユーザー名}/glances/glances_password
変更したcompose.yamlを適用する
$ sudo docker compose up -d
適宜ファイアウォールの設定をする
$ sudo ufw allow 61208
{IPアドレス}:61208で外部から閲覧可能か確認
参考