Linuxサービスの監視方法

いつもありがとうございます。

<背景・目的>
 Linux上のサービスを監視したいのですが
 具体的には、以下のコマンドを実施したときのステータス
 がrunningであるかを監視したい
 
 # sudo service abc status
   ●abc.service
    :
    Active: active (running) ...

 今、考えていますのは
 sudo service abc statusのステータスを
 取得するスクリプトを作成し、
 そのスクリプトをZabbixから起動
 (アイテム作成時にTypeをExternal check
   Keyにスクリプトパスを入れる)
 を考えております

<お伺いしたいこと>
 スクリプトを作ってしまうのが
 一般的でしょうか?
 Linuxサービスのステータスを監視する
 場合の一般的なやり方とか、参考となる
 情報がございましたらよろしく
 お願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー Yasumi の写真

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 の写真

ご回答により解決いたしました。有効なご回答に感謝いたします。

system.runを知りませんでした!

危うく、External checkを利用して
監視対象のサーバにrsh接続して
監視対象サーバ上のスクリプトを
起動しようかと、思ってました
system.runで全て解決いたしました。
スクリプトのサンプルありがとうございます。参考にさせていただきます

重ねてお礼申し上げます。

==こうして解決しました==
1.zabbix_agentd.confを開き「EnableRemoteCommands=1」に変更し、
  エージェントを再起動
2.アイテム作成
   TypeをZabbix agent(アクティブ)
   キーに、例えば、system.run[ls -l /] とする
  あとは、ls -lのところを、独自に作成したスクリプトにすればよい

ユーザー Yasumi の写真

解決したようでよかったです。

ただsystem.runのタイプは、アクティブではなく通常のZabbix agentです。

ユーザー KENTA ARAI の写真

ご指摘ありがとうございます。通常のZabbix agent承知いたしました。