自宅ではストレージについて、NAS4Freeを使用しているのですが、snmpでの監視には限界があります。
たとえばZFSで組んだ場合、snmpだとFreeBSDでの制約から正しい容量を取得できないなどです。
ということで、Zabbix Agentを導入することで、直接ZFSコマンドを叩くことが出来るのならば、正しい容量を取得することが出来ると思い、導入できるか試してみました。
導入環境
- hp Microserver N36L
- Mem: 8GB
- USB boot
- HDD: 1TB *4
- 9.1.0.1 – Sandstorm (revision 847)
手順
まず最初にZabbixソースファイルのダウンロードを試してみたところ以下のメッセージが。
# wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.7/zabbix-2.0.7.tar.gz
wget: Command not found.
ならばwgetを導入してみればとやってみたところ、USB Bootのせいか・・・
/: write failed, filesystem is full
/var
などの空き容量のあるところで試してみるのもいいのかもしれません。
とりあえずソースから導入するのは諦めて、パッケージから導入できるか試してみたところ・・・
# pkg_add -r zabbix2-agent
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/zabbix2-agent.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/All/libiconv-1.14.tbz... Done.
===> Creating users and/or groups.
Creating group 'zabbix' with gid '122'.
Creating user 'zabbix' with uid '122'.
今度はうまくいきました。
configファイルは以下のように配置されるようです。
# ls -l /usr/local/etc/zabbix2/
total 8
-rw-r--r-- 1 root wheel 1605 Apr 10 20:08 zabbix_agent.conf.sample
-rw-r--r-- 1 root wheel 5718 Apr 10 20:08 zabbix_agentd.conf.sample
あとは通常通りにファイルを編集し、Zabbix Serverにホストを追加し、監視が始まることを確認します。
テンプレートはFreeBSDのものが使用できると思います。
USB bootのため導入した状態が保存されないための対応
ただし、このままだと問題が有ります。再起動を実施すると導入したはずのZabbixパッケージがconfigファイルまで綺麗サッパリ消えてしまいます。これについてはUSB Bootによるものだと思いますが、しっかりと検証は行っていません。
ということで、NAS4Free側からスクリプトが実施できることを利用して、毎回導入編集を行うスクリプトを書いてみることにしました。
スクリプト
#!/bin/sh
# Valiable
ZBX_CONF=/usr/local/etc/zabbix2/zabbix_agentd.conf
ZBX_RC=/usr/local/etc/rc.d
ZABBIX_SERVER_IP=""
SERVER_NAME=""
# add Zabbix-agent
/usr/sbin/pkg_add -r zabbix2-agent
# copy configure
/bin/cp ${ZBX_CONF}.sample ${ZBX_CONF}
# Value reWritable
sed -i '' -e 's/Server=127.0.0.1/Server='${ZABBIX_SERVER_IP}'/' ${ZBX_CONF}
sed -i '' -e 's/ServerActive=127.0.0.1/ServerActive='${ZABBIX_SERVER_IP}'/' ${ZBX_CONF}
sed -i '' -e 's/Hostname=Zabbix server/Hostname='${SERVER_NAME}'/' ${ZBX_CONF}
sed -i '' -e 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' ${ZBX_CONF}
# auto start config
echo "zabbix_agentd_enable="YES"" >> /etc/rc.conf
# Zabbix agent start
${ZBX_RC}/zabbix_agentd start
スクリプト自体は以下にも置いてあります。
https://github.com/kometchtech/zabbix_nas4free
あとはSystem.runなどでzpoolコマンドを実行してやることで、正しいZFS容量を取得することなどが出来ると思います。
間違い等があればご指摘いただけると助かります。
コメント
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
こちらこそご無沙汰しておりますー
> ご無沙汰しております。
> 一昨年の記事にフォローするのも恐縮ではありますが、
> FreeBSD系ではpkg_addに代わり"pkg"が主流になっております。
> また、スクリプトも書く必要がなく
> /etc/rc.confを直接いじらず、"System Advanced rc.conf"
> にZabbixAgent周りの設定を追加必要がありますので、
> リプレースの際はご注意ください。
ちょっと内容的には古いので、このようなフォローありがとうございます。
最近のFreeBSDはこのような方法でできるんですね・・・
頂いた情報で自分もちょっとやってみますー
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
ご無沙汰しております。
一昨年の記事にフォローするのも恐縮ではありますが、
FreeBSD系ではpkg_addに代わり"pkg"が主流になっております。
また、スクリプトも書く必要がなく
/etc/rc.confを直接いじらず、"System Advanced rc.conf"
にZabbixAgent周りの設定を追加必要がありますので、
リプレースの際はご注意ください。