Glances DashboardでLinuxサーバー監視をより「楽」にする方法

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

サーバーの調子が悪くなるたびに繰り返される「手動SSH」の悪夢

約1年前、私は10台のVPSクラスターでマイクロサービスを直接管理していました。システムが重くなる兆候があるたびに、ターミナルを開いて各サーバーにSSH接続し、CPUを確認するためにhtopを叩き、ディスクを確認するためにdf -hを実行し、さらにディスクI/Oを監視するためにiotopを動かすという作業を繰り返していました。このプロセスは非常に時間がかかりました。

決定的だったのは、ある日曜日の夜、1台のサーバーがログでいっぱいになり、ディスク使用率が100%に達したときのことです。直感的なダッシュボードがなかったため、どのアプリが「フリーズ」しているのかを特定するだけで2時間以上もかかってしまいました。そのトラブルの後、軽量でインストールが速く、ブラウザから1画面ですべての統計情報を確認できるツールが必要だと痛感しました。

なぜtopやhtopのようなお馴染みのコマンドだけでは限界があるのか?

topiostatのようなツールは非常に強力ですが、サーバーの数が増えると弱点が目立ち始めます:

  • 情報が断片的: ネットワークを見たいときはあるコマンド、RAMを見たいときは別のコマンドといった具合に、全体像を把握できません。
  • 継続性の欠如: SSHウィンドウを閉じると、すべてのデータが消えてしまいます。10分前にCPUがどのようにスパイクしたかを知る術はありません.
  • 共有の難しさ: 同僚がサーバーの状態を確認したいと言うたびに、彼らにSSH権限を与えるわけにはいきませんよね?

機能とリソースのバランスが取れた解決策とは?

かつてPrometheus + Grafanaのコンボを試したことがあります。非常にプロフェッショナルですが、小規模なプロジェクトには重すぎました。エクスポーターとストレージ用のDBを動かすだけで、通常500MBから1GB以上のRAMを消費します。これは低スペックのVPSにとっては決して小さな数字ではありません。

NetdataはUIが美しいですが、時として細かすぎるチャートが多すぎてノイズになることがあります。私はNetdataよりも軽く、htopよりも直感的にWebを開けばすぐに見える、その中間のようなものを求めていました。そこで見つけたのがGlancesです。

Glances – Linux管理者のための多機能ダッシュボード

プロダクションサーバーで6ヶ月間運用してみて、非常に満足しています。Pythonで書かれたGlancesは、CPU、ロードアベレージ、RAMからディスクI/O、ネットワーク、Dockerコンテナまで、すべてを一つの洗練されたインターフェースに集約してくれます。

ステップ1:コマンド1つでGlancesをインストール

最も手っ取り早い方法は、自動スクリプトを使用して、bottle(Web実行用)やpsutil(システム統計取得用)などの依存ライブラリを自動的にインストールすることです。

curl -L https://bit.ly/glances | /bin/bash

バージョンの管理を厳密に行いたい場合は、pipを使用することもできます:

sudo apt update && sudo apt install python3-pip -y
sudo pip3 install glances[all]

ヒント: [all]オプションを付けると、後でデータをCSVに出力したり、データベースにプッシュしたりするための拡張モジュールもインストールされます。

ステップ2:Webダッシュボードの有効化

これが最も価値のある機能です。真っ黒なターミナルで見る代わりに、次のように実行します:

glances -w

これでGlancesがポート61208を開きます。あとは http://サーバーIP:61208 にアクセスするだけです。緑、黄色、赤の色分けされたインターフェースが表示され、非常に視認性が高いです。

ステップ3:安定したバックグラウンド実行のためのSystemd設定

サーバーが再起動してもダッシュボードが常に利用できるように、サービスを作成しましょう。

sudo nano /etc/systemd/system/glancesweb.service

以下の内容を貼り付けます(必要に応じてUserを変更してください):

[Unit]
Description=Glances Web Interface
After=network.target

[Service]
ExecStart=/usr/local/bin/glances -w
Restart=always
User=root

[Install]
WantedBy=multi-user.target

サービスを有効化します:

sudo systemctl daemon-reload
sudo systemctl enable --now glancesweb

Glancesをより効果的に活用するための実戦的なヒント

「アラート疲れ」への対処法

デフォルトでは、CPU使用率が80%に達するとGlancesは赤く表示します。負荷の高いデータ処理アプリを動かしている場合、CPUが90%に達するのは普通のことです。常に画面が真っ赤だと、本当のトラブルを見逃してしまいがちです。

解決策: /etc/glances/glances.conf にある設定ファイルをカスタマイズしましょう。私は情報のノイズを減らすために、CPUのWARNINGしきい値を90%に引き上げています。

Web UIのセキュリティ – 無防備なままにしない

パスワードなしでポート61208をインターネットに公開するのは大きなリスクです。誰でもあなたのサーバーで何が動いているかを知ることができてしまいます。

私は通常、以下の2つの保護レイヤーを適用しています:

  1. 直接パスワードを設定: glances -w --password コマンドを使用。
  2. Nginxによる制限: Glancesをlocalhostで実行し、Nginxをリバースプロキシとして使用してアクセスIPを制限するか、Basic認証を追加します。
# Nginxの設定例
location /glances/ {
    proxy_pass http://127.0.0.1:61208/;
    auth_basic "ログインが必要です";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Dockerコンテナのリソース監視

Dockerを使用している場合、Glancesは各コンテナのRAM/CPU消費量を詳細にリストアップします。どのコンテナがリソースを「食っている」のか、わざわざdocker statsを何度も打つことなく一目で確認できます。

おわりに

Glancesは大規模な集中監視システムを完全に代替するものではありませんが、非常に効果的な「最初の観測拠点」となります。高速、軽量、そして実用的です。サーバーがダウンしてからツールをインストールするのではなく、今日のうちに5分でセットアップを済ませておきましょう。そうすれば、週末の夜もぐっすり眠れるようになるはずですよ。

Share: