zabbixアイテムでのCPU使用率の取得

linuxのCPU使用率をSNMPで取得しようとした際に特定のOIDで確認できるものではないので
計算を使って100からIdle値を引いた値で算出します。

まずは普通にCPUのIdleをOIDを登録します。
UCD-SNMP-MIB::ssCpuIdle.0(.1.3.6.1.4.1.2021.11.11.0)

ホスト:CPU使用率を取得したいホストを選択
説明:分かりやすく「CPUアイドル」とかにしてます
タイプ:SNMPv2エージェントを選択。ここは対向先のSNMPバージョンに合わせて下さい
SNMP OID:MIB値を登録。ここでは、UCD-SNMP-MIB::ssCpuIdle.0を取得しています
SNMPコミュニティ:設定しているSNMPのコミュニティ値。デフォルトはpublic
SNMPポート:SNMPのポートはデフォルトは161です
キー:全体を通したユニークな値を記載。判断する為の値で特に決まりはなさそうです
私はいつもOIDをそのまま入れてます
データ型:数値(整数)
データの形式:10進数
単位:%
乗数を使用:チェックなし
更新間隔(秒):ひとまず60にしてます。デフォルトは30
例外の更新間隔(秒):例外の更新間隔はありません
例外の更新間隔の作成:例外設定
ヒストリの保存期間(日):デフォルトは90日
トレンドの保存期間(日):デフォルトは365日
ステータス:有効
保存時の計算:なし
値のマッピングの使用:なし
アプリケーションの作成:なし
アプリケーション:なし

Idleの登録が完了したら続いて計算アイテムを登録します。

ホスト:先ほど設定したホストを選択
説明:分かりやすく「CPU使用率」とかにしてます
タイプ:計算を選択
式:100-last(.1.3.6.1.4.1.2021.11.11.0)
()内は先ほど登録したOIDを入れます。英表記で登録した場合は
100-last(“ssCpuIdle.0”)となります。
lastは直近の値。
データ型:数値(整数)
データの形式:10進数
単位:%
乗数を使用:チェックしない。
更新間隔(秒):30秒。
例外の更新間隔(秒):例外の更新間隔はありません
例外の更新間隔の作成:そのまま。
ヒストリの保存期間(日):90日
トレンドの保存期間(日):365日
ステータス:有効
保存時の計算:なし
値のマッピングの使用:なし
アプリケーションの作成:なし
アプリケーション:なし

これでCPU使用率が分かります。
使用率とIdleと2つ値をとるのでデータ量としては2倍になりますが、
元のIdle値は要らないのであれば保存期間をギリギリまで減らせば
多少は削減できると思います。
Idleは計算用だから1日あれば十分かも!?

—-追記—-
ついでにメモリの使用率についても下記のような計算で取得しています。

実メモリサイズ
UCD-SNMP-MIB::memTotalReal.0(.1.3.6.1.4.1.2021.4.5.0)
実メモリ空き容量:UCD-SNMP-MIB::memAvailReal.0(.1.3.6.1.4.1.2021.4.6.0)
バッファ使用量
UCD-SNMP-MIB::memBuffer.0(.1.3.6.1.4.1.2021.4.14.0)
キャッシュ使用量
UCD-SNMP-MIB::memCached.0(.1.3.6.1.4.1.2021.4.15.0)

計算部分
((last(.1.3.6.1.4.1.2021.4.5.0)-last(.1.3.6.1.4.1.2021.4.6.0)-last(.1.3.6.1.4.1.2021.4.14.0)-last(.1.3.6.1.4.1.2021.4.15.0))/last(.1.3.6.1.4.1.2021.4.5.0))*100

バッファやキャッシュ領域も空きとしています。
%にする為に使用量/最大値*100をしています。

コメントする