Adding a Monitoring Agent

Installing monitoring: zabbix on EON

written/contributed by pace Feb 18, 2011

More info on zabbix can be found here (screenshots). Sources and pre-compiled binaries can be downloaded here.

!!! Instructions assume you have the binary kit installed !!!

Download and install Zabbix Agent version 1.8.3 (you may want to check for a newer version of the agent):

cd /tmp
wget http://www.zabbix.com/downloads/1.8.3/zabbix_agents_1.8.3.solaris11.i386.tar.gz
gzip -dc zabbix_agents_1.8.3.solaris11.i386.tar.gz | tar -xf -
cp ./zabbix_agents_1.8.3.solaris11.i386/bin/* /usr/local/bin
cp ./zabbix_agents_1.8.3.solaris11.i386/sbin/* /usr/local/sbin

Add the zabbix user and group account:

groupadd zabbix
useradd -g zabbix -d /etc/zabbix -s /usr/bin/false zabbix

The previous command will make the following in /etc/passwd: (your uid:501 and gid:501 may be different, do not change those):

zabbix:x:501:501::/etc/zabbix:/usr/bin/false

Add the entries to /mnt/eon0/.exec so zabbix starts automatically at boot time:

# zabbix section
(cd /etc ; ln -s ../${POOL}/local/etc/zabbix .)
(cd /var/log ; ln -s ../${POOL}/local/var/log/zabbix .)
(mkdir /var/run/zabbix ; chown zabbix:zabbix /var/run/zabbix)
(mkdir /var/log/zabbix ; chown zabbix:zabbix /var/log/zabbix)
/usr/local/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

Create the Zabbix Configuration file: /etc/zabbix/zabbix_agentd.conf

Example (change "Server" and "Hostname"):

# This is a config file for Zabbix Agent (Unix)
# To get more information about Zabbix, visit http://www.zabbix.com
############ GENERAL PARAMETERS #################
### Option: PidFile
#       Name of PID file.
#
# Mandatory: no
# Default:
PidFile=/var/run/zabbix/zabbix_agentd.pid
### Option: LogFile
#       Name of log file.
#       If not set, syslog is used.
#
# Mandatory: no
# Default:
# LogFile=
LogFile=/var/log/zabbix/zabbix_agentd.log
### Option: LogFileSize
#       Maximum size of log file in MB.
#       0 - disable automatic log rotation.
#
# Mandatory: no
# Range: 0-1024
# Default:
LogFileSize=0
### Option: DebugLevel
#       Specifies debug level
#       0 - no debug
#       1 - critical information
#       2 - error information
#       3 - warnings
#       4 - for debugging (produces lots of information)
#
# Mandatory: no
# Range: 0-4
# Default:
# DebugLevel=3
### Option: SourceIP
#       Source IP address for outgoing connections.
#
# Mandatory: no
# Default:
# SourceIP=
### Option: EnableRemoteCommands
#       Whether remote commands from Zabbix server are allowed.
#       0 - not allowed
#       1 - allowed
#
# Mandatory: no
# Default:
# EnableRemoteCommands=0
### Option: LogRemoteCommands
#       Enable logging of executed shell commands as warnings
#       0 - disabled
#       1 - enabled
#
# Mandatory: no
# Default:
# LogRemoteCommands=0
##### Passive checks related
### Option: Server
#       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
#       No spaces allowed. First entry is used for receiving list of and sending active checks.
#       Note that hostnames must resolve hostname->IP address and IP address->hostname.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: yes
# Default:
# Server=
Server=127.0.0.1
### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#
# Default:
# Hostname=system.uname
Hostname=eon
### Option: ListenPort
#       Agent will listen on this port for connections from the server.
#
# Mandatory: no
# Range: 1024-32767
# Default:
# ListenPort=10050
### Option: ListenIP
#       Agent will listen on the specified interface.
#
# Mandatory: no
# Default:
# ListenIP=0.0.0.0
# ListenIP=127.0.0.1
### Option: DisablePassive
#       Disable passive checks. The agent will not listen on any TCP port.
#       Only active checks will be processed.
#       0 - do not disable
#       1 - disable
#
# Mandatory: no
# Default:
# DisablePassive=0
##### Active checks related
### Option: DisableActive
#       Disable active checks. The agent will work in passive mode listening for server.
#
# Mandatory: no
# Default:
# DisableActive=0
# DisableActive=1
### Option: ServerPort
#       Server port for retrieving list of and  sending active checks.
#
# Mandatory: no
# Default:
# ServerPort=10051
### Option: RefreshActiveChecks
#       How often list of active checks is refreshed, in seconds.
#
# Mandatory: no
# Range: 60-3600
# Default:
# RefreshActiveChecks=120
### Option: BufferSend
#       Do not keep data longer than N seconds in buffer.
#
# Mandatory: no
# Range: 1-3600
# Default:
# BufferSend=5
### Option: BufferSize
#       Maximum number of values in a memory buffer. The agent will send
#       all collected data to Zabbix Server or Proxy if the buffer is full.
#
# Mandatory: no
# Range: 1-65535
# Default:
# BufferSize=100
### Option: MaxLinesPerSecond
#       Maximum number of new lines the agent will send per second to Zabbix Server
#       or Proxy processing 'log' and 'logrt' active checks.
#       The provided value will be overridden by the parameter 'maxlines',
#       provided in 'log' or 'logrt' item keys.
#
# Mandatory: no
# Range: 1-1000
# Default:
# MaxLinesPerSecond=100
############ ADVANCED PARAMETERS #################
### Option: StartAgents
#       Number of pre-forked instances of zabbix_agentd that process passive checks.
#
# Mandatory: no
# Range: 1-16
# Default:
# StartAgents=3
### Option: Timeout
#       Spend no more than Timeout seconds on processing
#
# Mandatory: no
# Range: 1-30
# Default:
# Timeout=3
### Option: Include
#       You may include individual files or all files in a directory in the configuration file.
#
# Mandatory: no
# Default:
# Include=
# Include=/etc/zabbix/zabbix_agent.userparams.conf
# Include=/etc/zabbix/zabbix_agentd/
####### USER-DEFINED MONITORED PARAMETERS #######
### Option: UnsafeUserParameters
#       Allow all characters to be passed in arguments to user-defined parameters.
#       0 - do not allow
#       1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
>
### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#       Format: UserParameter=<key>,<shell command>
#       Note that shell command must not return empty string or EOL only.
#       Example: UserParameter=system.test,who|wc -l
#UserParameter=system.test,who|wc -l
### Set of parameters for monitoring MySQL server (v3.23.42 and later)
### Change -u<username> and add -p<password> if required
#UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f1 -d"Q"
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f1 -d"S"
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f1 -d"O"
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"
#UserParameter=mysql.version,mysql -V
UserParameter=nfs.status,/bin/svcs -a | /bin/egrep -e "nfs" | /bin/egrep -e "disabled" | /bin/wc -l
UserParameter=zpool.status,/sbin/zpool status | /bin/egrep -e "DEGRADED|OFFLINE|UNAVAIL|FAILED" | /bin/wc -l

Start service without reboot (change "${POOL}" to match your pool name):

cd /etc
ln -s ../${POOL}/local/etc/zabbix ./zabbix
mkdir /var/run/zabbix
chown zabbix:zabbix /var/run/zabbix
mkdir /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
/usr/local/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

Run updimg.sh to save zabbix user and group account:

/usr/bin/updimg.sh /mnt/eon0/boot/x86.eon