zabbix_export: version: '5.4' date: '2021-11-21T22:00:21Z' groups: - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6 name: Templates/Applications templates: - uuid: dd1a3b27d2f24415b48baec327f9915a template: 'App Docker swarm' name: 'App Docker swarm' description: | ## Overview Monitoring with Docker API, no external scripts need. Use {HOST.DNS} for connect to Docker API. I'm use SSL client certificate to connect to Docker API (here you can found HOWTO). You must specify filename of the client's certificate in {$CERT\_FNAME} macro and filename of the client's key in {$KEY\_FNAME}. Certificate and key must be in location for SSL client certificate (see SSLCertLocation in zabbix\_server.conf) groups: - name: Templates/Applications items: - uuid: 6f56b1f1709c451a8e8dfd5667ef6c89 name: 'Docker swarm raw info' type: HTTP_AGENT key: docker.swarm.info.raw history: '0' trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/swarm' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' tags: - tag: Application value: 'Docker swarm raw' - uuid: 2942ca45fb7c478287bef33ed06af524 name: 'Docker swarm leader node' type: DEPENDENT key: docker.swarm.nodes.leader delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - '$[?(@.ManagerStatus.Leader== "true")].Description.Hostname.first()' master_item: key: docker.swarm.nodes.raw tags: - tag: Application value: 'Docker swarm nodes' triggers: - uuid: 723cd35a2f4b43da82baedff8533f2cd expression: '(last(/App Docker swarm/docker.swarm.nodes.leader,#1)<>last(/App Docker swarm/docker.swarm.nodes.leader,#2))=1' name: 'Docker swarm leader node changed' priority: HIGH - uuid: f0d102369fce4804a1e0d0f341175782 name: 'Docker swarm managers nodes' type: DEPENDENT key: docker.swarm.nodes.manager delay: '0' preprocessing: - type: JSONPATH parameters: - '$[?(@.ManagerStatus.Reachability== ''reachable'')].ID.length()' master_item: key: docker.swarm.nodes.raw tags: - tag: Application value: 'Docker swarm nodes' - uuid: 2674f6dff8c24cf6995d351c6d5c7773 name: 'Docker swarm nodes raw' type: HTTP_AGENT key: docker.swarm.nodes.raw history: '0' trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/nodes' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' tags: - tag: Application value: 'Docker swarm raw' - uuid: 389e1c0536ac492a91a902c2fa040dd2 name: 'Docker swarm ready nodes' type: DEPENDENT key: docker.swarm.nodes.ready delay: '0' preprocessing: - type: JSONPATH parameters: - '$[?(@.Status.State== ''ready'')].ID.length()' error_handler: CUSTOM_VALUE error_handler_params: '0' master_item: key: docker.swarm.nodes.raw tags: - tag: Application value: 'Docker swarm nodes' triggers: - uuid: e987b66d3a934b21bcd4c5f685cfee5a expression: '(last(/App Docker swarm/docker.swarm.nodes.ready,#1)<>last(/App Docker swarm/docker.swarm.nodes.ready,#2))=1' name: 'Docker swarm ready nodes changed' priority: HIGH - uuid: 9a12776b56f34e10b734e5044370f3d2 name: 'Docker swarm nodes' type: DEPENDENT key: docker.swarm.nodes.total delay: '0' preprocessing: - type: JSONPATH parameters: - '$[?(@.ID!= ''nothing'')].ID.length()' error_handler: CUSTOM_VALUE error_handler_params: '0' master_item: key: docker.swarm.nodes.raw tags: - tag: Application value: 'Docker swarm nodes' - uuid: e1b7a464c76b46a09580dd6e27037a19 name: 'Docker swarm services raw' type: HTTP_AGENT key: docker.swarm.services.raw delay: 5m history: '0' trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/services' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' tags: - tag: Application value: 'Docker swarm raw' - uuid: 1e8c418f75904cb5b6ccf1ab8d38e718 name: 'Docker swarm tasks raw info' type: HTTP_AGENT key: docker.swarm.tasks.raw.info history: '0' trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/tasks' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' tags: - tag: Application value: 'Docker swarm raw' - uuid: 6c280f9be1eb4a098c8e1fb2838caccc name: 'Docker swarm updated at' type: DEPENDENT key: docker.swarm.updated_at delay: '0' units: unixtime preprocessing: - type: JSONPATH parameters: - $.UpdatedAt - type: JAVASCRIPT parameters: - 'return Math.floor(Date.parse(value) / 1000)' master_item: key: docker.swarm.info.raw tags: - tag: Application value: 'Docker swarm general' triggers: - uuid: 1a1e12b0fbc642a8bee7d125aaa68311 expression: 'nodata(/App Docker swarm/docker.swarm.updated_at,5m)=1' name: 'Docker swarm no info last 5 min' priority: HIGH discovery_rules: - uuid: a2a7e6ec1e9947b7971764c84f79ee21 name: 'Docker swarm containers discovery' type: HTTP_AGENT key: docker.containers.lld delay: 10m status: DISABLED lifetime: 10d item_prototypes: - uuid: 114a137f4e6c4fcda7cc60439acdc660 name: '{#NAME} CPU usage' type: DEPENDENT key: 'docker.container.cpu[{#ID}]' delay: '0' history: 30d preprocessing: - type: JSONPATH parameters: - $.cpu_stats.cpu_usage.total_usage - type: SIMPLE_CHANGE parameters: - '' master_item: key: 'docker.container.stats[{#ID}]' - uuid: 7f39b4c488c74d4795b59dbfd5a054be name: '{#NAME} CPU load %' type: CALCULATED key: 'docker.container.cpu_load[{#ID}]' history: 30d value_type: FLOAT units: '!%' params: 'last(//docker.container.cpu[{#ID}])/last(//docker.container.system_cpu[{#ID}])*last(//docker.container.cpu_num[{#ID}])' - uuid: c50f58ca624041558c9cc6bbfa5b735b name: '{#NAME} CPU number' type: DEPENDENT key: 'docker.container.cpu_num[{#ID}]' delay: '0' history: 30d preprocessing: - type: JSONPATH parameters: - $.cpu_stats.cpu_usage.percpu_usage.length() master_item: key: 'docker.container.stats[{#ID}]' - uuid: b408df0df6b54440a1ab1e28f22057e9 name: '{#NAME} Mem usage' type: DEPENDENT key: 'docker.container.mem[{#ID}]' delay: '0' history: 30d units: B preprocessing: - type: JSONPATH parameters: - $.memory_stats.usage master_item: key: 'docker.container.stats[{#ID}]' - uuid: 89838562730d4f79aa0f4882b026af5e name: 'Raw data container stats {#NAME}' type: HTTP_AGENT key: 'docker.container.stats[{#ID}]' history: 2d trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/containers/{#ID}/stats?stream=0' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' - uuid: e6078e69394340f6bad4fac49907a2c6 name: '{#NAME} CPU system usage' type: DEPENDENT key: 'docker.container.system_cpu[{#ID}]' delay: '0' history: 30d preprocessing: - type: JSONPATH parameters: - $.cpu_stats.system_cpu_usage - type: SIMPLE_CHANGE parameters: - '' master_item: key: 'docker.container.stats[{#ID}]' - uuid: 446923c1d8894046bf8b089609b35075 name: 'Raw data container info {#NAME}' type: HTTP_AGENT key: 'docker.container[{#ID}]' delay: 5m history: 2d trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/containers/{#ID}/json' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' timeout: 10s url: 'https://{HOST.DNS}:2376/containers/json' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' lld_macro_paths: - lld_macro: '{#ID}' path: $.Id - lld_macro: '{#NAME}' path: '$.Names[*].first()' - uuid: 132fa389d5b64e2fab0624f8377734e5 name: 'Docker swarm nodes discovery' type: HTTP_AGENT key: docker.swarm.nodes.lld delay: 1h status: DISABLED lifetime: 10d item_prototypes: - uuid: 9ef4fc2f63914e6aa6994f31c5f37406 name: 'Node {#NAME} availability' type: DEPENDENT key: 'docker.node.availability[{#ID}]' delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.Spec.Availability master_item: key: 'docker.nodes[{#ID}]' - uuid: d1553cd16f46456184c0e9bf130373a9 name: 'Node {#NAME} engine version' type: DEPENDENT key: 'docker.node.engine_version[{#ID}]' delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.Description.Engine.EngineVersion master_item: key: 'docker.nodes[{#ID}]' - uuid: 55310e8dcf1845de8dad7e8d36e25e7e name: 'Node {#NAME} manager status' type: DEPENDENT key: 'docker.node.manager_status[{#ID}]' delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.ManagerStatus.Reachability master_item: key: 'docker.nodes[{#ID}]' - uuid: 37779c59fa68498cbb1d0a816240d651 name: 'Node {#NAME} resources CPUs' type: DEPENDENT key: 'docker.node.resources.cpu[{#ID}]' delay: '0' units: Hz preprocessing: - type: JSONPATH parameters: - $.Description.Resources.NanoCPUs master_item: key: 'docker.nodes[{#ID}]' - uuid: ee329d55659c4c31be4b349156684f80 name: 'Node {#NAME} resources memory' type: DEPENDENT key: 'docker.node.resources.mem[{#ID}]' delay: '0' units: B preprocessing: - type: JSONPATH parameters: - $.Description.Resources.MemoryBytes master_item: key: 'docker.nodes[{#ID}]' - uuid: 9ce6a3a2ad084836984ceedb1cfe69a3 name: 'Node {#NAME} role' type: DEPENDENT key: 'docker.node.role[{#ID}]' delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.Spec.Role master_item: key: 'docker.nodes[{#ID}]' - uuid: 16bd9df71fb94de0bbbc2a3d5a191c39 name: 'Node {#NAME} status' type: DEPENDENT key: 'docker.node.status[{#ID}]' delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.Status.State master_item: key: 'docker.nodes[{#ID}]' - uuid: 472321423c614923ba7606734b838644 name: 'Raw data node {#NAME} at {#ADDR}' type: HTTP_AGENT key: 'docker.nodes[{#ID}]' delay: 5m trends: '0' value_type: TEXT timeout: 10s url: 'https://{HOST.DNS}:2376/nodes/{#ID}' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' timeout: 10s url: 'https://{HOST.DNS}:2376/nodes' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' lld_macro_paths: - lld_macro: '{#ADDR}' path: $.Status.Addr - lld_macro: '{#ID}' path: $.ID - lld_macro: '{#NAME}' path: $.Description.Hostname - uuid: 9d8474b94950446483be5a3195eb7305 name: 'Docker swarm services discovery' type: HTTP_AGENT key: docker.swarm.services.lld delay: 5m lifetime: 10d item_prototypes: - uuid: 16475b696f1c42d89ad845589d154716 name: 'Docker swarm uptime {#SERVICE}' type: DEPENDENT key: 'docker.swarm.service.uptime[{#SERVICE}]' delay: '0' units: uptime preprocessing: - type: JSONPATH parameters: - '$[?(@.ID == ''{#ID}'')].UpdatedAt.first()' - type: JAVASCRIPT parameters: - 'return Math.floor((Date.now() - Date.parse(value)) / 1000)' master_item: key: docker.swarm.services.raw tags: - tag: Application value: 'Docker swarm services' trigger_prototypes: - uuid: d0c48011f47b4545a44a35d44a360ef9 expression: 'last(/App Docker swarm/docker.swarm.service.uptime[{#SERVICE}])<600' name: 'Docker swarm updated service {#SERVICE}' priority: WARNING - uuid: 16d4344489e449dfb41ab4df225b2b35 name: 'Docker swarm number running tasks for {#SERVICE}' type: DEPENDENT key: 'docker.swarm.tasks.running[{#SERVICE}]' delay: '0' preprocessing: - type: JSONPATH parameters: - '$[?(@.Status.State == ''running'' && @.ServiceID == ''{#ID}'')].length()' master_item: key: docker.swarm.tasks.raw.info tags: - tag: Application value: 'Docker swarm services' trigger_prototypes: - uuid: 04f180e0bdd74db29fab8df4dc8fd9b7 expression: 'last(/App Docker swarm/docker.swarm.tasks.running[{#SERVICE}])=0' recovery_mode: RECOVERY_EXPRESSION recovery_expression: 'avg(/App Docker swarm/docker.swarm.tasks.running[{#SERVICE}],30m)<1' name: 'Docker swarm no running tasks for {#SERVICE}' priority: AVERAGE manual_close: 'YES' - uuid: 35448103f2d74498a8e603aca9aba0e1 expression: '(last(/App Docker swarm/docker.swarm.tasks.running[{#SERVICE}],#1)<>last(/App Docker swarm/docker.swarm.tasks.running[{#SERVICE}],#2))=1' name: 'Docker swarm no running tasks for {#SERVICE} changed' priority: AVERAGE manual_close: 'YES' timeout: 20s url: 'https://{HOST.DNS}:2376/services' ssl_cert_file: '{$CERT_FNAME}' ssl_key_file: '{$KEY_FNAME}' lld_macro_paths: - lld_macro: '{#ID}' path: $.ID - lld_macro: '{#SERVICE}' path: $.Spec.Name - lld_macro: '{#STACK}' path: '$.Spec.Labels[''com.docker.stack.namespace'']' macros: - macro: '{$CERT_FNAME}' value: dclient-cert.pem - macro: '{$KEY_FNAME}' value: dclient-key.pem