This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. SNMP とは何ですか?
1.1. Checkmk エージェントの代わりに SNMP を使用する
ルーター、スイッチ、ファイアウォール、プリンター、アプライアンス、UPS、ハードウェアセンサー、およびその他の多くのデバイスでは、Checkmkエージェントをインストールできません。 ただし、これらのデバイスには、メーカーが提供する監視用のインターフェイス(SNMPエージェント)がすでにビルトインされています。 このエージェントには、シンプルネットワーク管理プロトコル(SNMP)を介してアクセスできます。 Checkmkは、SNMPを使用してこのようなデバイスを監視します。 この方法の利点は、監視の設定が非常に簡単であることです。
Windows および Linux 用の SNMP エージェントもありますが、Checkmkエージェントの代わりに使用することは推奨されません。 SNMP はパフォーマンスがあまり高くないため、これを監視に使用すると、通常、Checkmk サーバーは、独自のエージェントを使用する場合よりも、ホストごとに多くの CPU およびメモリを必要とします。 さらに、SNMP 経由で提供されるデータは不完全です。 ただし、Checkmkエージェントに加えてSNMP による監視が役立つ場合もあります。 このトピックスの詳細については、SNMP および Checkmk エージェントの章をご覧ください。
ただし、特定のハードウェアまたはソフトウェアコンポーネント(RAID コントローラなど)を監視するための Checkmk エージェントプラグインがないが、そのコンポーネントに SNMP インターフェースがある場合は、SNMP 経由で追加の監視データを収集することができます。 その場合は、クエリ間隔を十分に長く設定してください。
Checkmk による SNMP デバイスの監視は非常に簡単です。 SNMP をすぐに使い始めたい場合は、ビギナーズガイドの SNMP に関する短いセクションをお読みください。 一方、この記事では、Checkmk による SNMP 監視について、より深く掘り下げ、詳細や具体的なシナリオを紹介しています。
1.2. SNMP バージョン
SNMP プロトコルには、さまざまなバージョンがあります。 これらのプロトコルは互いに互換性がありません。そのため、監視システムと監視対象デバイスは、常に同じプロトコルバージョンを使用する必要があります。 Checkmk は、バージョン v1、v2c、および v3 をサポートしています。 実際には、インストール例の 99% が v2c を使用しています。 SNMP の関連バージョンすべての概要は、次のとおりです。
| バージョン | 機能 | Checkmk | 説明と実際の適用例 |
|---|---|---|---|
v1 |
はい |
v2cをサポートしていない、またはv2cのサポートに不具合がある非常に古い(例えば15年以上経過した)デバイスでのみ使用してください。 |
|
v2c |
一括クエリ、 |
はい |
これは、実際の標準です。 v2c は v2 の「軽量」バージョンであり、ここで「c」は SNMP でパスワードの役割を果たすコミュニティを表します。 64 ビットカウンターは、1 Gbit/s 以上のスイッチポートを監視する際に不可欠です。 一括クエリにより、監視が最大 10 倍高速化されます。 |
v2 |
セキュリティ |
いいえ |
バージョン 2 は、v2c の機能に加え、さらに優れたセキュリティオプションを提供します。
SNMP のバージョン 2 は実践では使用されていないため、CMK はこのプロトコルバージョンをサポートしていません。
セキュリティが必要な場合は、バージョン 3を使用してください。 |
v3 |
セキュリティ |
はい |
バージョン 3 は、SNMP トラフィックを暗号化する場合に使用されます。 v2c および v1 では、コミュニティを含め、これはプレーンテキストで実行されます。 実際には、バージョン 3 はあまり一般的ではありません。このバージョンは、v2c よりもはるかに高い計算能力を必要とし、設定コストも大幅に高くなるためです。 コンテキストとは、コンテキスト ID に応じて、SNMP データ構造 (OID) の同じ領域で異なる情報が表示されるという概念です。 これは、たとえばファイバーチャネルスイッチの分割に使用されます。 |
SNMPv3 は、適切なルールを有効にしている場合にのみ、その設定に SNMPv3 形式のアクセスデータを含むホストに適用されます。 |
1.3. SNMP トラップ
Checkmk は、SNMP 監視にアクティブな要求、つまりプル方式を使用します。 Checkmk は、特定のデータの提供を要求する SNMP 要求を含む UDP パケット (ポート 161) をデバイスに送信します。 その後、デバイスは、応答データ (またはエラーメッセージ) を含む UDP パケットで応答します。
SNMP には 2 つ目のプロセス、SNMP トラップがあります。 これは、デバイスが、設定されたアドレスに UDP (ポート 162) 経由でプッシュモードで送信する自発的なプッシュメッセージです。 トラップには、アクティブリクエストに比べて多くの欠点があるため、監視にはあまり重要ではありません。 その欠点のいくつかを以下に示します。
トラップは信頼性が低い。 UDPパケットが失われる可能性があります。 受信確認がありません。
ほとんどの場合、エラーメッセージのみ送信され、リカバリメッセージは送信されません。 そのため、監視の現在のステータスが不明確になります。
何千ものスイッチが同時にトラップを送信した場合(たとえば、重要なアップストリームサービスが利用できない場合など)、トラップ受信機はそれを処理できず、負荷によって機能しなくなります。 その結果、最も必要なときに監視が過負荷になります。
トラップ受信機の IP アドレスを変更する場合、すべてのデバイスを再設定する必要があります。
トラップはテストが難しいです。 実際のエラーメッセージをテストすることはもちろん、一般的なテストトラップを送信する機能を備えたデバイスはほとんどありません。 そのため、数か月または数年後に初めて呼び出されたときに、重要なトラップが正しく処理されるかどうかを予測することは困難です。
ただし、トラップを使用したい、または使用する必要がある場合は、イベントコンソールがソリューションとなります。 イベントコンソールは、トラップを受信し、そこからイベントを生成することができます。
2. Checkmk で SNMP を設定する
2.1. デバイスの準備
まず、デバイスを準備します。 SNMP をサポートする各デバイスには、その設定のどこかに独自の設定マスクがあります。 この設定マスクで、以下の設定を行います。
アクティブなクエリ (SNMP GET) の設定に移動します。 (トラップと混同しないでください。設定ダイアログの用語は非常に紛らわしい場合があります)。
SNMP の読み取り要求を有効にします。
許可する IP アドレスとして、Checkmk サーバーのアドレスを入力します。 ここに Checkmk テストサイトも指定しておくと便利です。 重要:複数の冗長 Checkmk サーバーがある場合は、フェイルオーバー後に使用する IP アドレスも指定することを忘れないでください。 特に Checkmk アプライアンスの場合、送信接続の送信元 IP アドレスとして、サービス IP アドレスではなく、アクティブノードの IP アドレスが使用されます。 分散環境では、デバイスを監視するリモートサイトの IP アドレスが重要です。
プロトコルバージョン v1 および v2c を使用する場合は、コミュニティを割り当ててください。
コミュニティは、SNMP にはユーザー名がないことを除いて、一種のパスワードです。
コミュニティはpublic とするのが慣例です。
これは多くのデバイス、および Checkmk のデフォルト設定です。
もちろん、これは安全ではないため、別のコミュニティを指定すべきだと主張することもできます。
これは確かに理にかなっていますが、SNMP はコミュニティをプレーンテキストで送信します(SNMP バージョン 3 を除く)。したがって、パケットを傍受できる者は誰でも、コミュニティを非常に簡単に特定することができます。
その一方で、アクセスは読み取り専用に制限されており、SNMP 経由で取得できる情報のほとんどはそれほど重要ではありません。
さらに、デバイスごとに異なるコミュニティを使用すると、そのハンドルが非常に面倒になります。 結局、コミュニティはデバイスだけでなく、監視システムでも管理する必要があります。 そのため、実際には、ユーザーは通常、どこでも同じコミュニティを使用します。少なくとも、地域、部門、データセンターなど、同じ場所では同じコミュニティを使用します。
ヒント:SNMP バージョン 3 を使用せずにセキュリティを強化したい場合は、ネットワークの概念を拡張して、管理サービス(つまり SNMP も)のトラフィックを別の管理 VLAN に配置し、そのアクセスをファイアウォールで保護することをお勧めします。
2.2. Checkmk にデバイスを追加する
通常どおり、監視対象デバイスを Checkmk にホストとして追加します。 SNMP デバイスを 1 つのフォルダにのみ格納するようにフォルダ構造を設定した場合は、そのフォルダで直接その他の設定を行うことができます。 これにより、後でホストを追加するのが容易になり、エラーも回避できます。

