【Hinemos】”カスタム監視”を使用してuptimeを監視する
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
2.4系以前のカーネルを搭載したLinuxやWindows(クライアントOS、サーバOS問わず)などは、システム起動から約497日を経過すると、様々なシステム上の問題が発生すると言われています。いわゆる「497日問題」ですが、これを回避するには、(用意されていれば)パッチを適用するか、あるいは問題が起きる前にシステムを再起動する必要があります。
パッチを適用せず、定期的な再起動で運用する環境の場合、再起動漏れを予防するためにサーバのuptimeを監視する必要がでてきます。HinemosにはSNMP監視機能があり、uptimeのOIDを指定して監視を行うことができますが、SNMPの応答が数値ではないため、文字列監視の方を設定する必要があり、少しやっかいです(とはいえ、正規表現のマッチングパターンをうまく指定すれば、もちろん監視することは可能です)。
ここではカスタム監視を使用して、対象サーバ上でsnmpwalk
コマンドを実行し、出力内容をperlで少し加工して取得します。これにより、uptimeの範囲を閾値として設定することができます。
設定内容のイメージは以下のとおりです。ちなみに、ここでは便宜上、閾値を「情報:0~80分、警告:80~90分、危険:90分~」としています。
ここで、”コマンド”には以下のように設定しています。
1 |
snmpwalk -v#[SNMP_VERSION] -c#[SNMP_COMMUNITY] localhost 1.3.6.1.2.1.25.1.1.0 | perl -nle 'print"uptime,".($1/100/60) if /Timeticks: \((\d+)\)/' |
処理内容としては、取得したTimeTick値を(便宜上)分の単位へ直して、"uptime,"
という文字列と一緒に出力しています。取得した値をカスタム監視へ渡すためには、上記のような「キー,値」の形式に直す必要があります。
なお、特筆すべき点として、SNMPバージョンとコミュニティにはノード変数を設定しています。ノード変数はコマンド実行時に、リポジトリ上でそのノードに設定された値へ展開されるため、これを利用して、一つの監視設定でSNMPバージョンやコミュニティの異なるノードをまとめて監視することができます。
監視結果は以下のとおりです。
うまく、uptimeを監視することができました。
以上簡単ですが、カスタム監視に関するトピックをご紹介しました。