macOSにzabbix-agentを入れる
MacBook Proにzabbix-agentを入れようとしたらやたらハマったのでメモ。
参考にしたサイト
ハマった内容
zabbix_agentdを直接叩けば起動ができてzabbix-serverとの疎通も取れたが、OS起動時等にlaunchdから自動起動することができない。
結論
zabbix_agentdをシェルスクリプトでラップしてlaunchdから呼んだらなぜか普通に動いた。
顛末
brew install zabbix --without-server-proxy
でzabbix-agentをインストールして起動及びサーバとの疎通確認!楽勝だね!- 自動で起動するために
/System/Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist
を下記のように作った!まだまだ余裕!
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.zabbix.zabbix_agentd</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>Program</key> <string>/usr/local/sbin/zabbix_agentd</string> </dict> </plist>
sudo launchctl load /System/Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist
するも何故か起動しない。。- plistに下記の行を加えてログを出そうとしてみた。outとerrのファイルは作られるのに中身は空。
/var/log/system.log
にも何も手がかりが出ない。。。
<key>StandardOutPath</key> <string>/tmp/zabbix_agentd.out</string> <key>StandardErrorPath</key> <string>/tmp/zabbix_agentd.err</string>
- 下記のようなシェルスクリプトを作り、plistのProgramを置き換えてloadしてみたらちゃんとoutに
root
と出力された。
#!/bin/bash
whoami
- brewでインストールしたzabbix-agentがおかしいんじゃね!?と思ったのでアンインストールしてソースからビルドした。とりあえず最新版の4.0.1を入れた。ここはここで若干ハマったのでちょっと詳しく書いておく。
- バージョン以外はMacにZabbixエージェントを入れるにある通りに進めたが、
./configure --enable-agent
したらiconvが無いと怒られた。 brew install libiconv
したあとでもう一度./configure --enable-agent
したが、またiconvが無いと怒られて困った。パスも通ってるのに意味が分からないよ。。。- configureの中身を見てみたら
--with-iconv
というオプションがあるらしいので、./configure --enable-agent --with-iconv=/usr/local/Cellar/libiconv/1.15/bin/iconv
としてみたら通った。 make install
してビルド。
- バージョン以外はMacにZabbixエージェントを入れるにある通りに進めたが、
- 起動及びサーバとの疎通確認!launchdから起動しようとしたら失敗!ログも出ない!!
- 下記のようなシェルスクリプト
/usr/local/sbin/zabbix_agentd.sh
を作ってzabbix_agentdをラップしてみた。
#!/bin/bash echo "executed by $(whoami) at $(date)" zabbix_agentd=/usr/local/sbin/zabbix_agentd echo "call ${zabbix_agentd}" ${zabbix_agentd}
- plistのProgramを書き換えて
sudo launchctl load /System/Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist
したら動いた!何でだろう!! - MacBookを再起動して
ps -el | grep zabbix
としたところ、意図したとおり自動起動されていた。
つまりこうしたらできるらしい
- zabbix-agentをインストールする。多分brewでもなんでもいい。
/usr/local/sbin/zabbix_agentd.sh
を作成して実行権限を付与する。
#!/bin/bash echo "executed by $(whoami) at $(date)" zabbix_agentd=/usr/local/sbin/zabbix_agentd echo "call ${zabbix_agentd}" ${zabbix_agentd}
/System/Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist
を作成してオーナーをroot:wheel
にする。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.zabbix.zabbix_agentd</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>StandardOutPath</key> <string>/tmp/zabbix_agentd.out</string> <key>StandardErrorPath</key> <string>/tmp/zabbix_agentd.err</string> <key>Program</key> <string>/usr/local/sbin/zabbix_agentd.sh</string> </dict> </plist>
sudo launchctl load /System/Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist