問題
SNMP 検出の実行を開始しましたが、予期したすべてのデバイスが見つかりませんでした。
解決
SNMP 検出プロセスは、検出構成の cidrs
セクションのリスト内のすべての IP アドレスに対して実行されます。スキャン中に、ターゲット IP アドレスが応答していることを確認するために TCP ポート チェックが行われます。成功すると、 ktranslate
は SNMP 経由で IP アドレスとの通信を試みます。
ディスカバリープロセスにおける一般的な失敗ポイントは以下の通りです。
- ネットワーク遅延または SNMP 要求に対するデバイスの応答時間によるタイムアウト。たとえば、Meraki クラウド コントローラーでは、 少なくとも 10 秒のタイムアウト値を推奨します 。
- 一般にファイアウォールなど、より厳格なセキュリティ体制下にあるデバイスからの応答性チェックの初期エラー。
- 検出構成の
cidrs
セクションに示されている IP 範囲が大きすぎるため、タイムアウトが発生しました。
重要
デフォルトでは、SNMP 検出は 4 つのスレッドを使用して、IP アドレスごとに 3 秒のタイムアウトで非同期に実行されます。合計 1,024 個の IP アドレスを持つ /22
CIDR ブロックの場合、検出ジョブが完了するまでに約 13 分かかると予想されます。
1,024 IPs / 4 threads = 256 IPs per thread 256 IPs per thread * 3 seconds per IP = 768 seconds768 seconds / 60 = 12.8 minutes
合計 65,536 個の IP アドレスを持つ/16
CIDR ブロックの場合、約 13.65 時間かかります。
これらの問題を回避するには、次の解決策の 1 つまたはすべてを試してください。
snmp-base.yaml
を編集し、timeout_ms
変数のタイムアウト値を増やします。- それでも応答しないように見えるデバイスの場合は、すべての
cidrs
値を/32
の長さに設定します。これにより、検出プロセスは応答性チェックをスキップし、SNMP接続のみを試行します。 - ジョブ全体でタイムアウトが発生する場合は、提供される CIDR ブロックを合計 IP 数が 1,024 以下に制限していることを確認してください。たとえば、CIDR 範囲は
/22
から/32
です。単一の構成ファイルで/22
の複数のブロックを指定できますが、全体として、大規模なターゲット環境がある場合は、単一のコンテナーですべての作業を実行しようとするのではなく、複数のコンテナーに水平にスケーリングすることをお勧めします。
ヒント
ポート スキャンが原因でスキップされるデバイスのセットが多数ある場合は、 snmp-base.yaml
ファイルを編集してcheck_all_ipsのオプションを有効にして、ポート スキャンをスキップし、検出内のすべてのアドレスに対する SNMP 認証情報のテストに直接進むことができます。 。このオプションを使用すると、構成内のタイムアウト値と再試行値に基づいて、検出の完了にかかる時間が長くなることに注意してください。