ホスト(またはフォルダ)のプロパティで、[Monitoring agents ] ボックスの [Checkmk agent / API integrations ] を [No API integrations, no Checkmk agent] に設定します。
同じボックスで、[SNMP ] も有効にし、SNMP プロトコルとして [SNMPv2 or v3] を選択します。 プロトコルバージョン 1 の選択は、非常に古いデバイス向けの暫定的な解決策です。 これは、v2 が本当にサポートされていないことが分かっている場合、またはデバイスの実装に欠陥がある場合(実際にはごくまれなケース)にのみ使用してください。 何よりも、SNMP バージョン 1 は一括アクセスをサポートしていないため、非常に低速です。 この違いは非常に大きいです。
3 番目の最後の設定は、SNMP credentials です。 ここでも、v2c と v3 が異なるため、プロトコルのバージョンを選択する必要があります。 バージョン 3については、以下で説明します。 セキュリティ要件がそれほど高くない場合は、v2c で十分です。または、SNMP 通信を管理 VLAN に配置して、セキュリティを確保することもできます。 SNMPv2c では、前述のようにコミュニティの入力が必要です。
SNMP 認証情報をフォルダ構造で簡単に渡すことができない場合は、SNMP 認証情報を設定する別の方法があります。Setup > Agents > SNMP rules > SNMP credentials of monitored hosts ルールセットです。 これにより、ホストタグ、ラベル、および同様のプロパティに基づいて認証情報を割り当てることができます。 原則として、ホストまたはフォルダで直接設定されたコミュニティは、ルールよりも常に優先されます。
SNMP および Checkmk エージェントによる監視
Checkmk エージェントの代わりに SNMP を使用して Linux または Windows を監視することは不可能ではないか、あるいは有用ではないかと疑問が投げかけられることがあります。 答えは簡単です。可能ですが、有用ではありません。なぜでしょうか?
SNMP エージェントの監視データは非常に限られています。したがって、ある程度有用な監視を行うためには、いずれにせよ Checkmk エージェントが必要になります。
SNMP エージェントは、Checkmk エージェントが提供しないような意味のあるデータを提供しません。
SNMP エージェントの設定はより面倒です。
最後に、SNMP プロトコルは、Checkmk による通常の監視よりも、はるかに多くの CPU およびネットワークリソースを必要とします。
ただし、Checkmkエージェントに加えてSNMP による監視が役立つ場合がいくつかあります。 その場合は、LinuxおよびWindows 用の Checkmk エージェントの両方が必要になります。 典型的な例としては、ソフトウェアまたはハードウェアコンポーネント(RAID コントローラなど)に、サーバーメーカーのツールがインストールされており、Fujitsu ServerView の場合のように SNMP 経由でのみ監視データを提供する場合があります。 その場合は、SNMP 経由で追加の監視データを収集することができます。 この場合、クエリ間隔が十分に長いことを確認してください。 Windows では、使用している Windows のバージョンや、アプリケーション用のコマンドレットがないために、パワーシェルによるクエリが実行できない場合もあります。
このような場合、CheckmkエージェントとSNMP を使用して Linux または Windows ホストを監視したい場合は、次の手順を実行してください。 ホストのプロパティの [Setup ] メニューの [Monitoring agents ] ボックスで、[Checkmk agent / API integrations ] オプションを Checkmk エージェント (API integrations if configured, else Checkmk agent またはConfigured API integrations and Checkmk agent) の値に設定します。 同じボックスで、[SNMP ] オプションを有効にし、上記のように値をSNMPv2 or v3 またはSNMP v1 に設定します。

