Files
fileserver/docker/docker_template_agent1.xml
2023-12-18 20:09:03 -06:00

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 = &quot;Docker Name: &quot; + data.Name;
var dockerRootDir = &quot;Root Directory: &quot; + data.DockerRootDir;
var debugEnabled = &quot;Debug Enabled: &quot; + (data.Debug ? &quot;TRUE&quot; : &quot;FALSE&quot;);
return dockerName +
&quot;\n&quot; + dockerRootDir +
&quot;\n&quot; + debugEnabled +
&quot;\n&quot;;
</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 = &quot;Docker Version: &quot; + data.Version;
var apiVersion = &quot;API Version: &quot; + data.ApiVersion;
return dockerVersion +
&quot;\n&quot; + apiVersion +
&quot;\n&quot;;
</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()}&gt;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(&quot;docker.container.cpu.total[{#ID}]&quot;)/last(&quot;docker.container.cpu.system[{#ID}]&quot;)) * last(&quot;docker.container.cpu.number[{#ID}]&quot;) * 100.0</params>
<application_prototypes>
<application_prototype>
<name>Docker Container {#NAME}</name>
</application_prototype>
</application_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{min(5m)}&gt;{$DOCKER.CPU.USAGE_HIGH}</expression>
<name>Docker: Container {#NAME}: CPU Usage is high (&gt;{$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(&quot;docker.container.mem.total[{#ID}]&quot;) - last(&quot;docker.container.mem.used[{#ID}]&quot;)</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(&quot;docker.container.mem.used[{#ID}]&quot;)/last(&quot;docker.container.mem.total[{#ID}]&quot;)) * 100.0</params>
<application_prototypes>
<application_prototype>
<name>Docker Container {#NAME}</name>
</application_prototype>
</application_prototypes>
<trigger_prototypes>
<trigger_prototype>
<expression>{min(5m)}&gt;{$DOCKER.MEM.USAGE_CRITICAL}</expression>
<name>Docker: Container {#NAME}: Memory usage is critical (&gt;{$DOCKER.MEM.USAGE_CRITICAL}% for 5min)</name>
<priority>AVERAGE</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{min(5m)}&gt;{$DOCKER.MEM.USAGE_HIGH}</expression>
<name>Docker: Container {#NAME}: Memory usage is high (&gt;{$DOCKER.MEM.USAGE_HIGH}% for 5min)</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>Docker: Container {#NAME}: Memory usage is critical (&gt;{$DOCKER.MEM.USAGE_CRITICAL}% for 5min)</name>
<expression>{Template App Docker - Agent 1:docker.container.mem.usage[{#ID}].min(5m)}&gt;{$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(&quot;docker.container.mem.used_cache[{#ID}]&quot;) - last(&quot;docker.container.mem.cache[{#ID}]&quot;)</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()}&lt;&gt;&quot;running&quot;</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)}&gt;{$DOCKER.NET.ERROR_THRESHOLD} or {Template App Docker - Agent 1:docker.container.net.tx_errors[{#ID}].min(3m)}&gt;{$DOCKER.NET.ERROR_THRESHOLD} or {Template App Docker - Agent 1:docker.container.net.tx_dropped[{#ID}].min(3m)}&gt;{$DOCKER.NET.ERROR_THRESHOLD} or {Template App Docker - Agent 1:docker.container.net.rx_dropped[{#ID}].min(3m)}&gt;{$DOCKER.NET.ERROR_THRESHOLD}</expression>
<name>Docker: Container {#NAME}: Network errors (&gt;{$DOCKER.NET.ERROR_THRESHOLD} for 3min)</name>
<priority>WARNING</priority>
</trigger_prototype>
</trigger_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Docker: Container {#NAME}: CPU &amp; 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 &amp; 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>