Linuxモニタリング、ネットSNMPおよびテラバイトファイルシステム

または、Linux監視を行うときに意味のある方法で符号付き整数を処理する方法。

今週、お客様から連絡があり、「LogicMonitorで監視されていたファイルシステムの2つが、拡張後に消えてしまいました」とのことでした。 問題のファイルシステムはXNUMXテラバイトを少し超えていたことがわかりました。

net-snmpがファイルシステムのサイズ(1.3.6.1.2.1.25.2.3.1.5、hrStorageSize経由)を-1982127408と報告していたため、いくつかの調査により、ファイルシステムが検出から除外されていることがわかりました。 はい、それは負の値です。

hrStorageSizeオブジェクトはInteger32として定義されているため、実際には符号付き整数です。 2147483648割り当て単位を超えると、負の領域になります(最初のビットが符号として解釈されるため)。

したがって、ディスク使用量(パーセンテージとして)が計算される代わりに、次のようになります。

  • StorageSizeを、ファイルシステムの.1.3.6.1.2.1.25.2.3.1.5(hrStorageSize)によって報告される値とします。
  • StorageUsedを、ファイルシステムの.1.3.6.1.2.1.25.2.3.1.6(hrStorageUsed)によって報告された値とします。
  • したがって、ディスク使用率のパーセンテージは次のとおりです。100* StorageUsed / StorageSize

LogicMonitorがディスクスペースのパーセンテージを計算するために使用する式を次のように変更できます。

100*(if(lt(StorageUsed,0),4294967296+StorageUsed,StorageUsed))/
(if(lt(StorageSize,0),4294967296+StorageSize,StorageSize))

これは、2147483648を超えるものはすべて負の数として報告されるという事実を考慮し、それを修正します。

英語では、上記の式は次のように述べています。

  • StorageUsed <0の場合は、4294967296(2 ^ 32)を追加します
  • StorageSize <0の場合は、4294967296を追加します
  • 次に、前と同じように計算します。PercentUsage= 100 * StorageUsed / StorageSize

Linuxディスク使用量データソースのグラフ定義でも同様の式を使用しますが、値には割り当て単位のサイズも乗算されるため、ファイルシステムのサイズを正確に表すことができます。

LogicMonitorとそのコアデータソースリポジトリを更新したため、すべてのお客様がテラバイトサイズのファイルシステムをデプロイすれば、この問題を回避できるようになります。

この調整は、符号付き整数として報告された他の値を符号付きとして扱いたくない場合に使用できます。 したがって、この問題が発生したすべての人にとって、net-snmpを更新する必要はありません(多くの人がこれを求めているようです)。 または、新しいMIBオブジェクトを定義します。 上記のように、符号を修正するように監視およびグラフ作成システムを構成するだけです。

また、監視システムができない場合は、いつでもLogicMonitorに切り替えることができます。