SNMP と Checkmk エージェントの両方で利用可能なサービス (CPU 使用状況、ファイルシステム、ネットワークカードなど) は、SNMP ではなく Checkmk エージェントから自動的に取得されます。
2.3. 診断
設定が完了したら、診断ページに少し立ち寄ってみてください。 そのためには、アクションバーボタン「Save & go to connection test 」で保存してください。 以下は、スイッチの診断の例です。 SNMP のさまざまなプロトコルバージョンが同時に試されます。
SNMPv1
SNMPv2c
一括要求のない SNMPv2c
SNMPv3
通常の現代的なデバイスは、4つのバリエーションすべてに対して同じデータで応答する必要があります。ただし、設定によっては制限される場合があります。 結果は次のように表示されます:

4つの情報出力は次のように説明されています:
|
メーカーがデバイスのファームウェアにハードコードした、デバイスの説明です。このテキストは、Checkmk がサービスを自動的にディスカバリーするために非常に重要です。 |
|
このフィールドは、連絡先を指定するためのフィールドで、デバイス設定でユーザーによって定義されます。 |
|
これは、デバイスのホスト名です。このフィールドもデバイスで設定されます。実際の監視では、この名前はそれ以上の役割は果たさず、情報としてのみ表示されます。ただし、このホスト名が Checkmk のホスト名と一致している方が、意味があり、便利です。 |
|
これは、デバイスの場所を入力するための自由入力フィールドです。純粋に情報用です。 |
2.4. サービス設定
SNMP デバイスの特別な機能
ホストのプロパティ(およびオプションで診断)を保存した後、通常はサービスの設定に進みます。 この設定にはいくつかの特徴があります。これは、SNMP デバイスでは、Checkmk エージェントで監視されるホストとは内部的にサービスディスカバリーの方法が大きく異なるためです。 Checkmk は、エージェントの出力を確認し、個々のチェックプラグインを使用して、関心のある項目を見つけることができます。 SNMP では、もう少し手間がかかります。 Checkmk は、検出を実行してすべての SNMP データ(SNMP ウォーク)の完全な出力を生成し、その中から興味のある情報を探すことはできますが、1 回の検出に数時間かかるデバイスもあります。
しかし、Checkmk にはよりスマートなアプローチがあります。
まず、デバイスから最初の 2 つのレコード (OID) だけ、つまりsysDescr およびsysObjectID を取得します。
その後、必要に応じてさらにクエリが呼び出されます。
その結果に基づいて、1,000 個近く用意されている SNMP チェックプラグインが、そのデバイスが実際にこのプラグインをサポートしているかどうかを判断します。
Checkmk はこの段階をSNMP スキャンと呼んでおり、その結果、実際のサービスディスカバリー候補となるチェックプラグインのリストがソフトウェアによって作成されます。
2 番目のステップでは、実際の検出が実行されます。 検出されたプラグインは、ローカル SNMP クエリを使用して必要なデータを正確に取得し、このデータを使用して監視するサービスを決定します。 取得されるデータは、後で監視のために定期的に取得されるデータとまったく同じです。
LAN 内のデバイスでは、通常、このプロセス全体にそれほど時間はかかりません。数秒以上かかる場合は例外です。 ただし、レイテンシーの大きい WAN リンクを介してデバイスを監視する場合、スキャン全体に数分かかることもあります。 もちろん、何百ものポートを持つスイッチの場合も、スキャンに時間がかかります。 サービスのページを開くたびに、毎回それほど長く待たなければならないとしたら、非常に不便です。
そのため、セットアップでは通常、スキャンをスキップし、ホストですでに使用されているチェックプラグインのみを使用して検出を行います。 SNMP ウォークは、通常の監視を通じてキャッシュファイルとしてすでに利用可能になっているため、検出にはそれほど時間はかかりません。 これにより、既存のプラグインから新しい項目 (新しいスイッチポート、ハードディスク、センサー、VPN など) を見つけることはできますが、まったく新しいプラグインを見つけることはできません。
Full service scan ボタンをクリックすると、SNMPスキャンが強制的に実行され、SNMP経由で最新のデータが取得されます。 その結果、まったく新しいプラグインのサービスも検出されます。 応答の遅いデバイスは、しばらく待つ必要がある場合があります。
標準サービス
SNMP 経由で監視するデバイスに関係なく、少なくとも次の 3 つのサービスが設定に存在する必要があります。

