snmpd が 'Error expanding ifHCInOctets to 64bits ..' というログを記録する
Environment
- Red Hat Enterprise Linux 5.5
net-snmp-5.3.2.2-17.el5_8.1
- Red Hat Enterprise Linux 6.2
net-snmp-5.5-37.el6_2.1
- Red Hat Enterprise Linux 8
Issue
- 以下のメッセージがお客様サイトに記録されました。これらが何を意味するのか、また有害であるかどうか教えてください。
Jun 6 20:29:18 xxxxx snmpd[1919]: looks like a 64bit wrap, but prev!=new
Jun 6 20:29:18 xxxxx snmpd[1919]: Error expanding ifHCInOctets to 64bits
Resolution
- RHEL5.9:
net-snmp-5.3.2.2-20(RHSA-2013-0124 でリリース) 以降にアップグレードします。アップグレード後のバージョンでは、該当のメッセージが DEBUG に出力されるよう修正されています。この変更は、BZ#846905 (非公開) で実装されました。 - RHEL6.4:
net-snmp-5.5-44(RHBA-2013-0421 でリリース) 以降にアップグレードします。アップグレード後のバージョンでは、該当のメッセージが DEBUG に出力されるよう修正されています。この変更は、BZ#846906 (非公開) で実装されました。
Red Hat Enterprise Linux 5、6、および 7 では変更が導入され、HCInOctets と ifHCInOctets の両方に関連するこれらのメッセージが、DEBUG ログレベルで記録されるようになりました。
その後、アップストリームで変更が導入され、HCInOctets に関連するこれらのメッセージがエラーレベルでログに記録されるようになりました。そのため、HCInOctets は、以前のログ記録の動作に戻ります。RHEL8 以降の net-snmp はそのコードに基づいているため、HCInOctets のメッセージはエラーログレベルでログに記録されます。ifHCInOctets は変更されず、DEBUG ログレベルでログに記録されます。
Root Cause
- SNMP には 64 ビットのカウンターが必要ですが、オペレーティングシステムは特定の統計に対して 32 ビットのカウンターしか提供しないため、
snmpdはこれらの値を 64 ビットに拡張する必要があります。このメッセージは、オペレーティングシステムによって提供された元の 32 ビットカウンターがラップアラウンドしてしまい、その値がその後に拡張されたか、あるいは拡張に失敗したことを示しています。 - これらのメッセージは無害であり、RHEL 5.9 および RHEL 6.4 では表示されないよう抑制されています。
Diagnostic Steps
より詳細なログを確認したい場合は、-Dc64 オプションを使用して、c64 トークンの DEBUG ログレベルで snmpd を実行します。そのためには、以下のように
OPTIONS="-LS0-6d -Dc64"
/etc/sysconfig/snmpd ファイル内で設定し、systemctl restart snmpd を実行します。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments