Zabbix Agent recipe
Problem
Ensure that Zabbix agent is installed on a host and is configured properly.
Solution
$zabbix_user_parameters = []
class zabbix-agent {
$zabbix_server = "XXX.XXX.XXX.XXX"
$zabbix_config_dir = "/etc/zabbix"
$zabbix_agent_conf = "$zabbix_config_dir/zabbix_agent.conf"
$zabbix_agentd_conf = "$zabbix_config_dir/zabbix_agentd.conf"
package {
"zabbix-agent":
ensure => installed
}
service {
"zabbix-agent":
enable => true,
ensure => running,
hasstatus => true,
require => Package["zabbix-agent"]
}
file {
$zabbix_config_dir:
ensure => directory,
owner => root,
group => root,
mode => 0755,
require => Package["zabbix-agent"];
$zabbix_agent_conf:
owner => root,
group => root,
mode => 0644,
content => template("zabbix_agent_conf.erb"),
require => Package["zabbix-agent"];
$zabbix_agentd_conf:
owner => root,
group => root,
mode => 0644,
content => template("zabbix_agentd_conf.erb"),
require => Package["zabbix-agent"];
}
}
Here is zabbix_agent_conf.erb:
# This is config file for zabbix_agent # To get more information about ZABBIX, # go http://www.zabbix.com # IP address of ZABBIX server # Connections from other hosts will be denied Server=<%= zabbix_server %> # Spend no more than Timeout seconds on processing # Must be between 1 and 30 Timeout=3 ####### USER-DEFINED MONITORED PARAMETERS ####### # Format: UserParameter=<key>,<shell command> # Note that shell command must not return empty string or EOL only #UserParameter=system.test,who|wc -l ### Set of parameter 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 <% zabbix_user_parameters.each do |zabbix_user_parameter| %>UserParameter=<%= zabbix_user_parameter %> <% end %>
And here is zabbix_agentd_conf.erb:
# This is config file for zabbix_agentd # To get more information about ZABBIX, go http://www.zabbix.com ############ GENERAL PARAMETERS ################# # List of comma delimited IP addresses (or hostnames) of ZABBIX servers. # No spaces allowed. First entry is used for sending active checks. # Note that hostnames must resolve hostname->IP address and # IP address->hostname. Server=<%= zabbix_server %> # Server port for sending active checks #ServerPort=10051 # Unique hostname. Required for active checks. Hostname=<%= hostname %> # Listen port. Default is 10050 #ListenPort=10050 # IP address to bind agent # If missing, bind to all available IPs #ListenIP=127.0.0.1 # Number of pre-forked instances of zabbix_agentd. # Default value is 5 # This parameter must be between 1 and 16 StartAgents=5 # How often refresh list of active checks. 2 minutes by default. #RefreshActiveChecks=120 # Disable active checks. The agent will work in passive mode listening server. #DisableActive=1 # Enable remote commands for ZABBIX agent. By default remote commands disabled. #EnableRemoteCommands=1 # Specifies debug level # 0 - debug is not created # 1 - critical information # 2 - error information # 3 - warnings (default) # 4 - for debugging (produces lots of information) DebugLevel=3 # Name of PID file PidFile=/var/run/zabbix/zabbix_agentd.pid # Name of log file. # If not set, syslog will be used LogFile=/var/log/zabbix/zabbix_agentd.log # Spend no more than Timeout seconds on processing # Must be between 1 and 30 Timeout=3 ####### USER-DEFINED MONITORED PARAMETERS ####### # Format: UserParameter=<key>,<shell command> # Note that shell command must not return empty string or EOL only #UserParameter=system.test,who|wc -l ### Set of parameter 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 <% zabbix_user_parameters.each do |zabbix_user_parameter| %>UserParameter=<%= zabbix_user_parameter %> <% end %>