自分で作ったスクリプトを登録してグラフ作る
MRTG もそうなんだけど、デフォルトの memory usage が MemFree だけなので、Cached と Buffers も足したのを出すように変更した。(今考えたら cached と buffers を別途グラフにして、MemFree に stack すればよかった。)
新しくスクリプトを登録する
Data Templates を登録する
- Data Templates -> Add
- 適当に埋める
- Data Input Methods で登録したものを選ぶ
- 保存すると Custom Data が入力可能になるので編集する
- Grep String とかに引数で渡すものを追加する
使用する Data Templates を Data Sources に登録する
- Selected Data Template に Data Template で登録したものを選ぶ
- localhost を選ぶ
保存すると Data Source Path が表示される
Graph Templates を登録/編集する
- Graph Template Items に適当に登録する
- Data Source は さっき登録した Data Template を選ぶ
Graph Management で編集した Graph Template を確認する
追加した Data Source が None だったりしたら、Data Source を選んで保存しておく
何がどう絡んでるかは何となくわかった。どうせ覚えるなら RRDtool の使い方覚えた方が良さ気な気もした。グラフ化はわかりやすいけど、何のデータなのかわからんとダメだね。SwapFree が MemFree のグラフに乗っかってて見方を誤解してたり。
作った script
linux_memory2.pl MemFree で MemFree + Buffers + Cached
linux_memory2.pl SwapUsage で SwapFree - SwapTotal
#!/usr/bin/perl my $keyword = shift; if ( $keyword =~ m{MemFree} ) { $keyword = qr/(?:MemFree|Buffers|Cached)/; } if ( $keyword =~ m{SwapUsage} ) { $keyword = qr/(?:SwapFree|SwapTotal)/; } open(my $PROCESS, "/proc/meminfo"); my $total = 0; my %swap = (); foreach my $line ( <$PROCESS> ) { if ( $line =~ m{\A $keyword :? \s+ (\d+)}xms ) { my $value = $1; $swap{total} = $value if $line =~ m{SwapTotal}xms; $swap{free} = $value if $line =~ m{SwapFree}xms; $total = $total + $value; } } close($PROCESS); if ( exists $swap{total} && exists $swap{free} ) { $total = $swap{total} - $swap{free}; } print $total . "\n";