最初のサービスは、ネットワークポートを監視するチェックです。 少なくとも 1 つはデバイスに存在し、アクティブである必要があります。そうしないと、SNMP は機能しません。 通常、Checkmk は、サービスディスカバリー時(動作状態「UP」)にアクティブなすべてのポートを監視対象に含めるように事前設定されています。 これは、Setup > Services > Service discovery rules > Network interface and switch port discovery ルールセットで変更できます。
ちなみに、ビギナーズガイドには、スイッチポートを設定する際のベストプラクティスに関する章があります。
2 つ目は、診断で表示されたのと同じ 4 つの情報を表示するSNMP Info サービスです。 これは純粋に情報提供のための機能であり、常にOK です。
最後に、Uptime サービスがあります。これは、デバイスが最後に再起動された時刻を表示します。 このサービスは、デフォルトでは常にOK ですが、アップタイムの上限と下限の閾値を設定することができます。
3. デバイスが問題を引き起こす場合
3.1. 欠陥のあるSNMP実装
SNMP を実装する際に理論的に起こりうるミスは、実際にはすべて、あるメーカーによってすでに犯されているようです。 そのため、SNMP は問題なく動作するものの、プロトコルの特定の部分が機能しない、または誤って実装されているデバイスがあります。
問題が発生するのは商業版の場合、その理由の一つとして、デフォルトで有効になっている、より高性能なインライン SNMP実装が、snmpget よりも標準への準拠に重きを置いていることが考えられます。
デバイスがまったく応答しない、または応答が不安定な場合は、影響を受けるデバイスのインライン SNMP をオフにして、より堅牢で大幅に速度の遅いsnmpget を有効にすると、問題が解決する場合があります。
コマンドラインでのテストでは、コマンドcmk には、いくつかのオプションに追加の--snmp-backend オプションがあり、inline (インライン SNMP を使用)、classic (snmpget を使用)、stored-walk (保存されたSNMP ウォークを使用) をパラメータとして受け付けます。
コマンドラインでのテストが成功した場合は、Hosts not using inline SNMP ルールセットを使用して、インライン SNMP を永続的に使用しないホストを指定することができます。
sysDescrへの要求に応答がない
考えられるエラーの 1 つは、SNMP エージェントが標準情報の要求に応答しない場合です。たとえば、sysDescr に対する応答がない場合などです。
このようなデバイスは、診断では事実上死んでいるのと同じであり
、特別な設定を行わない限り、サービスディスカバリーに結果を送信することはありません。
これを行うには、影響を受けるホストに対して、Setup > Agents > SNMP rules > Hosts without system description OID に、Positive match (Add matching hosts to the set) オプションを指定したルールを作成します。
Checkmk は、すべてが正常であると単純に判断し、sysDescr によるテストをスキップします。
このテキストで特定の部分を期待するチェックプラグインは検出されませんが、影響を受けるプラグインはこのような条件に対応するように設計されているため、実際には問題はありません。
SNMPv2c は動作しますが、一括リクエストは失敗します
一部のデバイスはバージョン v2c をサポートしており、診断でこれに対する応答を返しますが、プロトコルにはGetBulk コマンドの実装がありません。
これは、Checkmk が 1 つのリクエストでできるだけ多くの情報を取得するために使用し、パフォーマンスにとって非常に重要です。
このようなホストでは、SNMP Info やSNMP Uptime などの単純な SNMP チェックは機能しますが、他のサービス、特に各デバイスに必ず存在しなければならないネットワークインターフェイスは機能しません。
実際にこのようなホストがある場合は、v2c で実行できますが、一括リクエストは使用できません。 このようなホストは、次のように設定してください。
ホストプロパティの SNMP バージョンをSNMPv1 に設定します。
Setup > Agents > SNMP rules > Legacy SNMP devices using SNMPv2c ルールセットで、ホストのルールを作成し、値を通常Positive match (Add matching hosts to the set) に設定します。
これにより、バージョン 1 が設定されていても、ホストは SNMPv2c プロトコルを使用するよう強制されます。ただし、バルクウォークは使用されません。 ちなみに、SNMPv1 は 64 ビットのカウンタをサポートしていないため、サポートされている場合でも使用は推奨しません。 これにより、トラフィックの多いネットワークポートの測定データが欠落したり、誤ったデータが取得される可能性があります。
応答が非常に遅いデバイス
一部のデバイスでは、SNMP クエリの実行に非常に長い時間がかかる場合があります。 これは、実装が正しくないことが一因です。 この場合は、SNMPv1 に戻すことで問題が解決する場合があります。SNMPv1 は通常、SNMPv2c よりもはるかに低速ですが、破損した SNMPv2c よりも高速である場合もあります。 ただし、これを試す前に、製造元が問題解決のためのファームウェアのアップグレードを提供していないかどうかを確認してください。
2 つ目の原因は、デバイスにスイッチポートが非常に多く、SNMP の実装も遅い場合です。 ごく一部のポート(たとえば、最初の 2 つのポートのみ)を監視したい場合は、指定したポートのみポーリングするように Checkmk を手動で制限することができます。詳細については、以下の「パフォーマンス」をご覧ください。
3.2. 標準サービスのみが見つかる
SNMP デバイスを監視対象に含めたにもかかわらず、Checkmk はSNMP Info およびSNMP Uptime サービスとインターフェースしか認識しません。 この問題には、いくつかの原因が考えられます。
a) プラグインがない
Checkmk は、SNMP デバイス用に 1,000 近くのチェックプラグインを提供していますが、このリストも当然、完全ではありません。 特定のデバイスに対して Checkmk が特定のプラグインを提供していない場合があり、その場合は、前述の標準サービスのみ監視することになります。この場合、以下のオプションがあります。
ユーザーが独自のプラグインをアップロードできるCheckmk Exchange で、適切なプラグインを見つけることができます。
プラグインを自分で開発します。このユーザーガイドに記事があります。
弊社のサポートチームまたはパートナーに連絡して、適切なプラグインの開発を依頼してください。
b) プラグインが認識されない
デバイスの新しいファームウェアバージョンにより、Checkmk プラグインがデバイスを認識しなくなる場合があります。これは、デバイスのシステム説明のテキストが変更されたことが原因である場合があります。 このような場合、既存のプラグインを適応させる必要があります。 この場合は、弊社のサポートチームにお問い合わせください。
c) デバイスが必要なデータを送信しません
一部の(ごく一部の)デバイスでは、SNMP 設定で特定の情報エリアへのアクセスを個別に設定することができます。 お使いのデバイスは、デフォルトの情報を配信するように設定されているものの、デバイス固有のサービスに関する情報は配信しないように設定されている可能性があります。
一部のデバイスでは、必要なデータを取得するためにSNMPv3とコンテキストを使用する必要があります。
3.3. SNMP にまったく応答しないデバイス
ping は機能するが、SNMP プロトコルのどのバージョンも機能しない場合、いくつかの原因が考えられます。
デバイスが IP 経由でまったく到達できない。 これは、ping テスト(最初のボックス)でチェックできます。
デバイスが SNMP をまったくサポートしていません。
SNMP 共有が正しく設定されていません (有効化、許可されたアドレス、コミュニティ)。
ファイアウォールがSNMPをブロックしています。 UDPポート161を、送信と受信の両方のトラフィックに対して開く必要があります。
4. SNMPv3
4.1. セキュリティ
デフォルトでは、SNMP は暗号化されていないため、ネットワーク上でプレーンテキストとして送信されるコミュニティによる認証は非常に脆弱です。 このレベルは、監視が読み取り専用の操作に限定されているローカルで孤立したネットワークではまだ十分であるかもしれません。
さらに高いセキュリティレベルが必要な場合は、SNMP バージョン 3 が必要です。 これにより、暗号化と本物の認証のオプションが利用可能になります。 ただし、このためには、対応する設定も必要です。
SNMPv3 では、さまざまなセキュリティレベルが認識されます。
|
実際のユーザーベースの認証はなく、暗号化もありません。 ただし、v2c よりも優れた点は、パスワードがプレーンテキストで送信されるのではなく、ハッシュ化されることです。 |
|
名前 (Security name) とパスワードによるユーザーベースの認証ですが、暗号化は行われません。 |
|
|
Checkmk で必要な設定は、コミュニティを定義した場所、つまりホストのプロパティまたはSNMP credentials of monitored hosts ルールで行います。 そこで、SNMP Community の代わりに、v3 の 3 つのレベルから 1 つを選択し、必要な値を設定します。

