はじめに
SoftLayerのAdvanced MonitoringはNimSoftを使っています。この記事では、よく聞かれるプロセス監視の設定方法を紹介します。
※Advanced Monitoringを選択するとNimSoftのAgentが各サーバーに導入されるのですが、この導入途中でプロビジョニングが長時間待機させられてしまうこともあったり、監視方法に癖があるため、個人的にはAdvanced Monitoringを使うよりは、Zabbix等を独自に導入したほうが良いと思います。
プロセス名の確認
監視したいプロセス名をチェックします。今回はmysqldを例にとってやってみましょう。プロセス名の特定のためには、psコマンドは-efではな-eをオプションとして使います。
# ps -ef | grep -e PID -e mysqld
UID PID PPID C STIME TTY TIME CMD
root 1591 1 0 14:29 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 1700 1591 0 14:29 pts/1 00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 4042 3248 0 15:15 pts/2 00:00:00 grep -e PID -e mysqld
# ps -e | grep -e PID -e mysqld
PID TTY TIME CMD
1591 pts/1 00:00:00 mysqld_safe
1700 pts/1 00:00:00 mysqld
Customer Portalでの設定
Devices -> Monitoringに移動。該当サーバーのAdvancedのフィールドにて、Configure Agent Reportsを選択
AgentsとしてProcess Monitoring Agentsを選択。Sectionsにて、Alarm Subscribersを選択し、メールにて通知先対象を追加。
ProfilesのAdd Agent Configを選択し、検知するプロセスを構成する。プロセス名の箇所は「/usr/libexec/mysqld」ではなく「mysqld」であることに注意! 下記では分かりやすいように、Watcher NameとProcessを同じ名前にしている。最後に末尾のAdd Agent Configを選択すれば完了。
これで、障害時には以下のような通知がメールに転送されます。
また、メール以外にも以下の画面から現在発生中の障害を確認することが可能です。
Process Command Lineの使い方
例えば、特定のshellの監視をしたい時は、Linuxにおけるプロセス名は全てbashとして出力されてしまうため、区別ができません。この区別が必要な際に使うのがProcess Command Lineです。
具体的な例を見てみましょう。下記はbash /usr/local/hoge.sh
を実行しているのですが、ps -e
ではプロセス名に区別が付きません。
# ps -ef |grep -e PID -e "hoge.sh" | grep -v grep
UID PID PPID C STIME TTY TIME CMD
root 3928 22591 0 15:13 pts/0 00:00:00 bash /usr/local/hoge.sh
# ps -e | grep -e PID -e bash
PID TTY TIME CMD
588 pts/1 00:00:00 bash
3248 pts/2 00:00:00 bash
3928 pts/0 00:00:00 bash
22591 pts/0 00:00:00 bash
この場合、下図のように、
と設定することで、正しい監視設定が可能になります。