三毛猫の楽園

猫好きエンジニアの雑記帳

Linux

MRTGでメモリ使用量を監視する方法

2017/06/13

eth0-day

過去ブログの再掲&改訂記事です。

MRTGのメモリ監視設定に関する小ネタです。

※自宅サーバ向けの内容になります。

スポンサーリンク

Googleアドセンス用336px

目的

サーバ上で実際に使用されているメモリ量を
MRTGで正しく監視することが目的です。

説明

Linuxは遊んでいる物理メモリ領域があると勝手にバッファやキャッシュに使ってくれますが
SNMPではバッファやキャッシュを除いたメモリ使用量を直接取得することができません。

そのため、純粋にメモリ使用量だけを監視したい場合は以下の式を使います。
「 メモリ使用量 = 物理メモリ総量 – (空きメモリ + バッファ + キャッシュ) 」

具体的にどうやるの?

この監視方法を実現させるために、mrtg.cfg の
Target[mem]: 部分を以下のような式にします。

Target[mem]: 物理メモリの総量 & SWAPの総量
- 空きメモリの容量 & 空きSWAPの容量
- バッファ使用量 & ゼロ
- キャッシュ使用量 & ゼロ

実際にmrtg.cfgに記述する時はSNMPのOIDで指定します。

メモリ関係のOID
memIndex  .1.3.6.1.4.1.2021.4.1.0 ゼロ
memTotalSwap  .1.3.6.1.4.1.2021.4.3.0 SWAPの総量
memAvailSwap  .1.3.6.1.4.1.2021.4.4.0 空きSWAPの容量
memTotalReal  .1.3.6.1.4.1.2021.4.5.0 物理メモリの総量
memAvailReal  .1.3.6.1.4.1.2021.4.6.0 空きメモリの容量
memBuffer  .1.3.6.1.4.1.2021.4.14.0 バッファ使用量
memCached  .1.3.6.1.4.1.2021.4.15.0 キャッシュ使用量

記述例

以上を参考に、うちのサーバではmrtg.cfgのメモリ監視部分をこのように修正しました。
Target[mem]:は1行です。

### Memory used ####
Target[mem]: .1.3.6.1.4.1.2021.4.5.0&.1.3.6.1.4.1.2021.4.3.0:public@192.168.1.7 – .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@192.168.1.7 – .1.3.6.1.4.1.2021.4.14.0&.1.3.6.1.4.1.2021.4.1.0:public@192.168.1.7 – .1.3.6.1.4.1.2021.4.15.0&.1.3.6.1.4.1.2021.4.1.0:public@192.168.1.7
MaxBytes1[mem]: (物理メモリの最大値)
MaxBytes2[mem]: (スワップメモリの最大値)
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, growright, noinfo
YLegend[mem]: Mem used(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 物理メモリ使用量[MBytes]
Legend2[mem]: スワップメモリ使用量[MBytes]
Title[mem]: メモリ使用量
PageTop[mem]:メモリ使用量

まとめ

サーバをたてると監視をしてみたくなるものですが
なかなか情報が少なくて難しいですよね。

-Linux