バラバラなインフラ運用の苦しみ
CiscoからMikrotikまで、あらゆる世代のスイッチやファイアウォールと、あちこちに点在する30〜40台のLinux/Windowsサーバーを管理するのは、SysAdmin(システム管理者)にとって「悪夢」と言えるでしょう。かつての私も、Zabbixでサーバーを、PRTGでスイッチのトラフィックを、さらに自作のPythonスクリプトでサービスをチェックするために、15個ものブラウザタブを同時に開いていました。トラブルが発生するたびに、根本的な原因を突き止める作業は「干し草の山から針を探す」ようなものでした。
さらに悪いことに、アラートの連携が取れていないという問題もありました。コアスイッチに障害が発生すると、システムはネットワーク機器という真の犯人を特定する代わりに、何百通もの「サーバーダウン」メールで爆撃してくるのです。これが、Checkmkのような「統合監視(Unified Monitoring)」ソリューションの価値に気づいた瞬間でした。
Checkmk – なぜZabbixやPrometheusではないのか?
Checkmkは必要以上に難解なものではありません。Prometheusが独自のクエリ言語であるPromQLとの格闘を強いたり、Zabbixが膨大なテンプレートでユーザーを困惑させたりする一方で、Checkmkはより実用的なアプローチを選んでいます。それがルールベースの設定(Rule-based configuration)です。
「自動検知(Auto-discovery)」機能こそが、私が最も気に入っている点です。100KB以下の超軽量エージェントをインストールするだけで、Checkmkが自動的にスキャンし、「ディスクが5つ、ネットワークカードが2枚、Apacheサービスが稼働しているのを見つけました。これらも監視しますか?」と提案してくれます。数回のクリックだけで、すべてが完了します。
Ubuntu 22.04/24.04へのCheckmkインストール
今回は、Checkmk Raw Edition (CRE) を使用します。これは完全に無料でオープンソースであり、中小規模企業のインフラを十分に支える能力を持っています。
ステップ1:サーバー環境の準備
VPSまたは物理サーバーが必要です。システムをスムーズに動作させるために、最低2つのvCPUと4GBのRAMを割り当ててください。Checkmkはデータアクセスの高速化のために監視データをメモリ上に直接保存するため、RAMは惜しまないようにしましょう。
sudo apt update && sudo apt upgrade -y
sudo apt install wget apt-transport-https gnupg -y
ステップ2:パッケージのインストール
Checkmkの公式サイトから最新版のリンクを取得してください。ここでは Ubuntu 22.04 (Jammy) 用のバージョン2.3.0を使用します。
wget https://download.checkmk.com/checkmk/2.3.0p1/check-mk-raw-2.3.0p1_0.jammy_amd64.deb
sudo apt install ./check-mk-raw-2.3.0p1_0.jammy_amd64.deb
インストールが完了すると、omd (Open Monitoring Distribution) コマンドが使えるようになります。これがCheckmkのインスタンスを管理するための「主要な武器」となります。
ステップ3:サイト(インスタンス)の作成
Checkmkでは、同じ物理サーバー上で複数の独立したサイトを実行できます。これは本番環境とテスト環境を分離したい場合に非常に便利です。
sudo omd create monitoring
sudo omd start monitoring
システムがadminユーザーとランダムなパスワードを生成します。この情報を保存し、http://<IP_SERVER>/monitoring からログインしてください。
最初のLinuxサーバーを監視する
複雑なSNMPのことは一度忘れましょう。Linuxでは、CheckmkはTCPポート6556経由でデータを送信する最小限のエージェントを使用します。
ホストへのエージェントインストール
ダッシュボードにアクセスし、Setup > Agents > Linux を探して、対象のサーバーに .deb ファイルをダウンロードします。
# 監視対象サーバーでの操作
sudo apt install ./check-mk-agent_2.3.0-1_all.deb
ダッシュボードへのホスト追加
手順は非常に直感的です:
- Setup > Hosts > Add host に移動します。
- ホスト名とIPアドレスを入力します。
- Save & run service discovery をクリックします。
すると、CheckmkがCPU、RAMから実行中のサービスまで、すべてをリストアップします。Accept all を押すだけです。最後に、新しい設定を有効にするために画面の角にある黄色の Changes ボタンを忘れずにクリックしてください。
ネットワーク機器の監視:SNMPの活用
スイッチやルーターの場合、唯一の頼みの綱はSNMPです。私は通常、手軽なSNMP v2cを使用するか、高いセキュリティが必要な場合はv3を使用します。IPアドレスとコミュニティ名を登録すると、Checkmkは各ポート(ポート1から24/48まで順番に)のトラフィックグラフを自動的に作成します。
ハードウェアが対応するOIDをサポートしていれば、デバイスの温度やファンの回転速度まで通知してくれるほどスマートです。
貴重な教訓:アラート疲れ(Alert Fatigue)に悩まされないために
Checkmkを使い始めた頃の最大の失敗は、あらゆるものに対してTelegram通知を有効にしたことでした。その結果、日曜日の夜、バックアップサーバーのCPU使用率がたった5分間100%になっただけで、スマホが激しく鳴り続けることになりました。
インフラ管理で生き残るためには、次の3つのルールを覚えておく必要があります:
- Criticalのみを通知: 本当に深刻な事態のみスマホに通知を送ります。Warningレベルはダッシュボードで確認するだけにとどめましょう。
- 遅延(Delay)の設定: エラーを検知してすぐに通知しないようにします。3〜5回のチェック(各1分間隔)の後もエラーが解消されない場合にのみメッセージを送信するように設定します。
- 現実的なしきい値(Threshold)の設定: デフォルトではディスク使用率80%がWarningですが、10TBのHDDであれば残り20%でも十分な容量があります。大容量ディスクには専用のルールを作成しましょう。
最後に
Checkmkは、強力な機能とシンプルさが完璧に融合したツールです. インターフェースは少し「クラシック」でサブメニューが多い印象を受けるかもしれませんが、ロジックを理解すれば、システム管理が格段に楽になります。毎朝の手動ログチェックから解放されたいなら、ぜひ今日からCheckmkを試してみてください。

