zabbix

zabbix

Agent Check Agent Check

Linux Mac OS Windows OS Supported

Overview

Connect to Zabbix to:

  • Monitor Zabbix through the Datadog Agent.
  • Send Zabbix alerts to Datadog to see the alerts as events in your Datadog event stream.

Setup

The Zabbix check is not included in the Datadog Agent package, so you need to install it.

Installation

For Agent v7.21+ / v6.21+, follow the instructions below to install the Zabbix check on your host. See Use Community Integrations to install with the Docker Agent or earlier versions of the Agent.

  1. Run the following command to install the Agent integration:

    datadog-agent integration install -t datadog-zabbix==<INTEGRATION_VERSION>
    
  2. Configure your integration similar to core integrations.

Configuration

  1. Edit the zabbix.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your Zabbix performance data. See the sample zabbix.d/conf.yaml for all available configuration options.

  2. Restart the Agent.

Event collection

Create Datadog media type
  1. Navigate to Administration > Media Types > Create Media Type.
  2. Add Datadog api_key as a parameter. And, add the following Zabbix template variables as parameters: {ALERT.MESSAGE}, {ALERT.SUBJECT}, {EVENT.DATE}, {EVENT.NAME}, {EVENT.NSEVERITY}, {EVENT.TAGSJSON}, {EVENT.TIME}, {EVENT.VALUE}, {ITEM.NAME}
  3. Set Name to Datadog, Type to Webhook, and input the following code as the Script:
	try {
		Zabbix.Log(4, '[datadog webhook] received value=' + value);

		var params = JSON.parse(value);
	    var req = new CurlHttpRequest();
		req.AddHeader('Content-Type: application/json');
	    var webhook_url = 'https://app.datadoghq.com/intake/webhook/zabbix?api_key=' + params.api_key;
	    var webhook_data = value;
	    var resp = req.Post(webhook_url, webhook_data);
		if (req.Status() != 202) {
			throw 'Response code: '+req.Status();
		}
		Zabbix.Log(4, '[datadog webhook] received response with status code ' + req.Status() + '\n' + resp);
	} catch (error) {
		Zabbix.Log(4, '[datadog webhook] event creation failed json : ' + webhook_data)
		Zabbix.Log(4, '[datadog webhook] event creation failed : ' + error);
	}
	return JSON.stringify({});

  1. Validate the Webhook is set up correctly by using the “Test” button.
Assign Webhook media to an existing user
  1. After configuring the Webhook media type, navigate to Administration > Users and create a dedicated Zabbix user to represent the Webhook. For example, use the alias Datadog for the Datadog Webhook. All settings, except media, can be left at their defaults as this user does not log in to Zabbix.
  2. In the user profile, go to a Media tab and add a Webhook with the required contact information. If the Webhook does not use a send to field, enter any combination of supported characters to bypass validation requirements.
  3. Grant this user at least read permissions to all hosts for which it should send the alerts.
Configure an alert action for the Webhook
  1. Navigate to Configuration > Actions.
  2. From the page title dropdown, select the required action type.
  3. Click on Create Action.
  4. Name the action.
  5. Choose conditions upon which operations are carried out.
  6. Choose the operations to carry out.

Validation

Run the Agent’s status subcommand and look for zabbix under the Checks section.

Data Collected

Metrics

