As you may have noticed: the folk at this blog recently started to play around with FreeBSD (mainly as FreeNAS jails). And since I recently started to <3 Zabbix. Here is an explanation on how to compile and use the agent on such a jail.
<span id="more-3685"></span>First you need to give the jail certain privileges. So log into the FreeNAS web admin-interface and add ```allow.sysvipc=1``` to the (comma separated) list of Sysctls under Jails > JAILNAME > Edit > Advanced Mode (if you make a mistake in that field, the jail won't start up anymore without any helpful log message afait). Then log into the jail via SSH and create a user and group for zabbix:
```bash
pw groupadd zabbix
pw useradd zabbix -c "Daemon user for Zabbix agent" -d /nonexistent -s /usr/sbin/nologin -w no -g zabbix
```
This is necessary, because all Zabbix daemon, that are started as a privileged user, will automaticcaly drop to a user account named ```zabbix```. Then <a href="http://www.zabbix.com/download">download the Zabbix Source code</a> (I used ```zabbix-3.0.5.tar.gz```), unpack it and compile it:
```bash
./configure --enable-agent --with-gnutls
make install #grabacoffee
```
I'm using Zabbix authentication. If you don't want that, you don't need the switch ```--with-gnutls```.
Finally, configure the Zabbix agent as normally (configuration file is located at ```/usr/local/etc/zabbix_agentd.conf```) and add ```zabbix_agentd_enable="YES"``` to ```/etc/rc.conf``` after creating a file ```/etc/rc.d/zabbix_agentd``` with the following content:
```bash
#!/bin/sh
# PROVIDE: zabbix_agentd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
# enable zabbix_agentd:
#
# zabbix_agentd_enable (bool): Set to NO by default. Set it to YES to
# enable zabbix_agentd.
#
. /etc/rc.subr
name="zabbix_agentd"
rcvar=zabbix_agentd_enable
start_precmd="zabbix_precmd"
required_files="/usr/local/etc/zabbix_agentd.conf"
# read configuration and set defaultsc
load_rc_config "$name"
: ${zabbix_agentd_enable="NO"}
#: ${zabbix_agentd_pre:=/usr/local/etc/${name}.pre.sh}
if [ ! -z "$zabbix_agentd_conf" ] ; then
zabbix_agentd_flags="${zabbix_agentd_flags} -c ${zabbix_agentd_conf}"
required_files=${zabbix_agentd_conf}
fi
zabbix_precmd()
{
if [ ! -z "$zabbix_agentd_pre" ] ; then
if [ -e $zabbix_agentd_pre ] ; then
. $zabbix_agentd_pre
fi
fi
}
command="/usr/local/sbin/${name}"
run_rc_command "$1"
```