【ネットワークシステム運用監視設計】のための基礎知識

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

ネットワークシステム監視とは

構築したシステムを適切に運用するためにはいくつかの要素があります。そのうちの1つがネットワークシステムの監視です。システム監視を行うことで、問題を素早く把握し、問題が大きくなる前に、早急かつ適切な対処ができるようになります。

具体例としては、以下のことを行うことです。

1. ネットワークやサーバの正常性を確認
2. ネットワーク機器やサーバの故障が発生したことを検知
3. ネットワーク機器のCPUが応答しなくなったことを検知
4. サーバのサービスが応答しなことや、プロセスが落ちたことを検知
5. CPUやメモリ、HDDの空きリソースが少ないことを検知
6. 温度異常を検知
7. L2ループやVRRP等の片系障害などを検知
8. 不良パケットが増加していることを検知
9. 『あらかじめ設定したキーワード』を含むログが出たことを検知
10.不正ログインが多数出ていることを検知
11.プリンタのトナー交換や用紙補給のタイミングを通知

これらはあくまで一例で、他にもできることは多岐に渡ります。

ネットワークシステム監視の標準的な構成

ネットワークシステム監視における標準的な構成を以下に示します。

ネットワークシステム監視の種類

ネットワークシステム監視の種類の代表的な例を以下に示します。いずれも問題が起きた場合にはメールで通知する、というのが一般的です。

死活監視

Ping (ICMP Echo)を使い、対象IPの機器が応答(ICMP Echo-Reply)を返すことで、その機器のCPUが活きていることを確認します。NW機器で多用されます。

応答が無い場合であっても(HW処理=CPUを使わない)パケット転送は継続できることもありますが、そういう場合はリブートすると直ることが多いです。ssh等リモートによる設定変更や、機器故障を検知するSNMP trap等が使えなくなったりしますので早めの対処が望ましいでしょう。

サービス監視

http(tcp:80)やpop3(tcp:110), imap4(tcp:143)などのサービスに実際に接続しに行きます。やり方として、対象TCPポートにTCP syn を送り、TCP syn/ack が返ってくることでOKとすることがあります。

ですがたまに『TCPコネクションまでは接続できるがその後のサービスに応答しない』というゾンビプロセスに当たると、実際にはサービスが使えないのにアラートが出ない、といった状態になります。

そういう場合は、例えばhttpであれば3wayハンドシェイクでTCPコネクション確立後、さらに http GET メソッドを発行し、http 応答コード200が返ってくることや、その応答の中に特定の文字列(例えばログイン画面の “Login”という文字列)が入ってくることを確認することや、popやimapの監視用IDパスワードをセットし、監視サーバからTCPコネクション確立後、実際にそのIDパスワード情報を送り、成功するかどうかを見る、といったこともできます。

SNMPによる状態監視

SNMPの特定のMIBの状態を確認し、そのMIBの状態が変わった際にアラートを上げます。これは標準MIBではなう、ベンダ独自の拡張MIBを使うことが多いです。

例えば機器筐体内の温度情報取得もそうですし、その他、冗長構成の機器で片系が壊れた際に特定のMIBを0から1にする、といった実装をしていれば、そのMIBを定期的に0であることを確認し、もし1であればアラートを上げる、といった監視ができます。例えばAlaxalAのリングプロトコルがこのような実装をしています。

その他、プリンタであればトナーや用紙残数の状態を確認できますし、UPSであればバッテリの状態なども確認できます。

上記は SNMP trap/inform による能動的な通知に対応しているものもあります

リソース監視

CPUやメモリ、HDDの空き容量、ネットワークインタフェースの流量を監視し、一定の閾値以上になった場合にアラートを上げます。

プロセス監視

監視エージェントがOSの状態を覗き、特定のプロセス(例えばWindowsのIISサービスやLinuxのPostfix等)が動作しているかを定期的に確認し、プロセスが無い場合にアラートを上げます。

Linuxの場合、SNMP Agentの net-snmp パッケージを使って、ベンダ独自の拡張MIBをRequestした場合に、予め仕込んだスクリプト(シェルスクリプト or Perlプラグイン)を走らせ、その結果をSNMP Responseに乗せる、といったこともできるので、これによりプロセス監視を実装できたりもします。

例えば、以下のようなシェルスクリプトファイル “/usr/local/bin/httpd-proc.sh” を作成します。

#!/bin/sh
NUMPIDS=`pgrep httpd | wc -l`
exit $NUMPIDS

次に、 /etc/snmp/snmpd.conf に以下を記述します。

extend httpd_pids /bin/sh /usr/local/bin/httpd-proc.sh

そして net-snmp を再起動します。

systemctl restart net-snmp

そして、先程のスクリプトが拡張MIBのどのOIDに含まれたかを確認します。

snmptranslate -On NET-SNMP-EXTEND-MIB::nsExtendObjects

そして SNMP Manager から、表示された OID へ接続しに行けばOKです。

syslog監視

rsyslog等では、特定のキーワードが記載されたログが出た際に、アラートを上げることができます。/etc/rsyslog.conf に

$ModLoad ommail
#
$ActionMailSMTPServer [メールサーバのIP もしくは FQDN]
$ActionMailFrom syslog-sv@example.com
$ActionMailTo sysadmin@example.com
$template Mail_Sub,”Log Keyword Warning”
$template Mail_Body,”%fromhost%\r\n%msg%”
$ActionMailSubject Mail_Sub
$ActionExecOnlyOnceEveryInterval -1
#
if $msg contains ‘KeyWord’ then :ommail:;mail_body

と記述することで、『KeyWord』という文字列が含まれるログが生成されたタイミングでアラートメールを送信させることができます。

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

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