5.0
2020-07-23T07:41:34Z
Templates/Applications
Template App Docker - Agent 1
Template App Docker - Agent 1
Get Docker engine metrics using zabbix-agent 1
Templates/Applications
Docker
Zabbix raw items
-
Docker: Get info
docker.api[{$DOCKER.SOCKET},info]
0
0
TEXT
Zabbix raw items
-
Docker: Get data_usage
docker.api[{$DOCKER.SOCKET},system/df]
0
0
TEXT
Zabbix raw items
-
Docker: Get version info
docker.api[{$DOCKER.SOCKET},version]
0
0
TEXT
Zabbix raw items
-
Docker: Ping
docker.api[{$DOCKER.SOCKET},_ping]
7h
Docker
Service state
JAVASCRIPT
return (value === 'OK') ? 1 : 0;
DISCARD_UNCHANGED_HEARTBEAT
10m
{last()}=0
Docker: Service is down
AVERAGE
YES
-
Docker: API version
DEPENDENT
docker.api_version
0
7d
0
CHAR
Docker
JSONPATH
$.ApiVersion
DISCARD_UNCHANGED_HEARTBEAT
1d
docker.api[{$DOCKER.SOCKET},version]
-
Docker: Containers paused
DEPENDENT
docker.containers.paused
0
Total number of containers paused on this host
Docker
JSONPATH
$.ContainersPaused
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Containers running
DEPENDENT
docker.containers.running
0
Total number of containers running on this host
Docker
JSONPATH
$.ContainersRunning
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Containers stopped
DEPENDENT
docker.containers.stopped
0
Total number of containers stopped on this host
Docker
JSONPATH
$.ContainersStopped
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Containers total
DEPENDENT
docker.containers.total
0
Total number of containers on this host
Docker
JSONPATH
$.Containers
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Containers size
DEPENDENT
docker.containers_size
0
B
Docker
JSONPATH
$.Containers[*].SizeRw.sum()
docker.api[{$DOCKER.SOCKET},system/df]
-
Docker: Debug enabled
DEPENDENT
docker.debug.enabled
0
7d
Docker
Docker flag
JSONPATH
$.Debug
BOOL_TO_DECIMAL
DISCARD_UNCHANGED_HEARTBEAT
1d
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Goroutines
DEPENDENT
docker.goroutines
0
7d
Number of goroutines
Docker
JSONPATH
$.NGoroutines
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Images size
DEPENDENT
docker.images_size
0
B
Docker
JSONPATH
$.Images[*].Size.sum()
docker.api[{$DOCKER.SOCKET},system/df]
-
Docker: Info Text
DEPENDENT
docker.info.text
0
1d
0
TEXT
Docker
JAVASCRIPT
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";
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Version Text
DEPENDENT
docker.info.version_text
0
1d
0
TEXT
Docker
JAVASCRIPT
data = JSON.parse(value);
var dockerVersion = "Docker Version: " + data.Version;
var apiVersion = "API Version: " + data.ApiVersion;
return dockerVersion +
"\n" + apiVersion +
"\n";
docker.api[{$DOCKER.SOCKET},version]
-
Docker: Layers size
DEPENDENT
docker.layers_size
0
B
Docker
JSONPATH
$.LayersSize
docker.api[{$DOCKER.SOCKET},system/df]
-
Docker: Name
DEPENDENT
docker.name
0
1h
0
CHAR
Docker
JSONPATH
$.Name
docker.api[{$DOCKER.SOCKET},info]
{nodata(30m)}=1
Docker: Failed to fetch info data (or no data for 30m)
WARNING
Zabbix has not received data for items for the last 30 minutes
YES
Docker: Service is down
{Template App Docker - Agent 1:docker.api[{$DOCKER.SOCKET},_ping].last()}=0
-
Docker: FD
DEPENDENT
docker.nfd
0
7d
Number of used File Descriptors
Docker
JSONPATH
$.NFd
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Docker root dir
DEPENDENT
docker.root_dir
0
7d
0
CHAR
Docker
JSONPATH
$.DockerRootDir
DISCARD_UNCHANGED_HEARTBEAT
1d
docker.api[{$DOCKER.SOCKET},info]
-
Docker: Version
DEPENDENT
docker.version
0
7d
0
CHAR
Docker
JSONPATH
$.Version
DISCARD_UNCHANGED_HEARTBEAT
1d
docker.api[{$DOCKER.SOCKET},version]
{diff()}=1 and {strlen()}>0
Docker: Version has changed (new version: {ITEM.VALUE})
INFO
Docker version has changed. Ack to close.
YES
-
Docker: Volumes size
DEPENDENT
docker.volumes_size
0
B
Docker
JSONPATH
$.Volumes[*].UsageData.Size.sum()
docker.api[{$DOCKER.SOCKET},system/df]
Images discovery
docker.api[{$DOCKER.SOCKET},images/json]
15m
{#NAME}
{$DOCKER.LLD.FILTER.IMAGE.MATCHES}
A
{#NAME}
{$DOCKER.LLD.FILTER.IMAGE.NOT_MATCHES}
NOT_MATCHES_REGEX
B
{$DOCKER.IMAGE.KEEP}
Discovery for images metrics
Docker: Image {#NAME} Created
CALCULATED
docker.image.created[{#ID}]
0
unixtime
{#CREATED}
Docker Image {#NAME}
Docker: Image {#NAME} Size
CALCULATED
docker.image.size[{#ID}]
B
{#SIZE}
Docker Image {#NAME}
{#ID}
$.Id
{#NAME}
$.Name
{#SIZE}
$.Size
{#CREATED}
$.Created
JAVASCRIPT
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);
Containers discovery
docker.containers.list[{$DOCKER.SOCKET}]
15m
AND
{#NAME}
{$DOCKER.LLD.FILTER.CONTAINER.MATCHES}
A
{#NAME}
{$DOCKER.LLD.FILTER.CONTAINER.NOT_MATCHES}
NOT_MATCHES_REGEX
B
{$DOCKER.CONTAINER.KEEP}
Discovery for containers metrics
Docker: Container {#NAME}: Inspect
docker.api[{$DOCKER.SOCKET},containers/{#ID}/json]
0
0
TEXT
Docker Container {#NAME}
CPU Number
DEPENDENT
docker.container.cpu.number[{#ID}]
0
1d
30d
Docker Container {#NAME}
JSONPATH
$.cpu_stats.cpu_usage.percpu_usage.length()
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
CPU System
DEPENDENT
docker.container.cpu.system[{#ID}]
0
1d
30d
Docker Container {#NAME}
JSONPATH
$.cpu_stats.system_cpu_usage
SIMPLE_CHANGE
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
CPU Total
DEPENDENT
docker.container.cpu.total[{#ID}]
0
1d
30d
Docker Container {#NAME}
JSONPATH
$.cpu_stats.cpu_usage.total_usage
SIMPLE_CHANGE
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
CPU Usage
CALCULATED
docker.container.cpu.usage[{#ID}]
FLOAT
%
(last("docker.container.cpu.total[{#ID}]")/last("docker.container.cpu.system[{#ID}]")) * last("docker.container.cpu.number[{#ID}]") * 100.0
Docker Container {#NAME}
{min(5m)}>{$DOCKER.CPU.USAGE_HIGH}
Docker: Container {#NAME}: CPU Usage is high (>{$DOCKER.CPU.USAGE_HIGH}% for 5min)
WARNING
Docker: Container {#NAME}: Created
CALCULATED
docker.container.created[{#ID}]
0
unixtime
{#CREATED}
Docker Container {#NAME}
Docker: Container {#NAME}: ID
DEPENDENT
docker.container.id[{#ID}]
0
1h
0
CHAR
Docker Container {#NAME}
JSONPATH
$.Id
docker.api[{$DOCKER.SOCKET},containers/{#ID}/json]
IO Read
DEPENDENT
docker.container.io.read[{#ID}]
0
FLOAT
Bps
Docker Container {#NAME}
JSONPATH
$.blkio_stats.io_service_bytes_recursive[?(@.op=='Read')].value.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
IO Write
DEPENDENT
docker.container.io.write[{#ID}]
0
FLOAT
Bps
Docker Container {#NAME}
JSONPATH
$.blkio_stats.io_service_bytes_recursive[?(@.op=='Write')].value.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
Memory Available
CALCULATED
docker.container.mem.available[{#ID}]
FLOAT
B
last("docker.container.mem.total[{#ID}]") - last("docker.container.mem.used[{#ID}]")
Docker Container {#NAME}
Memory Cache
DEPENDENT
docker.container.mem.cache[{#ID}]
0
B
Docker Container {#NAME}
JSONPATH
$.memory_stats.stats.cache
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
Memory Total
DEPENDENT
docker.container.mem.total[{#ID}]
0
7d
B
Docker Container {#NAME}
JSONPATH
$.memory_stats.limit
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
Memory Usage
CALCULATED
docker.container.mem.usage[{#ID}]
FLOAT
%
(last("docker.container.mem.used[{#ID}]")/last("docker.container.mem.total[{#ID}]")) * 100.0
Docker Container {#NAME}
{min(5m)}>{$DOCKER.MEM.USAGE_CRITICAL}
Docker: Container {#NAME}: Memory usage is critical (>{$DOCKER.MEM.USAGE_CRITICAL}% for 5min)
AVERAGE
{min(5m)}>{$DOCKER.MEM.USAGE_HIGH}
Docker: Container {#NAME}: Memory usage is high (>{$DOCKER.MEM.USAGE_HIGH}% for 5min)
WARNING
Docker: Container {#NAME}: Memory usage is critical (>{$DOCKER.MEM.USAGE_CRITICAL}% for 5min)
{Template App Docker - Agent 1:docker.container.mem.usage[{#ID}].min(5m)}>{$DOCKER.MEM.USAGE_CRITICAL}
Memory Used
CALCULATED
docker.container.mem.used[{#ID}]
B
last("docker.container.mem.used_cache[{#ID}]") - last("docker.container.mem.cache[{#ID}]")
Docker Container {#NAME}
Memory Used With Cache
DEPENDENT
docker.container.mem.used_cache[{#ID}]
0
B
Docker Container {#NAME}
JSONPATH
$.memory_stats.usage
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
rx_bytes
DEPENDENT
docker.container.net.rx_bytes[{#ID}]
0
FLOAT
bps
Docker Container {#NAME}
JSONPATH
$.networks.[*].rx_bytes.sum()
MULTIPLIER
8
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
rx_dropped
DEPENDENT
docker.container.net.rx_dropped[{#ID}]
0
FLOAT
Docker Container {#NAME}
JSONPATH
$.networks.[*].rx_dropped.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
rx_errors
DEPENDENT
docker.container.net.rx_errors[{#ID}]
0
FLOAT
Docker Container {#NAME}
JSONPATH
$.networks.[*].rx_errors.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
rx_packets
DEPENDENT
docker.container.net.rx_packets[{#ID}]
0
FLOAT
Docker Container {#NAME}
JSONPATH
$.networks.[*].rx_packets.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
tx_bytes
DEPENDENT
docker.container.net.tx_bytes[{#ID}]
0
FLOAT
bps
Docker Container {#NAME}
JSONPATH
$.networks.[*].tx_bytes.sum()
MULTIPLIER
8
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
tx_dropped
DEPENDENT
docker.container.net.tx_dropped[{#ID}]
0
FLOAT
Docker Container {#NAME}
JSONPATH
$.networks.[*].tx_dropped.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
tx_errors
DEPENDENT
docker.container.net.tx_errors[{#ID}]
0
FLOAT
Docker Container {#NAME}
JSONPATH
$.networks.[*].tx_errors.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
tx_packets
DEPENDENT
docker.container.net.tx_packets[{#ID}]
0
FLOAT
Docker Container {#NAME}
JSONPATH
$.networks.[*].tx_packets.sum()
CHANGE_PER_SECOND
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
PIDs
DEPENDENT
docker.container.pids[{#ID}]
0
Docker Container {#NAME}
JSONPATH
$.pids_stats.current
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
Docker: Container {#NAME}: Size
CALCULATED
docker.container.size[{#ID}]
B
{#SIZERW}
Docker Container {#NAME}
State
DEPENDENT
docker.container.state[{#ID}]
0
0
CHAR
Docker Container {#NAME}
JSONPATH
$.State.Status
DISCARD_UNCHANGED
docker.api[{$DOCKER.SOCKET},containers/{#ID}/json]
{last()}<>"running"
Docker: Container {#NAME}: Not running
WARNING
Docker: Service is down
{Template App Docker - Agent 1:docker.api[{$DOCKER.SOCKET},_ping].last()}=0
Docker: Container {#NAME}: Stats
docker.containers.stats[{$DOCKER.SOCKET},{#ID}]
0
0
TEXT
Docker Container {#NAME}
{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}
Docker: Container {#NAME}: Network errors (>{$DOCKER.NET.ERROR_THRESHOLD} for 3min)
WARNING
Docker: Container {#NAME}: CPU & PID
1A7C11
-
Template App Docker - Agent 1
docker.container.cpu.usage[{#ID}]
1
0288D1
RIGHT
-
Template App Docker - Agent 1
docker.container.pids[{#ID}]
Docker: Container {#NAME}: IO Rate
1A7C11
-
Template App Docker - Agent 1
docker.container.io.read[{#ID}]
1
0288D1
-
Template App Docker - Agent 1
docker.container.io.write[{#ID}]
Docker: Container {#NAME}: Memory Usage
FIXED
ITEM
Template App Docker - Agent 1
docker.container.mem.total[{#ID}]
1A7C11
-
Template App Docker - Agent 1
docker.container.mem.total[{#ID}]
1
GRADIENT_LINE
0288D1
-
Template App Docker - Agent 1
docker.container.mem.available[{#ID}]
Docker: Container {#NAME}: Network
GRADIENT_LINE
66BB6A
-
Template App Docker - Agent 1
docker.container.net.rx_bytes[{#ID}]
1
DASHED_LINE
2E7D32
RIGHT
-
Template App Docker - Agent 1
docker.container.net.rx_packets[{#ID}]
2
FF5722
RIGHT
-
Template App Docker - Agent 1
docker.container.net.rx_dropped[{#ID}]
3
FFEB3B
RIGHT
-
Template App Docker - Agent 1
docker.container.net.rx_errors[{#ID}]
4
4DD0E1
-
Template App Docker - Agent 1
docker.container.net.tx_bytes[{#ID}]
5
DASHED_LINE
00838F
RIGHT
-
Template App Docker - Agent 1
docker.container.net.tx_packets[{#ID}]
6
C2185B
RIGHT
-
Template App Docker - Agent 1
docker.container.net.tx_dropped[{#ID}]
7
303F9F
RIGHT
-
Template App Docker - Agent 1
docker.container.net.tx_errors[{#ID}]
{#ID}
$.Id
{#NAME}
$.Name
{#CREATED}
$.Created
{#IMAGEID}
$.ImageID
{#SIZERW}
$.SizeRw
{#SIZEROOTFS}
$.SizeRootFs
{#COMMAND}
$.Command
JAVASCRIPT
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);
{$DOCKER.CONTAINER.KEEP}
14d
Time to keep the data about old containers that are no longer discovered on the host. Min: 1h
{$DOCKER.CPU.USAGE_HIGH}
80
Percent of container CPU usage to trigger warning
{$DOCKER.IMAGE.KEEP}
14d
Time to keep the data about old images that are no longer discovered on the host. Min: 1h
{$DOCKER.LLD.FILTER.CONTAINER.MATCHES}
.*
Filter of discoverable containers
{$DOCKER.LLD.FILTER.CONTAINER.NOT_MATCHES}
CHANGE_IF_NEEDED
Filter to exclude discovered containers
{$DOCKER.LLD.FILTER.IMAGE.MATCHES}
.*
Filter of discoverable images
{$DOCKER.LLD.FILTER.IMAGE.NOT_MATCHES}
CHANGE_IF_NEEDED
Filter to exclude discovered images
{$DOCKER.MEM.USAGE_CRITICAL}
90
Percent of container memory usage considered critical
{$DOCKER.MEM.USAGE_HIGH}
80
Percent of container memory usage to trigger warning
{$DOCKER.NET.ERROR_THRESHOLD}
0
Number of dropped packets or errors in a container to trigger a warning
{$DOCKER.SOCKET}
/var/run/docker.sock
Docker socket to use for API access
Docker overview
4
6
3
docker.info.version_text
Template App Docker - Agent 1
500
100
0
0
2
1
1
1
0
0
0
3
0
Docker: Resources
Template App Docker - Agent 1
750
100
2
0
2
2
0
0
0
0
0
3
3
docker.info.text
Template App Docker - Agent 1
500
100
0
1
2
1
1
1
0
0
0
3
0
Docker: Containers
Template App Docker - Agent 1
750
100
0
2
2
1
0
0
0
0
0
3
0
Docker: Sizes
Template App Docker - Agent 1
750
100
2
2
2
1
0
0
0
0
0
3
19
docker.image.size[{#ID}]
Template App Docker - Agent 1
600
100
0
3
4
1
0
0
0
0
0
3
20
Docker: Container {#NAME}: Network
Template App Docker - Agent 1
380
80
0
4
4
1
0
0
0
0
0
4
19
docker.container.size[{#ID}]
Template App Docker - Agent 1
380
80
0
5
1
1
0
0
0
0
0
1
20
Docker: Container {#NAME}: IO Rate
Template App Docker - Agent 1
380
80
1
5
1
1
0
0
0
0
0
1
20
Docker: Container {#NAME}: CPU & PID
Template App Docker - Agent 1
380
80
2
5
1
1
0
0
0
0
0
1
20
Docker: Container {#NAME}: Memory Usage
Template App Docker - Agent 1
380
80
3
5
1
1
0
0
0
0
0
1
Docker: Containers
GRADIENT_LINE
1A7C11
-
Template App Docker - Agent 1
docker.containers.running
1
BOLD_LINE
2774A4
-
Template App Docker - Agent 1
docker.containers.paused
2
BOLD_LINE
F63100
-
Template App Docker - Agent 1
docker.containers.stopped
3
BOLD_LINE
A54F10
-
Template App Docker - Agent 1
docker.containers.total
Docker: Resources
1A7C11
-
Template App Docker - Agent 1
docker.goroutines
1
F63100
-
Template App Docker - Agent 1
docker.nfd
Docker: Sizes
BOLD_LINE
1A7C11
-
Template App Docker - Agent 1
docker.images_size
1
BOLD_LINE
2774A4
-
Template App Docker - Agent 1
docker.layers_size
2
BOLD_LINE
F63100
-
Template App Docker - Agent 1
docker.containers_size
3
BOLD_LINE
A54F10
-
Template App Docker - Agent 1
docker.volumes_size
Docker flag
0
False
1
True
Service state
0
Down
1
Up