zabbix.processed.floats_per_sec
(gauge)
Number of processed numeric (float) values per second
Shown as unit
zabbix.processed.per_sec
(gauge)
Number of processed values per second
Shown as unit
zabbix.processed.characters_per_sec
(gauge)
Number of processed character values per second
Shown as unit
zabbix.processed.logs_per_sec
(gauge)
Number of processed log values per second
Shown as unit
zabbix.processed.unsigned_per_sec
(gauge)
Number of processed numeric (unsigned) values per second
Shown as unit
zabbix.processed.text_per_sec
(gauge)
Number of processed text values per second
Shown as unit
zabbix.processed.unsupported_per_sec
(gauge)
Number of processed not supported values per second
Shown as unit
zabbix.process.internal.alerter
(gauge)
Utilization of alerter internal processes, in %
Shown as percent
zabbix.process.internal.config_sync
(gauge)
Utilization of configuration syncer internal processes, in %
Shown as percent
zabbix.process.internal.escalator
(gauge)
Utilization of escalator internal processes, in %
Shown as percent
zabbix.process.internal.history_sync
(gauge)
Utilization of history syncer internal processes, in %
Shown as percent
zabbix.process.internal.housekeeper
(gauge)
Utilization of housekeeper internal processes, in %
Shown as percent
zabbix.process.data_collector.discoverer
(gauge)
Utilization of discoverer data collector processes, in %
Shown as percent
zabbix.process.data_collector.http_poller
(gauge)
Utilization of http poller data collector processes, in %
Shown as percent
zabbix.process.data_collector.icmp_pinger
(gauge)
Utilization of icmp pinger data collector processes, in %
Shown as percent
zabbix.process.data_collector.ipmi_poller
(gauge)
Utilization of ipmi poller data collector processes, in %
Shown as percent
zabbix.process.data_collector.java_poller
(gauge)
Utilization of java poller data collector processes, in %
Shown as percent
zabbix.process.data_collector.poller
(gauge)
Utilization of poller data collector processes, in %
Shown as percent
zabbix.process.data_collector.proxy_poller
(gauge)
Utilization of proxy poller data collector processes, in %
Shown as percent
zabbix.process.internal.self_monitoring
(gauge)
Utilization of self-monitoring internal processes, in %
Shown as percent
zabbix.process.data_collector.snmp_trapper
(gauge)
Utilization of snmp trapper data collector processes, in %
Shown as percent
zabbix.process.internal.timer
(gauge)
Utilization of timer internal processes, in %
Shown as percent
zabbix.process.data_collector.trapper
(gauge)
Utilization of trapper data collector processes, in %
Shown as percent
zabbix.process.data_collector.unreachable_poller
(gauge)
Utilization of unreachable poller data collector processes, in %
Shown as percent
zabbix.queue.duration_10
(gauge)
Zabbix queue over 10 minutes
Shown as unit
zabbix.queue.size
(gauge)
Zabbix queue
Shown as unit
zabbix.cache.config
(gauge)
Zabbix configuration cache, % used
Shown as percent
zabbix.cache.write
(gauge)
Zabbix history write cache, % used
Shown as percent
zabbix.cache.index
(gauge)
Zabbix history index cache, % used
Shown as percent
zabbix.cache.write_trend
(gauge)
Zabbix trend write cache, % used
Shown as percent
zabbix.agent.ping
(gauge)
Zabbix agent ping
Shown as unit
zabbix.process.data_collector.vmware
(gauge)
Utilization of vmware data collector processes, in %
Shown as percent
zabbix.cache.value
(gauge)
Zabbix value cache, % used
Shown as percent
zabbix.cache.value.hits
(gauge)
Zabbix value cache hits
Shown as hit
zabbix.cache.value.misses
(gauge)
Zabbix value cache misses
Shown as miss
zabbix.cache.vmware
(gauge)
Zabbix vmware cache, % used
Shown as percent
zabbix.cache.operating_mode
(gauge)
Zabbix value cache operating mode
Shown as unit
zabbix.process.internal.task_manager
(gauge)
Utilization of task manager internal processes, in %
Shown as percent
zabbix.process.internal.ipmi_manager
(gauge)
Utilization of ipmi manager internal processes, in %
Shown as percent
zabbix.process.internal.alert_manager
(gauge)
Utilization of alert manager internal processes, in %
Shown as percent
zabbix.process.internal.preprocessing_manager
(gauge)
Utilization of preprocessing manager internal processes, in %
Shown as percent
zabbix.process.internal.preprocessing_worker
(gauge)
Utilization of preprocessing worker internal processes, in %
Shown as percent
zabbix.queue.preprocessing
(gauge)
Zabbix preprocessing queue
Shown as unit
zabbix.queue.lld
(gauge)
Zabbix LLD queue
Shown as unit
zabbix.process.internal.lld_manager
(gauge)
Utilization of LLD manager internal processes, in %
Shown as unit
zabbix.process.internal.lld_worker
(gauge)
Utilization of LLD worker internal processes, in %
Shown as percent
zabbix.cpu.count
(gauge)
Number of CPUs
Shown as unit
zabbix.cpu.iowait_time
(gauge)
CPU iowait time
zabbix.context_switches_per_sec
(gauge)
Context switches per second
zabbix.cpu.guest_nice_time
(gauge)
CPU guest nice time
zabbix.cpu.guest_time
(gauge)
CPU guest time
zabbix.cpu.softirq_time
(gauge)
CPU softirq time
zabbix.cpu.interrupt_time
(gauge)
CPU interrupt time
zabbix.cpu.steal_time
(gauge)
CPU steal time
zabbix.cpu.nice_time
(gauge)
CPU nice time
zabbix.load.avg.1_min
(gauge)
Load average (1m avg)
zabbix.cpu.user_time
(gauge)
CPU user time
zabbix.cpu.system_time
(gauge)
CPU system time
zabbix.cpu.idle_time
(gauge)
CPU idle time
zabbix.load.avg.15_min
(gauge)
Load average (15m avg)
zabbix.load.avg.5_min
(gauge)
Load average (5m avg)
zabbix.interrupts_per_sec
(gauge)
Interrupts per second
zabbix.memory.avail_percent
(gauge)
Available memory in %
zabbix.memory.total
(gauge)
Total memory
zabbix.memory.avail
(gauge)
Available memory
zabbix.swap_space.total
(gauge)
Total swap space
zabbix.swap_space.free
(gauge)
Free swap space
zabbix.swap_space.free_percent
(gauge)
Free swap space in %
zabbix.system.uptime
(gauge)
System uptime
zabbix.system.boot_time
(gauge)
System boot time
zabbix.system.local_time
(gauge)
System local time
zabbix.user.logged_in
(gauge)
Number of logged in users
zabbix.open_fd.max
(gauge)
Maximum number of open file descriptors
zabbix.processes_max
(gauge)
Maximum number of processes
zabbix.processes_count
(gauge)
Number of processes
zabbix.processes_running_count
(gauge)
Number of running processes
zabbix.checksum
(gauge)
Checksum of /etc/passwd
zabbix.cpu.used
(gauge)
CPU utilization
zabbix.agent.avail
(gauge)
Zabbix agent availability
zabbix.process.internal.alert_sync
(gauge)
Utilization of alert syncer internal processes, in %
Shown as percent
zabbix.memory.used
(gauge)
Memory utilization

Events

Zabbix alerts are collected as events in the Datadog event stream.

Service Checks

zabbix.can_connect
Returns CRITICAL if the Agent can’t connect to the Zabbix API, OK otherwise
Statuses: ok, critical

Troubleshooting

Need help? Contact Datadog support.