Nagios

  (最終更新日:2014.08.25)

自作プラグイン:snmpでメモリ使用率を監視するNagiosプラグインをPerlで自作

snmpを利用して対象サーバのメモリ使用率(バッファやキャッシュは含まず)を監視するプラグインをPerlで作成してみました。結果値は少数第二位を切り捨てにしています。またPNPグラフに対応するためにその分も結果に出力してます。

そのままOSのsnmpwalkコマンドを利用して値を取得、分解して使用率を算出する単純な仕組みです。

プラグインへの引数は下記となります。

  • SNMPコミュニティ名
  • 対象サーバのIPアドレス
  • Warning閾値
  • Critical閾値

実際のプラグインのソースは下記。
はい。Perlダメダメなので適当で申し訳ありません…。

#!/usr/bin/perl
########################################################################
#    Nagios Plugin for Mem-used for SNMP.
##
###    Argument    Community / HostIP / Warning / Critical
####   Create      2014.8.25
#####
#######################################################################

# 引数を取得
if( @ARGV != 4 ){
	print "Argument is not enough.(".@ARGV.")";
	exit(3);
}

my $community = $ARGV[0];
my $hostip = $ARGV[1];
my $warning = $ARGV[2];
my $critical = $ARGV[3];

# メモリ搭載容量を取得
$resultline = `snmpwalk -v 1 -c $community $hostip UCD-SNMP-MIB::memTotalReal.0`;
@temp1 = split( /INTEGER: /, $resultline );
$memTotal = $temp1[1];

# メモリ空き容量を取得
$resultline = `snmpwalk -v 1 -c $community $hostip UCD-SNMP-MIB::memAvailReal.0`;
@temp1 = split( /INTEGER: /, $resultline );
$memAvail = $temp1[1];

# 対象のメモリ使用率を算出 (小数点第二位以下を切り捨て)
$temp1 = ($memTotal - $memAvail ) / $memTotal * 1000;
$memusedper = int($temp1) / 10;

# 閾値に応じて結果を出力
print "Mem Used ".$memusedper."% | Used=".$memusedper;
if( $memusedper >= $critical ){
	exit(2);
}elsif( $memusedper >= $warning ){
	exit(1);
}else{
	exit(0);
}

標準のnagios pluginにメモリ使用率の監視プラグインを含んでてくれると助かるんですが… ないってことは需要がないんですかね?

とりあえずこれでメモリ使用率の監視ができるようになります。

スポンサーリンク
スポンサーリンク

関連記事

  1. Nagios

    Nagios3.5をLinux(CentOS 6)にインストールする手順の完全版

    Linux版のNagios 3.5をCentOS 6にソースからインス…

  2. Nagios

    pnp4nagios(0.6.26)のグラフでY軸を最大値で固定する方法

    Nagiosでグラフ表示を可能にする pnp4nagios において、…

  3. Nagios

    SSL証明書と中間証明書の有効期限を監視するNagiosプラグイン(Perl)

    指定したURLのSSL証明書と中間証明書の有効期限を監視するNagio…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. さくらのVPSにCentOS 5をインストールする方法
  2. PHP PhantomJSでFatal error: Unc…
  3. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  4. CentOS7のPHP5.6にPhpSpreadsheetを…
  5. Azure仮想マシン(CentOS 7)のStandardデ…
PAGE TOP