zabbixをpacemakerで冗長化していて、とあるagentからとあるチェックスクリプトをローカルで実行してzabbix_senderでzabbix-serverに送りつけたいというときに、どちらが稼働系か調べる方法を備忘録的にメモリます。
agentdのログから特定できるかなーとか思ってたんですけど、だめなケースがあってあきらめたりなど。
nmapでListenしてるかみるやつだとこんな感じですかね。
# nmap -p 10050 localhost
Starting Nmap 5.51 ( http://nmap.org ) at 2015-08-21 21:13 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000026s latency).
Other addresses for localhost (not scanned): 127.0.0.1
PORT STATE SERVICE
10050/tcp open unknown
# nmap -p 10052 localhost
Starting Nmap 5.51 ( http://nmap.org ) at 2015-08-21 21:12 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000036s latency).
Other addresses for localhost (not scanned): 127.0.0.1
PORT STATE SERVICE
10052/tcp closed unknown
ssh越しにnetstat ssh user@zabbixserver netstat -lnpt|grep 10051
とかするのでもよかったかなともちょっと思いました。(sshが開いてれば)
まあ処理結果が変わらないなら好みの問題ですかね。
※その後、ログのgrepだとダメっぽいケースがあって、ncでいけるんじゃないか説がでてこんなかんじ。
$ nc -z zabbix1 10051
Connection to zabbix1 10051 port [tcp/zabbix-trapper] succeeded!
で、system.runで取れるならzabbix-senderつかわずに稼動系判別しなくてよくね、という話にもなったりなど。
system.runでだめなケースとしては実行時間が長くて(10秒以上待たされるとかで)タイムアウトするやつだと後続の監視処理も詰まってイマイチっぽいです。