4.2. コンテキスト
SNMPv3 では、コンテキストの概念が導入されています。 デバイスは、SNMP ツリー内の同じポイントで、クエリで指定されたコンテキスト IDに応じて異なる情報を表示することができます。
このようなコンテキストで動作するデバイスがある場合は、Checkmk で 2 つの設定を行う必要があります。
まず、SNMPv3 を使用してデバイスをクエリする必要があります(前のセクションで説明)。
次に、SNMPv3 contexts to use in requests ルールセットに別のルールが必要です。 ここで、コンテキストをアクティブにするチェックプラグインを選択し、監視でクエリするコンテキストのリストを選択します。
幸い、コンテキストを使用しなければならない状況はごくわずかです。なぜなら、監視ではコンテキストを自動的に認識することができないからです。 コンテキストは、常に手動で設定する必要があります。
5. パフォーマンスとタイミング
5.1. インライン SNMP
パフォーマンスは、特にホストの多い環境では常に重要な要素です。SNMP による監視は、Checkmk エージェントによる監視よりも CPU およびメモリの消費量が多くなります。
Checkmk Raw は、snmpget またはsnmpbulkwalk コマンドを使用して従来の方法で SNMP 要求を実行しますが、商業版には、追加のプロセスを生成することなく SNMP 要求を非常に効率的に実行する SNMP エンジンがビルトインされています。
これにより、SNMP 処理の CPU 負荷が約半分になります。
ポーリング時間が短縮されるため、同時に必要な Checkmk プロセスの数も減り、メモリ使用量も削減されます。
5.2. SNMP チェックのチェック間隔
リソースが限界に達した場合、または 1 台のデバイスのポーリングに 60 秒以上かかる場合は、Checkmk がホストにクエリを送信する間隔を短縮することができます。 ホストの Checkmk サービスに特別に適用する「Normal check interval for service checks 」ルールセットを使用すると、1 分間の一般的な間隔を 2 分や 5 分などに延長することができます。
特に SNMP チェックには、Fetch intervals for SNMP sections ルールセットもあります。 これにより、個々のチェックプラグインの間隔を短縮することができます。Check_MK サービスによる一般的な監視の間隔よりも短い間隔を設定することはできないことをご留意ください。
ただし、監視は、1 分間の標準間隔を維持し、例外的な場合のみ、個々のホストまたはチェックの間隔を長くするように設計することをお勧めします。
5.3. SNMP アクセス用のタイミング設定
デフォルトでは、Checkmk は SNMP 要求に対して 1 秒以内に応答を期待します。 また、応答がない場合は合計 3 回試行します。 応答が非常に遅いデバイス、または非常に遅いネットワーク経由でしかアクセスできないデバイスでは、これらのパラメータを変更する必要がある場合があります。 この設定は、Timing settings for SNMP access ルールセットで行います。

