Checkmk 101: 単一のダッシュボードであらゆるITシステムを監視する

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

バラバラなインフラ運用の苦しみ

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

ダッシュボードへのホスト追加

手順は非常に直感的です:

  1. Setup > Hosts > Add host に移動します。
  2. ホスト名とIPアドレスを入力します。
  3. 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を試してみてください。

Share: