Notice: Master branch is currently broken. Please use latest version tag 0.4.2
Check_MK is described as a general purpose Nagios-plugin for retrieving data. This cookbook aims to be the definitive cookbook for check_mk.
Check_MK and Nagios are both file configured and as such, have configuration shortcuts like host_groups (Nagios) and tags (Check_MK). This cookbook considers these types of configuration variables as a human interface, so in most cases you'll see duplicated settings. For example, when configuring custom checks in a role, these checks will be configured for each host separately.
This cookbook does not depend on the Nagios cookbook since it tries to do too much. Instead, it is treated as a backend and configured in a minimalistic fashion.
Most of the attributes correspond to the values that are expected from that packages.
- Ubuntu >= 10.04
- Debian >= 6.0.0
- Red Hat branch
The cookbook attributes
-
node["check_mk"]["server"]["package"]["name"]
- Check_MK package name (Default: check_mk) -
node["check_mk"]["server"]["package"]["version"]
- Version -
node["check_mk"]["server"]["package"]["filename"]
- Package file name -
node["check_mk"]["server"]["package"]["url"]
- Download URL -
node["check_mk"]["server"]["package"]["checksum"]
- Downloaded file checksum (sha256) -
node["check_mk"]["server"]["user"]
- Nagios user name (Default: nagios) -
node["check_mk"]["server"]["group"]
- Nagios group (Default: nagios) -
node["check_mk"]["server"]["conf"]["dir"]
- Check_MK configuration directory (Default /etc/check_mk) -
node["check_mk"]["server"]["conf"]["main"]
- Check_MK main configuration file (Default: /etc/check_mk/main.mk) -
node["check_mk"]["server"]["conf"]["multisite"]
- Check_MK Multisite configuration file (Default: /etc/check_mk/multisite.mk) -
node["check_mk"]["server"]["conf"]["unix_socket"]
- Nagios and Check_MK unix socket (Default: /var/log/nagios/rw/live) -
node["check_mk"]["nagios"]["conf.d"]
- Nagios configuration directory -
node["check_mk"]["nagios"]["conf"]
- Nagios main config file (Default: /etc/nagios3/nagios.cfg) -
node["check_mk"]["nagios"]["cgi"]
- Nagios cgi config file (Default: /etc/nagios3/cgi.cfg) -
node["check_mk"]["nagios"]["command_file"]
- Nagios command file (Default: /var/log/nagios/rw/nagios.cmd) -
node["check_mk"]["nagios"]["plugins_dir"]
- Nagios plugins directory, used primarily to target plugins from the agent (MRPE) (Default: /usr/lib/nagios/plugins) -
node["check_mk"]["nagios"]["extra_plugins"]
- Install nagios' extra plugins or not (Default: true) -
node["check_mk"]["nagios"]["extra_plugins_package"]
- The extra plugins package name -
node["check_mk"]["www"]["auth"]
- CGI auth file (Default: /etc/nagios3/htpasswd.users) -
node["check_mk"]["www"]["user"]
- Webserver user (Default: www-data) -
node["check_mk"]["www"]["group"]
- Webserver group (Default: www-data) -
node["check_mk"]["www"]["conf"]
- Check_MK webserver config file (Default: /etc/apache2/conf.d/zzz_check_mk.conf)
Check_MK configuration variables attributes
These attributes configure global variables of the main.mk file.
TODO: !
These attributes configure various related variables per host. On some of them, you'll see a hash with keys called pXX, only their values are used (this is due to how chef treats arrays in Attribute#deep_merge). One advantage is that you can override a certain parameter from a different attribute set. Each attribute corresponds a variable in the list of configuration variables of Check_MK.
'check_mk': {
'config': {
'checks': {
'check_type': {
'check_name': {
'p01': '/usr/sbin/sshd',
'p02': '1',
'p03': '1',
'p04': '1',
'p05': '1'
}
}
}
}
}
check_type
- The check type, like ps or ps.perf.check_name
- The check as will be seen in Nagios (Check_MK).- Last level of attributes are the check parameters (only values are used). This structure is used to enable overriding specific values from high-level attributes.
'check_mk': {
'config': {
'check_parameters': {
'service_pattern': 'parameters'
}
}
}
service_pattern
- The service pattern as explained on Check_MK documentation.parameters
- Taken as is and placed as the first item in the check_parameters tuple.
'check_mk': {
'config': {
'extra_service_conf': {
'service_name': {
'active_checks_enabled': '0',
'is_volatile': '1'
}
}
}
}
Hash of key value pairs for configuration variables that will be attached to this service check.
service_name
- The service name as Nagios sees it
'check_mk': {
'config': {
'legacy_checks': {
'check_name': {
'performance': "True",
'command': "/bin/echo I am a passive check only",
'extra_service_conf': {
'active_checks_enabled': '0'
}
}
}
}
}
check_name
- The service nameperformance
- Flag for a performance check or not (Default: False). See legacy checks page.extra_service_conf
- Same as extra_service_conf above, but applied to this legacy check specifically.
'check_mk': {
'ignore': true
}
Many times you have some external device or a port on a load-balancer you'd like to monitor, in which case you cannot use the agent recipe. For this you can use psuedo agents through the check_mk data bag.
Pseudo agents are node-like attribute structures configured in a data bag item. The cookbook only looks at the structure which is relevant for registering the agent on Check_MK. By duplicating the relevant structure, we try to make it easier to remember or transfer some configuration from a node/role to a data bag item.
The server recipe looks for items in the data bag check_mk
, with the pseudo_agents usage
on the same chef_environment
. The exact search call is search(:check_mk, "usage:pseudo_agents AND chef_environment:#{node.chef_environment}")
.
An example for a data bag item
{
'id': 'some data bag item id',
'usage': [
'pseudo_agents'
],
'chef_environment': [
'_default'
],
'agents': {
'arbitrary.agent.name': {
'fqdn': "somehost.somedomain",
'ipv4': "ip.add.re.ss",
'check_mk': {
'tags': ["sometag"],
'config': {
'legacy_checks': {
'Load balancer': {
'command': "$USER1$/check_http ..."
'performance': "False"
}
}
}
}
},
'another.agent': {
# ...
}
}
}
usage
- Required to containpseudo_agents
so it would be returned by the search query.chef_environment
- Must contain the same environment value like the server.agents
- The recipe looks for agents under this key.arbitrary.agent.name
- Could be any legal data bag item key, not used by cookbook.fqdn
- Required. This is how the cookbook chooses the host name.ipv4
- Optional. Normally, the cookbook tries to find the best ip address to use, but since this is not a real node you must supply a real IP address (or hostname) if fqdn cannot be resolved.check_mk
- An attribute tree which is treated exactly as it would be in a node's attributes.
External agents are treated the same as peudo agents with a small difference. Pseudo agents are expected to be non-inventorizable, external agents are treated as normal Check_MK agents.
This falls under the use-case where you want to monitor hosts that are not part of the Chef cluster. Such nodes need minimal configuration as they will be inventorized by Check_MK.
The following is a simple example of an external agent data bag item.
{
'id': 'some data bag item id',
'usage': [
'external_agents'
],
'chef_environment': [
'_default'
],
'agents': {
'arbitrary.agent.name': {
'fqdn': "somehost.somedomain",
'ipv4': "ip.add.re.ss",
'check_mk': {
'tags': ["sometag"]
}
},
'another.agent': {
# ...
}
}
}
The check_mk_mrpe_plugin adds a new MRPE plugin and creates the mrpe.cfg if needed.
Check_MK treats MRPE plugins like NRPE plugin, so any Nagios plugin can be used.
check_mk_mrpe_plugin "<plugin_name>"
plugin "<plugin_name>"
path "/path/to/plugin/executable"
arguments "-H 127.0.0.1 --foo bar"
end
- agent_ports
- dyndns_hosts
- ping_levels
- check_periods
- extra_host_conf (see legacy_checks implementation)
- ignored_services
- ignored_checks
- snmp_communities
- snmp_hosts
- snmp_ports