これらの設定は個々の SNMP 要求に適用されることにご注意ください。 ホストの監視プロセス全体は、多くの個別の要求で構成されています。 したがって、合計タイムアウトは、ここで指定した設定の倍数になります。
5.4. バルクウォーク: バルクごとの OID の数
デフォルトでは、SNMP は 1 つのGetBulk リクエストにつき 10 件の応答を 1 つのパケットで送信します。Bulk walk: Number of OIDs per bulk 実験的なルールセットを試して、より大きな値の方がパフォーマンスが向上するかどうかを確認してください。
ただし、これは、ホストに大規模なテーブルが転送される場合(たとえば、多くのポートを備えたスイッチの場合)にのみ当てはまります。
SNMP は、実際に必要なレコードを含む、指定した数までパケットを常に埋めます。 これらのレコードのうち実際に必要なものがごくわずかである場合は、余分なデータが無駄に転送され、オーバーヘッドが増加します。
一方、実際には、一括あたり 10 OID というデフォルト値の設定のデバイスで問題が発生する場合があります。 そのような場合は、この数を減らすとよいでしょう。
5.5. SNMP OID 範囲の制限
Checkmk は通常、実際に監視されていないスイッチポートもすべて取得して動作します。 これは、効率的な一括リクエストでは単一のクエリを実行できないため、通常はこの方が高速であるため、良いことです。 さらに、当社の観点からは、エラー率の高いポートやケーブルを見つけるために、すべてのポートを監視することを常にお勧めしています。 ポートが確実に UP になっていない場合は、リンクステータスDOWN をOK としてフラグを立てることもできます。
ただし、スイッチのポート数が非常に多く、何らかの理由で応答が非常に遅い、または SNMP の処理効率が非常に悪いという、ごくまれなケースがあります。このような場合、すべてのポート情報を完全に取得して監視することはできなくなります。
このような場合、Bulk walk: Limit SNMP OID Ranges ルールセットを使用します。 これにより、照会するデータ (ポートなど) のリストを静的に制限することができます。 ルールの値では、特定のチェックプラグインごとに、対応するテーブルのどのインデックスを取得するかを指定します。
スイッチポートの通常のチェックタイプは、SNMP interface check with 64 bit counters (using v2c) です。 次の例は、SNMP 経由で最初の 2 つのポートのみを取得する設定を示しています。

