ドキュメント目次
監視
VMごとのポーリングを有効にし、収集されるメトリクスと実際のプローブコマンドを確認します。
ここでの監視はエージェント不要です。サーバーには何もインストールされず、追加のポートも 開きません。アプリは監視対象のVMごとに1つのSSH接続を維持し、ポーリングのたびに読み取り専用の コマンドをちょうど1つだけ実行します。
VMで有効にする
VMの Monitoring タブを開き、次の手順を行います。
- Enable を切り替えます。
- ポーリングに使用する認証情報を選択します。低権限アカウントを使うべきです。 ログイン認証情報 を参照してください。
- 間隔(秒)を設定します。ほとんどの場合、60秒が妥当なバランスです。
ポーリングは約15秒以内に開始されます。バックグラウンドの監視タスクが定期的に、どのVMが有効に なっているかを確認し、実行中のタスクと突き合わせます。オフに切り替えた場合も、同程度の時間内に タスクが停止します。
Poll now ボタンを押すと、次回の予定を待たずに即座に1回分のポーリングを実行できます。
Vaultがロックされると監視も停止する
ポーリングには認証情報が必要であり、認証情報はvault内にあります。そのため、
- Vaultをロック → すべてのポーリングタスクが停止します。
- Vaultをアンロック → タスクが自動的に再開します。
- 画面ロック → 影響なし。ポーリングは通常どおり継続します。
収集されるメトリクス
| グループ | 内容 |
|---|---|
| System load | 稼働時間、1分間のロードアベレージ、CPU使用率 |
| Memory | RAM使用量/合計、スワップ使用量/合計 |
| Disk | マウントごとの使用量、合計、使用率 |
| Network | 受信/送信速度(バイト毎秒) |
| Processes | CPU使用率上位6プロセス |
| Security | リッスン中のポート、アカウント、authorized SSH鍵、sudoers、ログインログ |
CPU使用率とネットワーク速度は連続する2回のポーリングの間で算出されます。そのため、監視を 有効にした直後の最初のポーリングでは、この2つの値は取得できません。
履歴と保持期間
- 生のサンプルデータは14日間保持された後、削除されます。
- その間、データは日次サマリーに集計され、長期保存されます。月次レポートは生のサンプルでは なく、このサマリーテーブルから読み込みます。もし生のサンプルを読んでいたら、「月次レポート」と 称していても実際には2週間分しか含まれない、ということが黙って起きてしまいます。
監視タブのグラフは、14日間の生サンプルウィンドウから描画されます。
サーバーが応答しない場合
1回のポーリング失敗は正常な範囲内です。2回連続で失敗すると、そのVMは到達不能としてマーク され、イベントが生成されます。
失敗のたびに、ポーリング間隔は段階的に後退し(最大5分)、応答のないマシンに負荷をかけ続けることを 避けます。復旧した際には間隔が通常に戻り、復旧イベントが記録されます。
プローブコマンド
これは、顧客から「あなたのソフトウェアは私たちのサーバー上で何を実行しているのか」と聞かれたときに 必要になるものです。このコマンドはソースコード内の定数であり、ユーザーデータから組み立てられる ことは一切なく、アプリはそれをそのまま表示します(監視タブの View probe command ボタン)。
LC_ALL=C; export LC_ALL
echo '@@VMOPS:uptime@@'; cat /proc/uptime
echo '@@VMOPS:load@@'; cat /proc/loadavg
echo '@@VMOPS:cpu@@'; grep '^cpu ' /proc/stat
echo '@@VMOPS:mem@@'; grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree):' /proc/meminfo
echo '@@VMOPS:net@@'; cat /proc/net/dev
echo '@@VMOPS:disk@@'; df -P -k
echo '@@VMOPS:procs@@'; ps -eo pcpu,pmem,comm --sort=-pcpu | head -6
echo '@@VMOPS:ports@@'; ss -H -tuln || netstat -tuln
echo '@@VMOPS:users@@'; cut -d: -f1,3,7 /etc/passwd
echo '@@VMOPS:keys@@'; # readable authorized_keys file contents
echo '@@VMOPS:sudoers@@'; cat /etc/sudoers /etc/sudoers.d/*
echo '@@VMOPS:auth@@'; journalctl -u sshd # or /var/log/auth.log
echo '@@VMOPS:fail2ban@@'; fail2ban-client status sshd
echo '@@VMOPS:end@@'
この設計の背後には4つの原則があります。
1回の往復のみ。 すべてのポーリングは、ちょうど1回の sh -c 実行で1つの区切り付きのまとまった
出力を返します。30台のマシンを1分ごとに監視するからといって、300個のexecチャンネルを開くようなことは
あってはなりません。
top ではなく /proc を読む。 top、vmstat、free の出力はディストリビューションや
ロケールによって変わりますが、/proc は変わりません。
固定されており、監査可能。 このコマンドは入力データから組み立てられることが一切ないため、 コマンドインジェクションの余地がなく、その内容は常に検証可能です。
壊れず、必ず劣化にとどめる。 rootが必要でそれが利用できない項目は空で返り、それ以外の ポーリング結果は問題なく取得できます。