●システム障害の主な原因と予兆の検知
システム障害の原因の一例
・メモリやストレージ容量の不足によるリソースの枯渇
・システムの処理能力以上の要求による過負荷
・ハードウェアやソフトウェアなどによる異常停止
・処理結果の異常
システムログの「/var/log/messages」「/var/log/syslog」を確認したり、sysstatユーティリティなどのツールでシステムの状態を監視することで障害の予兆を検知し、リソースの追加などの対策を行う。
●OOM Killer
物理メモリやスワップメモリが不足(OOM:Out-Of-Memory)してシステムが停止しそうになると、カーネルが重要でないと判断したプロセスを強制終了(kill)。システムログの「/var/log/messages」や「/var/log/syslog」にkillの情報が残る。
どのプロセスをkillするかはカーネルの関数によって決まりますが、システムで大事なプロセスを終了させないためには、そのプロセスに優先度「-17」を設定。
echo -17 > /proc/<プロセスID>/oom_adj
【システム監視】
システム障害やその予兆を検知するためのシステム監視には「死活監視」と「リソース監視」があります。
●死活監視
システムが動作しているか(生きているか)を監視するものです。
ネットワーク上の監視ツールからサーバやネットワーク機器に対してpingやSNMPの定期的な疎通確認で応答(レスポンス)があるかどうかを監視。対象機器から応答が無い場合は停止しているなど何らかの問題が発生している可能があります。
●リソース監視
CPU、メモリ、ストレージ、ネットワークなどのリソースの使用状況を監視。
・システムやサービスのログを監視
・SNMP(Simple Network Management Protocol)を用いた監視
SNMPとは、ネットワーク経由で機器を監視・制御するためのプロトコル。監視する側のSNMPマネージャと監視される側のSNMPエージェントが管理情報をSNMPで交換。CPUやメモリ使用率、ネットワークI/O、プロセスの状態など細かい監視が可能。
【監視ツール】
主な監視ツール。全てオープンソースソフトウェア。
●リソース監視ツール
対象機器のリソース監視。
・collectd
・MRTG(Multi Router Traffic Grapher)
・Cacti
●統合監視ツール
複数の対象機器の死活監視やリソース監視。
・Nagios
・Icinga2
・Zabbix