注:このフィルタリングは、サービスディスカバリーおよび監視の前に有効になります。Network interface and switch port discovery の設定によっては、この 2 つのポートが実際に監視されるとは限りません。
6. SNMP ウォークによるシミュレーション
6.1. 原理
Checkmk SNMP エンジンには、非常に便利な機能があります。監視対象デバイスに、その SNMP データの完全なスナップショット(SNMP ウォーク)をファイルに書き込むことができます。 このファイルは、後で別の Checkmk サーバーでデバイスの監視をシミュレートするために使用できます。この別のサーバーがデバイスに実際にネットワーク接続していなくても問題ありません。
この機能は、サポートチームがお客様のために新しいチェックプラグインを開発する場合などに、非常に頻繁に使用されます。 そのため、開発者はお客様のデバイスにアクセスする必要はなく、SNMP ウォークだけで済みます。
6.2. GUI によるウォークの作成
SNMP ウォークは、GUI から直接作成できます。 この機能は、ホストのCheck_MK サービスのアクションメニュー、およびホストのアクションメニュー(Download SNMP walk エントリ)にあります。

ウォークの作成は、最良の場合数秒で完了しますが、数分かかることも珍しくありません。 作成が完了すると、Result ラインから作成されたファイルをダウンロードできます。
6.3. コマンドラインからウォークを作成する
または、コマンドラインからウォークを作成することもできます。
デバイスが監視されているサイトにログインします。
ウォークの作成は、cmk --snmpwalk コマンドと指定したホスト(監視で設定する必要があります)を指定するだけで簡単に行えます。
OMD[mysite]:~$ cmk --snmpwalk switch23また、-v スイッチを使用すると、進行状況の詳細出力を表示できます。
OMD[mysite]:~$ cmk -v --snmpwalk switch23
switch23:
Walk on ".1.3.6.1.2.1"...3664 variables.
Walk on ".1.3.6.1.4.1"...5791 variables.
Wrote fetched data to /omd/sites/mysite/var/check_mk/snmpwalks/switch23.ファイルは、var/check_mk/snmpwalks ディレクトリに、単にホスト名という名前で保存されます。
これはテキストファイルです。
興味がある場合は、lessなどを使ってこのファイルを表示し、Q キーでプログラムを終了することができます。
OMD[mysite]:~$ less var/check_mk/snmpwalks/switch23
.1.3.6.1.2.1.1.1.0 Yoyodyne Frobolator 23 port L2 Managed Switch
.1.3.6.1.2.1.1.2.0 .1.3.6.1.4.1.11863.1.1.3
.1.3.6.1.2.1.1.3.0 560840147
.1.3.6.1.2.1.1.4.0 Zoe Zhang
.1.3.6.1.2.1.1.5.0 cmkswitch23
.1.3.6.1.2.1.1.6.0 Data Center 42
.1.3.6.1.2.1.1.7.0 3
.1.3.6.1.2.1.2.1.0 27コマンドcmk --snmpwalk には、さらに便利なオプションがあります。
| オプション | 効果 |
|---|---|
|
Checkmk がホストのウォークを実行すると、通常、SNMP データ領域から 2 つのサブツリーが取得されます。これらは、SNMP ツリーでOID(オブジェクト識別子) を使用して指定されます。これらは、 |
|
このオプションは |
|
|
|
|
6.4. 保存したウォークを使用したシミュレーション
このウォークを別の (または同じ) Checkmk サイトでシミュレーションに使用したい場合は、このサイトのホスト名でウォークファイルをvar/check_mk/snmpwalks に保存してください。
サイトユーザーがファイルの所有者であり、許可が0600 (所有者のみが読み書き可能) に設定されていることを確認してください。
次に、Simulating SNMP by using a stored SNMP walk ルールセットで、影響を受けるホストにアクセスするルールを作成します。
これ以降、保存したファイルのみがホストの監視に使用されます。
ホストへのネットワークアクセスは、ホストチェックのための ping および設定済みのアクティブチェックを除き、一切行われません。
ホストに IP アドレス127.0.0.1 を指定することで、これらを Checkmk サーバーにリダイレクトすることができます。
7. ファイルおよびディレクトリ
| ファイルパス | 説明 |
|---|---|
|
SNMP ウォークファイルが生成される場所、または SNMP データをシミュレートするために使用する場合に期待される場所です。 |
