Glancesで取得したサーバー情報を外部のサーバーで拾って一元監視したいと思ったのでメモ。
GlancesにはデフォルトでBasic認証を掛けられるオプションがあるので、Docker上で起動したGlancesをWebサーバーモードでかつパスワード保護付きで起動します。
基本的には以下のドキュメントの手順に従います。
環境
- Ubuntu 22.04
- Docker 27.3.1
GlancesをWebサーバーモードで起動する
Dockerがインストールされているかチェック
$ 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
で起動確認
$ docker compose up -d
$ docker ps
この時点でポート番号61208
でHTTPアクセスするとGlancesをブラウザから閲覧できるようになります。
パスワードファイルを作成
Glancesを使用してパスワードファイルを作成します。
コンテナのシェルを開く
$ docker exec -it glances sh
パスワードファイルを生成
(--username
でユーザーネームを指定しない場合、デフォルトのglances
が使用されます)
$ glances -w --password
コンテナから退出
$ exit
コンテナ内からパスワードファイルをコピーする
$ 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/{UserName}/glances/glances_password
変更したcompose.yaml
を適用する
$ docker compose up -d
適宜ファイアウォールの設定をする
$ ufw allow 61208
{IPアドレス}:61208で外部から閲覧可能か確認
参考