Zabbix is Awesome.
Yayz Zabbz. I'm starting to write both a
Guide to Creating a User Parameter and
A Brief Tutorial on Installing Zabbix
. I've also got a guide somewhere to creating a MacOS Zabbix pkg file with PackageMaker.
So the use case here is where you have individual checks for a process in a template, say pid names of "httpd," "apache," and "httpd-worker" where any one may be running, but you only care if none of them are running.
Neither httpd nor httpd-worker processes are running on {HOSTNAME}
{Template_Patrick_Linux:proc.num[httpd].last(0)}=0 & {Template_Patrick_Linux:proc.num[httpd-worker].last(0)}=0
Neither apache2 nor apache found on {HOSTNAME}
{Template_Patrick_Linux:proc.num[apache2].last(0)}=0 & {Template_Patrick_Linux:proc.num[apache].last(0)}=0
Of course you have XCode installed, but your configure fails with:
checking for -rdynamic linking option... yes
checking for ICONV support... configure: error: Unable to find iconv.h "no"
And after you hack the configure script to return yes instead of no for iconv.h, build fails with:
gcc -g -O2 -rdynamic -o zabbix_agent zabbix_agent.o stats.o cpustat.o diskdevices.o perfstat.o vmstats.o zbxconf.o
../../src/libs/zbxsysinfo/libzbxagentsysinfo.a ../../src/libs/zbxsysinfo/osx/libspecsysinfo.a
../../src/libs/zbxsysinfo/common/libcommonsysinfo.a ../../src/libs/zbxsysinfo/simple/libsimplesysinfo.a
../../src/libs/zbxlog/libzbxlog.a ../../src/libs/zbxalgo/libzbxalgo.a ../../src/libs/zbxsys/libzbxsys.a
../../src/libs/zbxnix/libzbxnix.a ../../src/libs/zbxcomms/libzbxcomms.a ../../src/libs/zbxconf/libzbxconf.a
../../src/libs/zbxcommon/libzbxcommon.a ../../src/libs/zbxcrypto/libzbxcrypto.a
../../src/libs/zbxjson/libzbxjson.a ../../src/libs/zbxexec/libzbxexec.a -lm -lresolv
Undefined symbols for architecture x86_64:
"_iconv_open", referenced from:
_convert_to_utf8 in libzbxcommon.a(str.o)
"_iconv", referenced from:
_convert_to_utf8 in libzbxcommon.a(str.o)
"_iconv_close", referenced from:
_convert_to_utf8 in libzbxcommon.a(str.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[2]: *** [zabbix_agent] Error 1
So instead just give it some hints:
% LIBS=-liconv LDFLAGS=-L/usr/lib ./configure --enable-ipv6 --enable-agent ; make clean ; make
[...]
Making all in upgrades
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `all-am'.
% src/zabbix_agent/zabbix_agent -V
Zabbix Agent v1.8.9 (revision 23398) (22 November 2011)
Compilation time: Nov 24 2011 18:35:40
If that works, you might build a binary optimized for your CPU:
% sysctl machdep.cpu.brand_string
machdep.cpu.brand_string: Intel(R) Core(TM)2 Duo CPU E8135 @ 2.66GHz
% CFLAGS="-pipe -O3 -march=core2" LIBS=-liconv LDFLAGS=-L/usr/lib ./configure --enable-ipv6 --enable-agent
[...]
gcc -pipe -O3 -march=core2 -rdynamic -L/usr/lib -o zabbix_sender zabbix_sender.o
[...]