1911 lines
91 KiB
XML
Executable File
1911 lines
91 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
|
<zabbix_export>
|
|
<version>5.0</version>
|
|
<date>2020-07-23T07:41:34Z</date>
|
|
<groups>
|
|
<group>
|
|
<name>Templates/Applications</name>
|
|
</group>
|
|
</groups>
|
|
<templates>
|
|
<template>
|
|
<template>Template App Docker - Agent 1</template>
|
|
<name>Template App Docker - Agent 1</name>
|
|
<description>Get Docker engine metrics using zabbix-agent 1</description>
|
|
<groups>
|
|
<group>
|
|
<name>Templates/Applications</name>
|
|
</group>
|
|
</groups>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
<application>
|
|
<name>Zabbix raw items</name>
|
|
</application>
|
|
</applications>
|
|
<items>
|
|
<item>
|
|
<name>Docker: Get info</name>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
<history>0</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Zabbix raw items</name>
|
|
</application>
|
|
</applications>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Get data_usage</name>
|
|
<key>docker.api[{$DOCKER.SOCKET},system/df]</key>
|
|
<history>0</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Zabbix raw items</name>
|
|
</application>
|
|
</applications>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Get version info</name>
|
|
<key>docker.api[{$DOCKER.SOCKET},version]</key>
|
|
<history>0</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Zabbix raw items</name>
|
|
</application>
|
|
</applications>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Ping</name>
|
|
<key>docker.api[{$DOCKER.SOCKET},_ping]</key>
|
|
<history>7h</history>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<valuemap>
|
|
<name>Service state</name>
|
|
</valuemap>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JAVASCRIPT</type>
|
|
<params>return (value === 'OK') ? 1 : 0;</params>
|
|
</step>
|
|
<step>
|
|
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
|
|
<params>10m</params>
|
|
</step>
|
|
</preprocessing>
|
|
<triggers>
|
|
<trigger>
|
|
<expression>{last()}=0</expression>
|
|
<name>Docker: Service is down</name>
|
|
<priority>AVERAGE</priority>
|
|
<manual_close>YES</manual_close>
|
|
</trigger>
|
|
</triggers>
|
|
</item>
|
|
<item>
|
|
<name>Docker: API version</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.api_version</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<trends>0</trends>
|
|
<value_type>CHAR</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.ApiVersion</params>
|
|
</step>
|
|
<step>
|
|
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
|
|
<params>1d</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},version]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Containers paused</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.containers.paused</key>
|
|
<delay>0</delay>
|
|
<description>Total number of containers paused on this host</description>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.ContainersPaused</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Containers running</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.containers.running</key>
|
|
<delay>0</delay>
|
|
<description>Total number of containers running on this host</description>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.ContainersRunning</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Containers stopped</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.containers.stopped</key>
|
|
<delay>0</delay>
|
|
<description>Total number of containers stopped on this host</description>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.ContainersStopped</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Containers total</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.containers.total</key>
|
|
<delay>0</delay>
|
|
<description>Total number of containers on this host</description>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Containers</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Containers size</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.containers_size</key>
|
|
<delay>0</delay>
|
|
<units>B</units>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Containers[*].SizeRw.sum()</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},system/df]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Debug enabled</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.debug.enabled</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<valuemap>
|
|
<name>Docker flag</name>
|
|
</valuemap>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Debug</params>
|
|
</step>
|
|
<step>
|
|
<type>BOOL_TO_DECIMAL</type>
|
|
<params/>
|
|
</step>
|
|
<step>
|
|
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
|
|
<params>1d</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Goroutines</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.goroutines</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<description>Number of goroutines</description>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.NGoroutines</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Images size</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.images_size</key>
|
|
<delay>0</delay>
|
|
<units>B</units>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Images[*].Size.sum()</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},system/df]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Info Text</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.info.text</key>
|
|
<delay>0</delay>
|
|
<history>1d</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JAVASCRIPT</type>
|
|
<params>data = JSON.parse(value);
|
|
|
|
var dockerName = "Docker Name: " + data.Name;
|
|
var dockerRootDir = "Root Directory: " + data.DockerRootDir;
|
|
var debugEnabled = "Debug Enabled: " + (data.Debug ? "TRUE" : "FALSE");
|
|
|
|
return dockerName +
|
|
"\n" + dockerRootDir +
|
|
"\n" + debugEnabled +
|
|
"\n";
|
|
</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Version Text</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.info.version_text</key>
|
|
<delay>0</delay>
|
|
<history>1d</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JAVASCRIPT</type>
|
|
<params>data = JSON.parse(value);
|
|
|
|
var dockerVersion = "Docker Version: " + data.Version;
|
|
var apiVersion = "API Version: " + data.ApiVersion;
|
|
|
|
return dockerVersion +
|
|
"\n" + apiVersion +
|
|
"\n";
|
|
</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},version]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Layers size</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.layers_size</key>
|
|
<delay>0</delay>
|
|
<units>B</units>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.LayersSize</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},system/df]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Name</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.name</key>
|
|
<delay>0</delay>
|
|
<history>1h</history>
|
|
<trends>0</trends>
|
|
<value_type>CHAR</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Name</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
<triggers>
|
|
<trigger>
|
|
<expression>{nodata(30m)}=1</expression>
|
|
<name>Docker: Failed to fetch info data (or no data for 30m)</name>
|
|
<priority>WARNING</priority>
|
|
<description>Zabbix has not received data for items for the last 30 minutes</description>
|
|
<manual_close>YES</manual_close>
|
|
<dependencies>
|
|
<dependency>
|
|
<name>Docker: Service is down</name>
|
|
<expression>{Template App Docker - Agent 1:docker.api[{$DOCKER.SOCKET},_ping].last()}=0</expression>
|
|
</dependency>
|
|
</dependencies>
|
|
</trigger>
|
|
</triggers>
|
|
</item>
|
|
<item>
|
|
<name>Docker: FD</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.nfd</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<description>Number of used File Descriptors</description>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.NFd</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Docker root dir</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.root_dir</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<trends>0</trends>
|
|
<value_type>CHAR</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.DockerRootDir</params>
|
|
</step>
|
|
<step>
|
|
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
|
|
<params>1d</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},info]</key>
|
|
</master_item>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Version</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.version</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<trends>0</trends>
|
|
<value_type>CHAR</value_type>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Version</params>
|
|
</step>
|
|
<step>
|
|
<type>DISCARD_UNCHANGED_HEARTBEAT</type>
|
|
<params>1d</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},version]</key>
|
|
</master_item>
|
|
<triggers>
|
|
<trigger>
|
|
<expression>{diff()}=1 and {strlen()}>0</expression>
|
|
<name>Docker: Version has changed (new version: {ITEM.VALUE})</name>
|
|
<priority>INFO</priority>
|
|
<description>Docker version has changed. Ack to close.</description>
|
|
<manual_close>YES</manual_close>
|
|
</trigger>
|
|
</triggers>
|
|
</item>
|
|
<item>
|
|
<name>Docker: Volumes size</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.volumes_size</key>
|
|
<delay>0</delay>
|
|
<units>B</units>
|
|
<applications>
|
|
<application>
|
|
<name>Docker</name>
|
|
</application>
|
|
</applications>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Volumes[*].UsageData.Size.sum()</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},system/df]</key>
|
|
</master_item>
|
|
</item>
|
|
</items>
|
|
<discovery_rules>
|
|
<discovery_rule>
|
|
<name>Images discovery</name>
|
|
<key>docker.api[{$DOCKER.SOCKET},images/json]</key>
|
|
<delay>15m</delay>
|
|
<filter>
|
|
<conditions>
|
|
<condition>
|
|
<macro>{#NAME}</macro>
|
|
<value>{$DOCKER.LLD.FILTER.IMAGE.MATCHES}</value>
|
|
<formulaid>A</formulaid>
|
|
</condition>
|
|
<condition>
|
|
<macro>{#NAME}</macro>
|
|
<value>{$DOCKER.LLD.FILTER.IMAGE.NOT_MATCHES}</value>
|
|
<operator>NOT_MATCHES_REGEX</operator>
|
|
<formulaid>B</formulaid>
|
|
</condition>
|
|
</conditions>
|
|
</filter>
|
|
<lifetime>{$DOCKER.IMAGE.KEEP}</lifetime>
|
|
<description>Discovery for images metrics</description>
|
|
<item_prototypes>
|
|
<item_prototype>
|
|
<name>Docker: Image {#NAME} Created</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.image.created[{#ID}]</key>
|
|
<trends>0</trends>
|
|
<units>unixtime</units>
|
|
<params>{#CREATED}</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Image {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Docker: Image {#NAME} Size</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.image.size[{#ID}]</key>
|
|
<units>B</units>
|
|
<params>{#SIZE}</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Image {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
</item_prototypes>
|
|
<lld_macro_paths>
|
|
<lld_macro_path>
|
|
<lld_macro>{#ID}</lld_macro>
|
|
<path>$.Id</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#NAME}</lld_macro>
|
|
<path>$.Name</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#SIZE}</lld_macro>
|
|
<path>$.Size</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#CREATED}</lld_macro>
|
|
<path>$.Created</path>
|
|
</lld_macro_path>
|
|
</lld_macro_paths>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JAVASCRIPT</type>
|
|
<params>var data = JSON.parse(value);
|
|
var ix;
|
|
|
|
for (ix in data) {
|
|
var name = data[ix].RepoTags[0];
|
|
var result = name.match(/dkr\.ecr\..+\.amazon.+\/(.+):(.+)/);
|
|
if (result) {
|
|
data[ix].Name = result[2];
|
|
data[ix].Repo = result[1];
|
|
var typeIx = result[2].indexOf('_');
|
|
var revIx = result[2].lastIndexOf('_');
|
|
data[ix].Type = result[2].slice(0, typeIx);
|
|
data[ix].Revision = result[2].slice(typeIx+1, revIx);
|
|
data[ix].Flag = result[2].slice(revIx+1);
|
|
} else {
|
|
data[ix].Name = data[ix].RepoTags[0];
|
|
data[ix].Repo = name.slice(0, name.indexOf('/'));
|
|
data[ix].Type = '';
|
|
data[ix].Revision = '';
|
|
data[ix].Flag = '';
|
|
}
|
|
};
|
|
|
|
return JSON.stringify(data);</params>
|
|
</step>
|
|
</preprocessing>
|
|
</discovery_rule>
|
|
<discovery_rule>
|
|
<name>Containers discovery</name>
|
|
<key>docker.containers.list[{$DOCKER.SOCKET}]</key>
|
|
<delay>15m</delay>
|
|
<filter>
|
|
<evaltype>AND</evaltype>
|
|
<conditions>
|
|
<condition>
|
|
<macro>{#NAME}</macro>
|
|
<value>{$DOCKER.LLD.FILTER.CONTAINER.MATCHES}</value>
|
|
<formulaid>A</formulaid>
|
|
</condition>
|
|
<condition>
|
|
<macro>{#NAME}</macro>
|
|
<value>{$DOCKER.LLD.FILTER.CONTAINER.NOT_MATCHES}</value>
|
|
<operator>NOT_MATCHES_REGEX</operator>
|
|
<formulaid>B</formulaid>
|
|
</condition>
|
|
</conditions>
|
|
</filter>
|
|
<lifetime>{$DOCKER.CONTAINER.KEEP}</lifetime>
|
|
<description>Discovery for containers metrics</description>
|
|
<item_prototypes>
|
|
<item_prototype>
|
|
<name>Docker: Container {#NAME}: Inspect</name>
|
|
<key>docker.api[{$DOCKER.SOCKET},containers/{#ID}/json]</key>
|
|
<history>0</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>CPU Number</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.cpu.number[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<history>1d</history>
|
|
<trends>30d</trends>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.cpu_stats.cpu_usage.percpu_usage.length()</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>CPU System</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.cpu.system[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<history>1d</history>
|
|
<trends>30d</trends>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.cpu_stats.system_cpu_usage</params>
|
|
</step>
|
|
<step>
|
|
<type>SIMPLE_CHANGE</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>CPU Total</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.cpu.total[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<history>1d</history>
|
|
<trends>30d</trends>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.cpu_stats.cpu_usage.total_usage</params>
|
|
</step>
|
|
<step>
|
|
<type>SIMPLE_CHANGE</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>CPU Usage</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.container.cpu.usage[{#ID}]</key>
|
|
<value_type>FLOAT</value_type>
|
|
<units>%</units>
|
|
<params>(last("docker.container.cpu.total[{#ID}]")/last("docker.container.cpu.system[{#ID}]")) * last("docker.container.cpu.number[{#ID}]") * 100.0</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<trigger_prototypes>
|
|
<trigger_prototype>
|
|
<expression>{min(5m)}>{$DOCKER.CPU.USAGE_HIGH}</expression>
|
|
<name>Docker: Container {#NAME}: CPU Usage is high (>{$DOCKER.CPU.USAGE_HIGH}% for 5min)</name>
|
|
<priority>WARNING</priority>
|
|
</trigger_prototype>
|
|
</trigger_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Docker: Container {#NAME}: Created</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.container.created[{#ID}]</key>
|
|
<trends>0</trends>
|
|
<units>unixtime</units>
|
|
<params>{#CREATED}</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Docker: Container {#NAME}: ID</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.id[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<history>1h</history>
|
|
<trends>0</trends>
|
|
<value_type>CHAR</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.Id</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},containers/{#ID}/json]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>IO Read</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.io.read[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<units>Bps</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.blkio_stats.io_service_bytes_recursive[?(@.op=='Read')].value.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>IO Write</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.io.write[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<units>Bps</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.blkio_stats.io_service_bytes_recursive[?(@.op=='Write')].value.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Memory Available</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.container.mem.available[{#ID}]</key>
|
|
<value_type>FLOAT</value_type>
|
|
<units>B</units>
|
|
<params>last("docker.container.mem.total[{#ID}]") - last("docker.container.mem.used[{#ID}]")</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Memory Cache</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.mem.cache[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<units>B</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.memory_stats.stats.cache</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Memory Total</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.mem.total[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<history>7d</history>
|
|
<units>B</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.memory_stats.limit</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Memory Usage</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.container.mem.usage[{#ID}]</key>
|
|
<value_type>FLOAT</value_type>
|
|
<units>%</units>
|
|
<params>(last("docker.container.mem.used[{#ID}]")/last("docker.container.mem.total[{#ID}]")) * 100.0</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<trigger_prototypes>
|
|
<trigger_prototype>
|
|
<expression>{min(5m)}>{$DOCKER.MEM.USAGE_CRITICAL}</expression>
|
|
<name>Docker: Container {#NAME}: Memory usage is critical (>{$DOCKER.MEM.USAGE_CRITICAL}% for 5min)</name>
|
|
<priority>AVERAGE</priority>
|
|
</trigger_prototype>
|
|
<trigger_prototype>
|
|
<expression>{min(5m)}>{$DOCKER.MEM.USAGE_HIGH}</expression>
|
|
<name>Docker: Container {#NAME}: Memory usage is high (>{$DOCKER.MEM.USAGE_HIGH}% for 5min)</name>
|
|
<priority>WARNING</priority>
|
|
<dependencies>
|
|
<dependency>
|
|
<name>Docker: Container {#NAME}: Memory usage is critical (>{$DOCKER.MEM.USAGE_CRITICAL}% for 5min)</name>
|
|
<expression>{Template App Docker - Agent 1:docker.container.mem.usage[{#ID}].min(5m)}>{$DOCKER.MEM.USAGE_CRITICAL}</expression>
|
|
</dependency>
|
|
</dependencies>
|
|
</trigger_prototype>
|
|
</trigger_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Memory Used</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.container.mem.used[{#ID}]</key>
|
|
<units>B</units>
|
|
<params>last("docker.container.mem.used_cache[{#ID}]") - last("docker.container.mem.cache[{#ID}]")</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Memory Used With Cache</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.mem.used_cache[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<units>B</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.memory_stats.usage</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>rx_bytes</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.rx_bytes[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<units>bps</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].rx_bytes.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>MULTIPLIER</type>
|
|
<params>8</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>rx_dropped</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.rx_dropped[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].rx_dropped.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>rx_errors</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.rx_errors[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].rx_errors.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>rx_packets</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.rx_packets[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].rx_packets.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>tx_bytes</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.tx_bytes[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<units>bps</units>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].tx_bytes.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>MULTIPLIER</type>
|
|
<params>8</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>tx_dropped</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.tx_dropped[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].tx_dropped.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>tx_errors</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.tx_errors[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].tx_errors.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>tx_packets</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.net.tx_packets[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<value_type>FLOAT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.networks.[*].tx_packets.sum()</params>
|
|
</step>
|
|
<step>
|
|
<type>CHANGE_PER_SECOND</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>PIDs</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.pids[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.pids_stats.current</params>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
</master_item>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Docker: Container {#NAME}: Size</name>
|
|
<type>CALCULATED</type>
|
|
<key>docker.container.size[{#ID}]</key>
|
|
<units>B</units>
|
|
<params>{#SIZERW}</params>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>State</name>
|
|
<type>DEPENDENT</type>
|
|
<key>docker.container.state[{#ID}]</key>
|
|
<delay>0</delay>
|
|
<trends>0</trends>
|
|
<value_type>CHAR</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JSONPATH</type>
|
|
<params>$.State.Status</params>
|
|
</step>
|
|
<step>
|
|
<type>DISCARD_UNCHANGED</type>
|
|
<params/>
|
|
</step>
|
|
</preprocessing>
|
|
<master_item>
|
|
<key>docker.api[{$DOCKER.SOCKET},containers/{#ID}/json]</key>
|
|
</master_item>
|
|
<trigger_prototypes>
|
|
<trigger_prototype>
|
|
<expression>{last()}<>"running"</expression>
|
|
<name>Docker: Container {#NAME}: Not running</name>
|
|
<priority>WARNING</priority>
|
|
<dependencies>
|
|
<dependency>
|
|
<name>Docker: Service is down</name>
|
|
<expression>{Template App Docker - Agent 1:docker.api[{$DOCKER.SOCKET},_ping].last()}=0</expression>
|
|
</dependency>
|
|
</dependencies>
|
|
</trigger_prototype>
|
|
</trigger_prototypes>
|
|
</item_prototype>
|
|
<item_prototype>
|
|
<name>Docker: Container {#NAME}: Stats</name>
|
|
<key>docker.containers.stats[{$DOCKER.SOCKET},{#ID}]</key>
|
|
<history>0</history>
|
|
<trends>0</trends>
|
|
<value_type>TEXT</value_type>
|
|
<application_prototypes>
|
|
<application_prototype>
|
|
<name>Docker Container {#NAME}</name>
|
|
</application_prototype>
|
|
</application_prototypes>
|
|
</item_prototype>
|
|
</item_prototypes>
|
|
<trigger_prototypes>
|
|
<trigger_prototype>
|
|
<expression>{Template App Docker - Agent 1:docker.container.net.rx_errors[{#ID}].min(3m)}>{$DOCKER.NET.ERROR_THRESHOLD} or {Template App Docker - Agent 1:docker.container.net.tx_errors[{#ID}].min(3m)}>{$DOCKER.NET.ERROR_THRESHOLD} or {Template App Docker - Agent 1:docker.container.net.tx_dropped[{#ID}].min(3m)}>{$DOCKER.NET.ERROR_THRESHOLD} or {Template App Docker - Agent 1:docker.container.net.rx_dropped[{#ID}].min(3m)}>{$DOCKER.NET.ERROR_THRESHOLD}</expression>
|
|
<name>Docker: Container {#NAME}: Network errors (>{$DOCKER.NET.ERROR_THRESHOLD} for 3min)</name>
|
|
<priority>WARNING</priority>
|
|
</trigger_prototype>
|
|
</trigger_prototypes>
|
|
<graph_prototypes>
|
|
<graph_prototype>
|
|
<name>Docker: Container {#NAME}: CPU & PID</name>
|
|
<graph_items>
|
|
<graph_item>
|
|
<color>1A7C11</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.cpu.usage[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<color>0288D1</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.pids[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph_prototype>
|
|
<graph_prototype>
|
|
<name>Docker: Container {#NAME}: IO Rate</name>
|
|
<graph_items>
|
|
<graph_item>
|
|
<color>1A7C11</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.io.read[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<color>0288D1</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.io.write[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph_prototype>
|
|
<graph_prototype>
|
|
<name>Docker: Container {#NAME}: Memory Usage</name>
|
|
<ymin_type_1>FIXED</ymin_type_1>
|
|
<ymax_type_1>ITEM</ymax_type_1>
|
|
<ymax_item_1>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.mem.total[{#ID}]</key>
|
|
</ymax_item_1>
|
|
<graph_items>
|
|
<graph_item>
|
|
<color>1A7C11</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.mem.total[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<drawtype>GRADIENT_LINE</drawtype>
|
|
<color>0288D1</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.mem.available[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph_prototype>
|
|
<graph_prototype>
|
|
<name>Docker: Container {#NAME}: Network</name>
|
|
<graph_items>
|
|
<graph_item>
|
|
<drawtype>GRADIENT_LINE</drawtype>
|
|
<color>66BB6A</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.rx_bytes[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<drawtype>DASHED_LINE</drawtype>
|
|
<color>2E7D32</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.rx_packets[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>2</sortorder>
|
|
<color>FF5722</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.rx_dropped[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>3</sortorder>
|
|
<color>FFEB3B</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.rx_errors[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>4</sortorder>
|
|
<color>4DD0E1</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.tx_bytes[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>5</sortorder>
|
|
<drawtype>DASHED_LINE</drawtype>
|
|
<color>00838F</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.tx_packets[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>6</sortorder>
|
|
<color>C2185B</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.tx_dropped[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>7</sortorder>
|
|
<color>303F9F</color>
|
|
<yaxisside>RIGHT</yaxisside>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.container.net.tx_errors[{#ID}]</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph_prototype>
|
|
</graph_prototypes>
|
|
<lld_macro_paths>
|
|
<lld_macro_path>
|
|
<lld_macro>{#ID}</lld_macro>
|
|
<path>$.Id</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#NAME}</lld_macro>
|
|
<path>$.Name</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#CREATED}</lld_macro>
|
|
<path>$.Created</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#IMAGEID}</lld_macro>
|
|
<path>$.ImageID</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#SIZERW}</lld_macro>
|
|
<path>$.SizeRw</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#SIZEROOTFS}</lld_macro>
|
|
<path>$.SizeRootFs</path>
|
|
</lld_macro_path>
|
|
<lld_macro_path>
|
|
<lld_macro>{#COMMAND}</lld_macro>
|
|
<path>$.Command</path>
|
|
</lld_macro_path>
|
|
</lld_macro_paths>
|
|
<preprocessing>
|
|
<step>
|
|
<type>JAVASCRIPT</type>
|
|
<params>var data = JSON.parse(value);
|
|
var ix;
|
|
|
|
for (ix in data) {
|
|
var name;
|
|
name = data[ix].Names[0];
|
|
if (name.indexOf('/') === 0) {
|
|
name = name.slice(1);
|
|
}
|
|
|
|
data[ix].Name = name;
|
|
|
|
if (!data[ix].SizeRw) {
|
|
data[ix].SizeRw = 0;
|
|
}
|
|
};
|
|
|
|
return JSON.stringify(data);</params>
|
|
</step>
|
|
</preprocessing>
|
|
</discovery_rule>
|
|
</discovery_rules>
|
|
<macros>
|
|
<macro>
|
|
<macro>{$DOCKER.CONTAINER.KEEP}</macro>
|
|
<value>14d</value>
|
|
<description>Time to keep the data about old containers that are no longer discovered on the host. Min: 1h</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.CPU.USAGE_HIGH}</macro>
|
|
<value>80</value>
|
|
<description>Percent of container CPU usage to trigger warning</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.IMAGE.KEEP}</macro>
|
|
<value>14d</value>
|
|
<description>Time to keep the data about old images that are no longer discovered on the host. Min: 1h</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.LLD.FILTER.CONTAINER.MATCHES}</macro>
|
|
<value>.*</value>
|
|
<description>Filter of discoverable containers</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.LLD.FILTER.CONTAINER.NOT_MATCHES}</macro>
|
|
<value>CHANGE_IF_NEEDED</value>
|
|
<description>Filter to exclude discovered containers</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.LLD.FILTER.IMAGE.MATCHES}</macro>
|
|
<value>.*</value>
|
|
<description>Filter of discoverable images</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.LLD.FILTER.IMAGE.NOT_MATCHES}</macro>
|
|
<value>CHANGE_IF_NEEDED</value>
|
|
<description>Filter to exclude discovered images</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.MEM.USAGE_CRITICAL}</macro>
|
|
<value>90</value>
|
|
<description>Percent of container memory usage considered critical</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.MEM.USAGE_HIGH}</macro>
|
|
<value>80</value>
|
|
<description>Percent of container memory usage to trigger warning</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.NET.ERROR_THRESHOLD}</macro>
|
|
<value>0</value>
|
|
<description>Number of dropped packets or errors in a container to trigger a warning</description>
|
|
</macro>
|
|
<macro>
|
|
<macro>{$DOCKER.SOCKET}</macro>
|
|
<value>/var/run/docker.sock</value>
|
|
<description>Docker socket to use for API access</description>
|
|
</macro>
|
|
</macros>
|
|
<screens>
|
|
<screen>
|
|
<name>Docker overview</name>
|
|
<hsize>4</hsize>
|
|
<vsize>6</vsize>
|
|
<screen_items>
|
|
<screen_item>
|
|
<resourcetype>3</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<key>docker.info.version_text</key>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>500</width>
|
|
<height>100</height>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<colspan>2</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>1</elements>
|
|
<valign>1</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>3</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>0</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Resources</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>750</width>
|
|
<height>100</height>
|
|
<x>2</x>
|
|
<y>0</y>
|
|
<colspan>2</colspan>
|
|
<rowspan>2</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>3</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>3</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<key>docker.info.text</key>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>500</width>
|
|
<height>100</height>
|
|
<x>0</x>
|
|
<y>1</y>
|
|
<colspan>2</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>1</elements>
|
|
<valign>1</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>3</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>0</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Containers</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>750</width>
|
|
<height>100</height>
|
|
<x>0</x>
|
|
<y>2</y>
|
|
<colspan>2</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>3</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>0</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Sizes</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>750</width>
|
|
<height>100</height>
|
|
<x>2</x>
|
|
<y>2</y>
|
|
<colspan>2</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>3</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>19</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<key>docker.image.size[{#ID}]</key>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>600</width>
|
|
<height>100</height>
|
|
<x>0</x>
|
|
<y>3</y>
|
|
<colspan>4</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>3</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>20</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Container {#NAME}: Network</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>380</width>
|
|
<height>80</height>
|
|
<x>0</x>
|
|
<y>4</y>
|
|
<colspan>4</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>4</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>19</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<key>docker.container.size[{#ID}]</key>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>380</width>
|
|
<height>80</height>
|
|
<x>0</x>
|
|
<y>5</y>
|
|
<colspan>1</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>1</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>20</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Container {#NAME}: IO Rate</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>380</width>
|
|
<height>80</height>
|
|
<x>1</x>
|
|
<y>5</y>
|
|
<colspan>1</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>1</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>20</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Container {#NAME}: CPU & PID</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>380</width>
|
|
<height>80</height>
|
|
<x>2</x>
|
|
<y>5</y>
|
|
<colspan>1</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>1</max_columns>
|
|
</screen_item>
|
|
<screen_item>
|
|
<resourcetype>20</resourcetype>
|
|
<style>0</style>
|
|
<resource>
|
|
<name>Docker: Container {#NAME}: Memory Usage</name>
|
|
<host>Template App Docker - Agent 1</host>
|
|
</resource>
|
|
<width>380</width>
|
|
<height>80</height>
|
|
<x>3</x>
|
|
<y>5</y>
|
|
<colspan>1</colspan>
|
|
<rowspan>1</rowspan>
|
|
<elements>0</elements>
|
|
<valign>0</valign>
|
|
<halign>0</halign>
|
|
<dynamic>0</dynamic>
|
|
<sort_triggers>0</sort_triggers>
|
|
<url/>
|
|
<application/>
|
|
<max_columns>1</max_columns>
|
|
</screen_item>
|
|
</screen_items>
|
|
</screen>
|
|
</screens>
|
|
</template>
|
|
</templates>
|
|
<graphs>
|
|
<graph>
|
|
<name>Docker: Containers</name>
|
|
<graph_items>
|
|
<graph_item>
|
|
<drawtype>GRADIENT_LINE</drawtype>
|
|
<color>1A7C11</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.containers.running</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>2774A4</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.containers.paused</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>2</sortorder>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>F63100</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.containers.stopped</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>3</sortorder>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>A54F10</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.containers.total</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph>
|
|
<graph>
|
|
<name>Docker: Resources</name>
|
|
<graph_items>
|
|
<graph_item>
|
|
<color>1A7C11</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.goroutines</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<color>F63100</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.nfd</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph>
|
|
<graph>
|
|
<name>Docker: Sizes</name>
|
|
<graph_items>
|
|
<graph_item>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>1A7C11</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.images_size</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>1</sortorder>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>2774A4</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.layers_size</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>2</sortorder>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>F63100</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.containers_size</key>
|
|
</item>
|
|
</graph_item>
|
|
<graph_item>
|
|
<sortorder>3</sortorder>
|
|
<drawtype>BOLD_LINE</drawtype>
|
|
<color>A54F10</color>
|
|
<item>
|
|
<host>Template App Docker - Agent 1</host>
|
|
<key>docker.volumes_size</key>
|
|
</item>
|
|
</graph_item>
|
|
</graph_items>
|
|
</graph>
|
|
</graphs>
|
|
<value_maps>
|
|
<value_map>
|
|
<name>Docker flag</name>
|
|
<mappings>
|
|
<mapping>
|
|
<value>0</value>
|
|
<newvalue>False</newvalue>
|
|
</mapping>
|
|
<mapping>
|
|
<value>1</value>
|
|
<newvalue>True</newvalue>
|
|
</mapping>
|
|
</mappings>
|
|
</value_map>
|
|
<value_map>
|
|
<name>Service state</name>
|
|
<mappings>
|
|
<mapping>
|
|
<value>0</value>
|
|
<newvalue>Down</newvalue>
|
|
</mapping>
|
|
<mapping>
|
|
<value>1</value>
|
|
<newvalue>Up</newvalue>
|
|
</mapping>
|
|
</mappings>
|
|
</value_map>
|
|
</value_maps>
|
|
</zabbix_export>
|