Linuxサービスの監視方法
いつもありがとうございます。
<背景・目的>
Linux上のサービスを監視したいのですが
具体的には、以下のコマンドを実施したときのステータス
がrunningであるかを監視したい
# sudo service abc status
●abc.service
:
Active: active (running) ...
今、考えていますのは
sudo service abc statusのステータスを
取得するスクリプトを作成し、
そのスクリプトをZabbixから起動
(アイテム作成時にTypeをExternal check
Keyにスクリプトパスを入れる)
を考えております
<お伺いしたいこと>
スクリプトを作ってしまうのが
一般的でしょうか?
Linuxサービスのステータスを監視する
場合の一般的なやり方とか、参考となる
情報がございましたらよろしく
お願いいたします。
Yasumi - 投稿数: 380
OSのバージョンは何でしょうか。
サービスのステータスということは、proc.numは使わないということですね。
工夫次第では、system.runを使用して、serviceコマンドのステータス部分をawkやprintで切り出せば可能と思います。
RHEL7.1では下記のように切り出せました。
===========
# service sshd status | awk 'NR==3{print $3}'
Redirecting to /bin/systemctl status sshd.service
(running)
# systemctl status sshd | awk 'NR==3{print $3}'
(running)
===========
あとは取得したデータを保存前処理で整形すればステータス部分だけ残すことができそうですね。
KENTA ARAI - 投稿数: 11
ご回答により解決いたしました。有効なご回答に感謝いたします。
system.runを知りませんでした!
危うく、External checkを利用して
監視対象のサーバにrsh接続して
監視対象サーバ上のスクリプトを
起動しようかと、思ってました
system.runで全て解決いたしました。
スクリプトのサンプルありがとうございます。参考にさせていただきます
重ねてお礼申し上げます。
==こうして解決しました==
1.zabbix_agentd.confを開き「EnableRemoteCommands=1」に変更し、
エージェントを再起動
2.アイテム作成
TypeをZabbix agent(アクティブ)
キーに、例えば、system.run[ls -l /] とする
あとは、ls -lのところを、独自に作成したスクリプトにすればよい
Yasumi - 投稿数: 380
解決したようでよかったです。
ただsystem.runのタイプは、アクティブではなく通常のZabbix agentです。
KENTA ARAI - 投稿数: 11
ご指摘ありがとうございます。通常のZabbix agent承知いたしました。