zabbix_export: version: '7.0' template_groups: - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6 name: Templates/Applications templates: - uuid: 884bdbeea93c4be0a11a2c92a5f8adce template: 'HashiCorp Consul Node by HTTP' name: 'HashiCorp Consul Node by HTTP' description: | Get HashiCorp Consul Node metrics by HTTP agent from metrics endpoint. Don't forget to change macros {$CONSUL.NODE.API.URL}, {$CONSUL.TOKEN}. Some metrics may not be collected depending on your HashiCorp Consul instance version and configuration. More information about metrics you can find in official documentation: https://www.consul.io/docs/agent/telemetry You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback Generated by official Zabbix template tool "Templator" 2.0.0 vendor: name: Zabbix version: 7.0-0 groups: - name: Templates/Applications items: - uuid: 9f90fe43daaa43369b000754e1630e41 name: 'Consul: ACL: resolves, rate' type: DEPENDENT key: consul.acl.resolves.rate delay: '0' history: 7d value_type: FLOAT description: 'The number of ACL resolves per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_acl_ResolveToken_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: acl - uuid: 1c969d5d7546444e91e883661d63890b name: 'Consul: Catalog: deregister, rate' type: DEPENDENT key: consul.catalog.deregister.rate delay: '0' history: 7d value_type: FLOAT description: 'The number of catalog deregister operation per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_catalog_deregister_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: catalog - uuid: 8f01480896f8426688aee08e2ee0fc20 name: 'Consul: Catalog: register, rate' type: DEPENDENT key: consul.catalog.register.rate delay: '0' history: 7d value_type: FLOAT description: 'The number of catalog register operation per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_catalog_register_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: catalog - uuid: dabcb6819c9444a6a287a6458056ef31 name: 'Consul: Number of checks' type: DEPENDENT key: consul.checks_number delay: '0' history: 7d description: 'Number of checks on current node.' preprocessing: - type: JSONPATH parameters: - $.Stats.agent.checks - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_node_info tags: - tag: component value: consul - uuid: 8e48706f9bda4689bec45f4a80fcc3cb name: 'Consul: Number of check monitors' type: DEPENDENT key: consul.check_monitors_number delay: '0' history: 7d description: 'Number of check monitors on current node.' preprocessing: - type: JSONPATH parameters: - $.Stats.agent.check_monitors - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_node_info tags: - tag: component value: consul - uuid: 2706adc5e5a64c4480269938e2b90fc1 name: 'Consul: Client RPC, per second' type: DEPENDENT key: consul.client_rpc delay: '0' history: 7d value_type: FLOAT units: Rps description: | Number of times per second whenever a Consul agent in client mode makes an RPC request to a Consul server. This gives a measure of how much a given agent is loading the Consul servers. This is only generated by agents in client mode, not Consul servers. preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_client_rpc - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: rpc - uuid: 3fd30bfd7c324c53a346974c9f38e9db name: 'Consul: Client RPC failed ,per second' type: DEPENDENT key: consul.client_rpc_failed delay: '0' history: 7d value_type: FLOAT units: Rps description: 'Number of times per second whenever a Consul agent in client mode makes an RPC request to a Consul server and fails.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_client_rpc_failed - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: rpc - uuid: 12b9bbac571b431ea06a13a7154ef673 name: 'Consul: Process CPU seconds, total' type: DEPENDENT key: consul.cpu_seconds_total.rate delay: '0' history: 7d value_type: FLOAT units: s description: 'Total user and system CPU time spent in seconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - process_cpu_seconds_total - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: cpu - uuid: 7513b847ac754a25972adb3547a871ca name: 'Consul: GC pause, p50' type: DEPENDENT key: consul.gc_pause.p50 delay: '0' history: 7d value_type: FLOAT units: s description: 'The 50 percentile (median) for the number of nanoseconds consumed by stop-the-world garbage collection (GC) pauses since Consul started, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_runtime_gc_pause_ns{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' - type: MULTIPLIER parameters: - '1.0E-9' master_item: key: consul.get_metrics tags: - tag: component value: gs - uuid: 3ec74713a835498197e59df962e27bab name: 'Consul: GC pause, p90' type: DEPENDENT key: consul.gc_pause.p90 delay: '0' history: 7d value_type: FLOAT units: s description: 'The 90 percentile for the number of nanoseconds consumed by stop-the-world garbage collection (GC) pauses since Consul started, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_runtime_gc_pause_ns{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' - type: MULTIPLIER parameters: - '1.0E-9' master_item: key: consul.get_metrics tags: - tag: component value: gc - uuid: 2b3cbe778f1c4d858e43320b8c25960d name: 'Consul: Get local services' type: SCRIPT key: consul.get_local_services history: '0' trends: '0' value_type: TEXT params: | var Consul = { setParams: function (params) { ['api_endpoint', 'token'].forEach(function (field) { if (typeof params !== 'object' || typeof params[field] === 'undefined' || params[field] === '') { throw 'Required param is not set: "' + field + '".'; } }); Consul.params = params; if (typeof Consul.params.api_endpoint === 'string' && !Consul.params.api_endpoint.endsWith('/')) { Consul.params.api_endpoint += '/'; } }, request: function (query) { var response, request = new HttpRequest(), url = Consul.params.api_endpoint + query; request.addHeader('Content-Type: application/json'); request.addHeader('X-Consul-Token: ' + Consul.params.token); Zabbix.log(4, '[ Consul ] Sending request: ' + url); response = request.get(url); Zabbix.log(4, '[ Consul ] Received response with status code ' + request.getStatus() + ': ' + response); if (response !== null) { try { response = JSON.parse(response); } catch (error) { throw 'Failed to parse response received from Consul Agent API.'; } } return { status: request.getStatus(), response: response }; }, getServices: function () { var result = Consul.request('v1/agent/services'), services = []; if (typeof result.response !== 'object' || result.status != 200) { throw 'Cannot get service list from Consul Agent API.'; } Object.keys(result.response).forEach(function (service) { services.push(result.response[service]['ID']); }); return services; }, getServiceStats: function (service_id) { var result = Consul.request('v1/agent/health/service/id/' + service_id); if (typeof result.response !== 'object' || [200, 429, 503].indexOf(result.status) === -1) { throw 'Cannot get service info from Consul Agent API.'; } return result.response; } } try { Consul.setParams(JSON.parse(value)); var services = Consul.getServices(), result = []; services.forEach(function (service) { var service_stats = Consul.getServiceStats(service); result.push({ 'id': service, 'name': service_stats['Service']['Service'], 'status': service_stats['AggregatedStatus'], 'checks': service_stats['Checks'], 'namespace': typeof service_stats['Service']['Namespace'] === 'undefined' ? 'None' : service_stats['Service']['Namespace'] }); }); return JSON.stringify(result); } catch (error) { error += ((String(error).endsWith('.')) ? '' : '.'); Zabbix.log(3, '[ Consul ] ERROR: ' + error); return JSON.stringify({error: error + ' Check debug log for more information.'}); } description: 'Get all the services that are registered with the local agent and their status.' timeout: 15s parameters: - name: api_endpoint value: '{$CONSUL.NODE.API.URL}' - name: token value: '{$CONSUL.TOKEN}' tags: - tag: component value: raw - uuid: f2fb4c76b4974319846d4773cfb64b0c name: 'Consul: Get local services check' type: DEPENDENT key: consul.get_local_services.check delay: '0' history: 7d trends: '0' value_type: CHAR description: 'Data collection check.' preprocessing: - type: JSONPATH parameters: - $.error error_handler: CUSTOM_VALUE - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_local_services tags: - tag: component value: status triggers: - uuid: 5cf09b213c044033af1d8e1d8821bc38 expression: 'length(last(/HashiCorp Consul Node by HTTP/consul.get_local_services.check))>0' name: 'Consul: Failed to get local services' priority: WARNING description: 'Failed to get local services. Check debug log for more information.' tags: - tag: scope value: availability - uuid: c0e199969c19444fb68fd8497fcab047 name: 'Consul: Get instance metrics' type: HTTP_AGENT key: consul.get_metrics history: '0' trends: '0' value_type: TEXT description: 'Get raw metrics from Consul instance /metrics endpoint.' preprocessing: - type: CHECK_NOT_SUPPORTED parameters: - '' timeout: 15s url: '{$CONSUL.NODE.API.URL}/v1/agent/metrics?format=prometheus' headers: - name: X-Consul-Token value: '{$CONSUL.TOKEN}' tags: - tag: component value: health - tag: component value: raw - uuid: 7e2689de8d78499fb52d718989b7ec8b name: 'Consul: Get node info' type: HTTP_AGENT key: consul.get_node_info history: '0' trends: '0' value_type: TEXT description: 'Get configuration and member information of the local agent.' preprocessing: - type: CHECK_NOT_SUPPORTED parameters: - '' timeout: 15s url: '{$CONSUL.NODE.API.URL}/v1/agent/self' headers: - name: X-Consul-Token value: '{$CONSUL.TOKEN}' tags: - tag: component value: raw - uuid: 2bcd79ab2c0a4ef88c0d2386d9bec1ff name: 'Consul: Goroutine count' type: DEPENDENT key: consul.goroutines delay: '0' history: 7d description: 'The number of Goroutines on Consul instance.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - go_goroutines - value - '' master_item: key: consul.get_metrics tags: - tag: component value: goroutines - uuid: 6613be65c0794e76a210263810a4692d name: 'Consul: KV store: apply, p50' type: DEPENDENT key: consul.kvs.apply.p50 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) for the time it takes to complete an update to the KV store.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_kvs_apply{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: kvs - uuid: 2dc05550018c4d67bab58bd8f86bc365 name: 'Consul: KV store: apply, p90' type: DEPENDENT key: consul.kvs.apply.p90 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile for the time it takes to complete an update to the KV store.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_kvs_apply{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: kvs - uuid: 978bf96102d0411f8c18e92652a003c4 name: 'Consul: KV store: apply, rate' type: DEPENDENT key: consul.kvs.apply.rate delay: '0' history: 7d value_type: FLOAT description: 'The number of updates to the KV store per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_kvs_apply_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: kvs - uuid: 1b21a53ce7144350af8b50e57c3acf6b name: 'Consul: Memberlist: degraded' type: DEPENDENT key: consul.memberlist.degraded delay: '0' history: 7d description: | This metric counts the number of times the Consul agent has performed failure detection on another agent at a slower probe rate. The agent uses its own health metric as an indicator to perform this action. If its health score is low, it means that the node is healthy, and vice versa. preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_degraded - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: health - uuid: 0a3b25abf7de4212bda5c92c13341593 name: 'Consul: Memberlist: gossip, p90' type: DEPENDENT key: consul.memberlist.dispatch_log.p90 delay: '0' history: 7d value_type: FLOAT description: 'The 90 percentile for the number of gossips (messages) broadcasted to a set of randomly selected nodes.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_memberlist_gossip{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: gossip - uuid: 592fb528d5c14491892c496f7ce9a60b name: 'Consul: Memberlist: gossip, p50' type: DEPENDENT key: consul.memberlist.gossip.p50 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 for the number of gossips (messages) broadcasted to a set of randomly selected nodes.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_memberlist_gossip{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: gossip - uuid: 32259a799f6949e4be4f7d8722a2dbbe name: 'Consul: Memberlist: health score' type: DEPENDENT key: consul.memberlist.health_score delay: '0' history: 7d description: | This metric describes a node's perception of its own health based on how well it is meeting the soft real-time requirements of the protocol. This metric ranges from 0 to 8, where 0 indicates "totally healthy". preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_health_score - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: health triggers: - uuid: f964a907c55148bf80991352c7f2ae83 expression: 'max(/HashiCorp Consul Node by HTTP/consul.memberlist.health_score,#3)>{$CONSUL.NODE.HEALTH_SCORE.MAX.HIGH}' name: 'Consul: Node''s health score is critical' event_name: 'Consul: Node''s health score is over {$CONSUL.NODE.HEALTH_SCORE.MAX.HIGH}' priority: AVERAGE description: | This metric ranges from 0 to 8, where 0 indicates "totally healthy". This health score is used to scale the time between outgoing probes, and higher scores translate into longer probing intervals. For more details see section IV of the Lifeguard paper: https://arxiv.org/pdf/1707.00788.pdf tags: - tag: scope value: availability - uuid: 1fedc58f33ed4b9797fb37acfceba192 expression: 'max(/HashiCorp Consul Node by HTTP/consul.memberlist.health_score,#3)>{$CONSUL.NODE.HEALTH_SCORE.MAX.WARN}' name: 'Consul: Node''s health score is warning' event_name: 'Consul: Node''s health score is too high (over {$CONSUL.NODE.HEALTH_SCORE.MAX.WARN} for 3m)' priority: WARNING description: | This metric ranges from 0 to 8, where 0 indicates "totally healthy". This health score is used to scale the time between outgoing probes, and higher scores translate into longer probing intervals. For more details see section IV of the Lifeguard paper: https://arxiv.org/pdf/1707.00788.pdf dependencies: - name: 'Consul: Node''s health score is critical' expression: 'max(/HashiCorp Consul Node by HTTP/consul.memberlist.health_score,#3)>{$CONSUL.NODE.HEALTH_SCORE.MAX.HIGH}' tags: - tag: scope value: availability - uuid: 1ebba76d809b415488fb0591afeaef6f name: 'Consul: Memberlist: msg alive' type: DEPENDENT key: consul.memberlist.msg.alive delay: '0' history: 7d description: 'This metric counts the number of alive Consul agents, that the agent has mapped out so far, based on the message information given by the network layer.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_msg_alive - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: health - uuid: 9768a2ce01de4bfe92a17935791b4da4 name: 'Consul: Memberlist: msg dead' type: DEPENDENT key: consul.memberlist.msg.dead delay: '0' history: 7d description: 'This metric counts the number of times a Consul agent has marked another agent to be a dead node.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_msg_dead - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: health - uuid: 43ea04dd91ba4c208e9ad09bbc0016af name: 'Consul: Memberlist: msg suspect' type: DEPENDENT key: consul.memberlist.msg.suspect delay: '0' history: 7d description: 'The number of times a Consul agent suspects another as failed while probing during gossip protocol.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_msg_suspect - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: health - uuid: 8b3ee806fcf34a46aa61cbfee460d9f7 name: 'Consul: Memberlist: probe node, p50' type: DEPENDENT key: consul.memberlist.probe_node.p50 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) for the time taken to perform a single round of failure detection on a select Consul agent.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_memberlist_probeNode{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: memberlist - uuid: 9a178ba5f7fa4d9a8ecfddfe84257ab6 name: 'Consul: Memberlist: probe node, p90' type: DEPENDENT key: consul.memberlist.probe_node.p90 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile for the time taken to perform a single round of failure detection on a select Consul agent.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_memberlist_probeNode{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: memberlist - uuid: ef688e2ad7494a08a535c019fe19c0a9 name: 'Consul: Memberlist: push pull node, p50' type: DEPENDENT key: consul.memberlist.push_pull_node.p50 delay: '0' history: 7d value_type: FLOAT description: 'The 50 percentile (median) for the number of Consul agents that have exchanged state with this agent.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_memberlist_pushPullNode{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: memberlist - uuid: ae085470652242ba8a2077bebee7a2c7 name: 'Consul: Memberlist: push pull node, p90' type: DEPENDENT key: consul.memberlist.push_pull_node.p90 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile for the number of Consul agents that have exchanged state with this agent.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_memberlist_pushPullNode{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: memberlist - uuid: a5d4e2e589564cc9898537c0a8c6a21a name: 'Consul: TCP connections, accepted per second' type: DEPENDENT key: consul.memberlist.tcp_accept delay: '0' history: 7d value_type: FLOAT units: Rps description: 'This metric counts the number of times a Consul agent has accepted an incoming TCP stream connection per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_tcp_accept - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: tcp - uuid: df0a553d811444d1ab767563a1d513a3 name: 'Consul: TCP connections, per second' type: DEPENDENT key: consul.memberlist.tcp_connect delay: '0' history: 7d value_type: FLOAT units: Rps description: 'This metric counts the number of times a Consul agent has initiated a push/pull sync with an other agent per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_tcp_connect - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: tcp - uuid: ba12a6464199443d8d73164a8dd87f4f name: 'Consul: TCP send bytes, per second' type: DEPENDENT key: consul.memberlist.tcp_sent delay: '0' history: 7d value_type: FLOAT units: Bps description: 'This metric measures the total number of bytes sent by a Consul agent through the TCP protocol per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_tcp_sent - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: tcp - uuid: dde5f5c5c7d44f1dbbcddb4a541f41cc name: 'Consul: UDP received bytes, per second' type: DEPENDENT key: consul.memberlist.udp_received delay: '0' history: 7d value_type: FLOAT units: Bps description: 'This metric measures the total number of bytes received by a Consul agent through the UDP protocol per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_udp_received - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: udp - uuid: fa79687f332f4136881577838476c329 name: 'Consul: UDP sent bytes, per second' type: DEPENDENT key: consul.memberlist.udp_sent delay: '0' history: 7d value_type: FLOAT units: Bps description: 'This metric measures the total number of bytes sent by a Consul agent through the UDP protocol per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_memberlist_udp_sent - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: udp - uuid: 59b28123e8154318aca6a283a1b18391 name: 'Consul: Open file descriptors, max' type: DEPENDENT key: consul.process_max_fds delay: '0' history: 7d value_type: FLOAT description: 'Maximum number of open file descriptors.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - process_max_fds - value - '' master_item: key: consul.get_metrics tags: - tag: component value: fds - uuid: 38ad7b5d43004865bd823f1dae61395a name: 'Consul: Open file descriptors' type: DEPENDENT key: consul.process_open_fds delay: '0' history: 7d value_type: FLOAT description: 'Number of open file descriptors.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - process_open_fds - value - '' master_item: key: consul.get_metrics tags: - tag: component value: fds - uuid: 8cb242ddeb7f4a0685c706a24f1f85c5 name: 'Consul: RSS memory usage' type: DEPENDENT key: consul.resident_memory_bytes delay: '0' history: 7d value_type: FLOAT units: B description: 'Resident memory size in bytes.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - process_resident_memory_bytes - value - '' master_item: key: consul.get_metrics tags: - tag: component value: memory - uuid: ee52c7cd8a4d452d85564a47c44198a6 name: 'Consul: Role' type: DEPENDENT key: consul.role delay: '0' history: 7d description: 'Role of current Consul agent.' valuemap: name: 'Consul Node role' preprocessing: - type: JSONPATH parameters: - $.Config.Server - type: BOOL_TO_DECIMAL parameters: - '' - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_node_info tags: - tag: component value: consul - uuid: e311c5bdba3e45b68887bc924c7dc206 name: 'Consul: Serf member: failed, rate' type: DEPENDENT key: consul.serf.member.failed.rate delay: '0' history: 7d value_type: FLOAT description: | Increments when an agent is marked dead. This can be an indicator of overloaded agents, network problems, or configuration errors where agents cannot connect to each other on the required ports. Shown as events per second. preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_member_failed - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: serf - uuid: 11ba84beb3494504bd514500ef663cff name: 'Consul: Serf member: flap, rate' type: DEPENDENT key: consul.serf.member.flap.rate delay: '0' history: 7d value_type: FLOAT description: | Increments when an agent is marked dead and then recovers within a short time period. This can be an indicator of overloaded agents, network problems, or configuration errors where agents cannot connect to each other on the required ports. Shown as events per second. preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_member_flap - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: serf - uuid: f4c224ffb17d49029fef6647dde22c90 name: 'Consul: Serf member: join, rate' type: DEPENDENT key: consul.serf.member.join.rate delay: '0' history: 7d value_type: FLOAT description: | Increments when an agent joins the cluster. If an agent flapped or failed this counter also increments when it re-joins. Shown as events per second. preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_member_join - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: serf - uuid: 3264823eb6774c2092b4ffe4638b61a5 name: 'Consul: Serf member: left, rate' type: DEPENDENT key: consul.serf.member.left.rate delay: '0' history: 7d value_type: FLOAT description: 'Increments when an agent leaves the cluster. Shown as events per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_member_left - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: serf - uuid: 53bb4e76cd1840e8ae9a129d592e202e name: 'Consul: Serf member: update, rate' type: DEPENDENT key: consul.serf.member.update.rate delay: '0' history: 7d value_type: FLOAT description: 'Increments when a Consul agent updates. Shown as events per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_member_update - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: serf - uuid: 614e63c6eb254b45a5fb3dbb985c5c3c name: 'Consul: Number of services' type: DEPENDENT key: consul.services_number delay: '0' history: 7d description: 'Number of services on current node.' preprocessing: - type: JSONPATH parameters: - $.Stats.agent.services - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_node_info tags: - tag: component value: consul - uuid: d9988aeda27f4fb09ececcde13efc71a name: 'Consul: Snapshot: append line, p50' type: DEPENDENT key: consul.snapshot.append_line.p50 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) for the time taken by the Consul agent to append an entry into the existing log.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_serf_snapshot_appendLine{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: snapshot - uuid: 0b701ec082e64eb19e60650c13cd44fd name: 'Consul: Snapshot: append line, p90' type: DEPENDENT key: consul.snapshot.append_line.p90 delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile for the time taken by the Consul agent to append an entry into the existing log.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_serf_snapshot_appendLine{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: snapshot - uuid: d56de8b09978421c9703fe327d03a32b name: 'Consul: Snapshot: append line, rate' type: DEPENDENT key: consul.snapshot.append_line.rate delay: '0' history: 7d value_type: FLOAT description: 'The number of snapshot appendLine operations per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_snapshot_appendLine_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: snapshot - uuid: 12e1a4538f124c4281106b9033b1592d name: 'Consul: Snapshot: compact, p50' type: DEPENDENT key: consul.snapshot.compact.p50 delay: '0' history: 7d value_type: FLOAT units: ms description: | The 50 percentile (median) for the time taken by the Consul agent to compact a log. This operation occurs only when the snapshot becomes large enough to justify the compaction. preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_serf_snapshot_compact{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: snapshot - uuid: c55de444dd30484eb116abfd6f28a9a0 name: 'Consul: Snapshot: compact, p90' type: DEPENDENT key: consul.snapshot.compact.p90 delay: '0' history: 7d value_type: FLOAT units: ms description: | The 90 percentile for the time taken by the Consul agent to compact a log. This operation occurs only when the snapshot becomes large enough to justify the compaction. preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_serf_snapshot_compact{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: snapshot - uuid: 586be345685b4f0dbbb31f2062bebc01 name: 'Consul: Snapshot: compact, rate' type: DEPENDENT key: consul.snapshot.compact.rate delay: '0' history: 7d value_type: FLOAT description: 'The number of snapshot compact operations per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_serf_snapshot_compact_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: snapshot - uuid: 777e8cdd1cfc4f4bba613ef08320f1bb name: 'Consul: Version' type: DEPENDENT key: consul.version delay: '0' history: 7d trends: '0' value_type: CHAR description: 'Version of Consul agent.' preprocessing: - type: JSONPATH parameters: - $.Config.Version - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_node_info tags: - tag: component value: consul triggers: - uuid: fa78d269c01548a083085a3a98e5a59b expression: 'last(/HashiCorp Consul Node by HTTP/consul.version,#1)<>last(/HashiCorp Consul Node by HTTP/consul.version,#2) and length(last(/HashiCorp Consul Node by HTTP/consul.version))>0' name: 'Consul: Version has been changed' event_name: 'Consul: Version has changed (new version: {ITEM.VALUE})' priority: INFO description: 'Consul version has changed. Acknowledge to close the problem manually.' manual_close: 'YES' tags: - tag: scope value: notice - uuid: 62c0bb503c084f9da10f1be3c716608b name: 'Consul: Virtual memory size' type: DEPENDENT key: consul.virtual_memory_bytes delay: '0' history: 7d value_type: FLOAT units: B description: 'Virtual memory size in bytes.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - process_virtual_memory_bytes - value - '' master_item: key: consul.get_metrics tags: - tag: component value: memory discovery_rules: - uuid: 565c42fc4e444433aaafd656813b82f7 name: 'HTTP API methods discovery' type: DEPENDENT key: consul.http_api_discovery delay: '0' description: 'Discovery HTTP API methods specific metrics.' item_prototypes: - uuid: 4bdb2007bada4840aa453630e701059c name: 'Consul: HTTP request: ["{#HTTP_METHOD}"], p50' type: DEPENDENT key: 'consul.http.api.p50["{#HTTP_METHOD}"]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) of how long it takes to service the given HTTP request for the given verb.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_api_http{method = "{#HTTP_METHOD}", quantile = "0.5"}' - function - sum error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: api - tag: verb value: '{#HTTP_METHOD}' - uuid: 537b455889d54deab7ada216a89f1cb2 name: 'Consul: HTTP request: ["{#HTTP_METHOD}"], p90' type: DEPENDENT key: 'consul.http.api.p90["{#HTTP_METHOD}"]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile of how long it takes to service the given HTTP request for the given verb.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_api_http{method = "{#HTTP_METHOD}", quantile = "0.9"}' - function - sum error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: api - tag: verb value: '{#HTTP_METHOD}' - uuid: 53cdb47018df434381f7fc3e401a4dee name: 'Consul: HTTP request: ["{#HTTP_METHOD}"], rate' type: DEPENDENT key: 'consul.http.api.rate["{#HTTP_METHOD}"]' delay: '0' history: 7d value_type: FLOAT units: Rps description: 'The number of HTTP request for the given verb per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_api_http_count{method = "{#HTTP_METHOD}"}' - function - sum error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: api - tag: verb value: '{#HTTP_METHOD}' master_item: key: consul.get_metrics preprocessing: - type: PROMETHEUS_TO_JSON parameters: - 'consul_api_http{method =~ ".*"}' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - | var lookup = {}, result = []; JSON.parse(value).forEach(function (item) { var http_method = item.labels.method; if (!(lookup[http_method])) { lookup[http_method] = 1; result.push({ "{#HTTP_METHOD}": http_method }); } }) return JSON.stringify(result); - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h - uuid: dd87920ea8184ec793229878407a0993 name: 'Local node services discovery' type: DEPENDENT key: consul.node_services_lld delay: '0' filter: conditions: - macro: '{#SERVICE_NAME}' value: '{$CONSUL.LLD.FILTER.LOCAL_SERVICE_NAME.MATCHES}' formulaid: A - macro: '{#SERVICE_NAME}' value: '{$CONSUL.LLD.FILTER.LOCAL_SERVICE_NAME.NOT_MATCHES}' operator: NOT_MATCHES_REGEX formulaid: B - macro: '{#SERVICE_NAMESPACE}' value: '{$CONSUL.LLD.FILTER.SERVICE_NAMESPACE.MATCHES}' formulaid: C - macro: '{#SERVICE_NAMESPACE}' value: '{$CONSUL.LLD.FILTER.SERVICE_NAMESPACE.NOT_MATCHES}' operator: NOT_MATCHES_REGEX formulaid: D description: 'Discover metrics for services that are registered with the local agent.' item_prototypes: - uuid: 44b0f82769d244d6a20b9ce0b5cc5cb6 name: 'Consul: ["{#SERVICE_NAME}"]: Aggregated status' type: DEPENDENT key: 'consul.service.aggregated_state["{#SERVICE_ID}"]' delay: '0' history: 7d discover: NO_DISCOVER description: 'Aggregated values of all health checks for the service instance.' valuemap: name: 'Consul health state' preprocessing: - type: JSONPATH parameters: - '$[?(@.id == "{#SERVICE_ID}")].status.first()' - type: JAVASCRIPT parameters: - | var state = ['passing', 'warning', 'critical']; return state.indexOf(value.trim()) === -1 ? 255 : state.indexOf(value.trim()); - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_local_services tags: - tag: component value: service - tag: namespace value: '{#SERVICE_NAMESPACE}' - tag: service value: '{#SERVICE_NAME}' trigger_prototypes: - uuid: 661551e1e9e94b25b7bd6ea876640b6d expression: 'last(/HashiCorp Consul Node by HTTP/consul.service.aggregated_state["{#SERVICE_ID}"]) = 2' name: 'Consul: Aggregated status is ''critical''' event_name: 'Consul: Node''s health score is over {$CONSUL.NODE.HEALTH_SCORE.MAX.HIGH}' priority: AVERAGE description: 'Aggregated state of service on the local agent is ''critical''.' tags: - tag: scope value: availability - uuid: 724f6a5e16f64a779a71ad9a9378fb60 expression: 'last(/HashiCorp Consul Node by HTTP/consul.service.aggregated_state["{#SERVICE_ID}"]) = 1' name: 'Consul: Aggregated status is ''warning''' priority: WARNING description: 'Aggregated state of service on the local agent is ''warning''.' tags: - tag: scope value: availability - uuid: 20a0ec9e059548a192c9c37bd7aeaaed name: 'Consul: ["{#SERVICE_NAME}"]: Check ["{#SERVICE_CHECK_NAME}"]: Output' type: DEPENDENT key: 'consul.service.check.output["{#SERVICE_ID}/{#SERVICE_CHECK_ID}"]' delay: '0' history: 7d trends: '0' discover: NO_DISCOVER value_type: CHAR description: 'Current output of health check for the service.' valuemap: name: 'Consul health state' preprocessing: - type: JSONPATH parameters: - '$[?(@.id == "{#SERVICE_ID}")].checks[?(@.CheckID == "{#SERVICE_CHECK_ID}")].Output.first()' - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_local_services tags: - tag: check value: '{#SERVICE_CHECK_NAME}' - tag: component value: service - tag: namespace value: '{#SERVICE_NAMESPACE}' - tag: service value: '{#SERVICE_NAME}' - uuid: 3b67eb4df3dc4d9b9f4ab4c35a592367 name: 'Consul: ["{#SERVICE_NAME}"]: Check ["{#SERVICE_CHECK_NAME}"]: Status' type: DEPENDENT key: 'consul.service.check.state["{#SERVICE_ID}/{#SERVICE_CHECK_ID}"]' delay: '0' history: 7d discover: NO_DISCOVER description: 'Current state of health check for the service.' valuemap: name: 'Consul health state' preprocessing: - type: JSONPATH parameters: - '$[?(@.id == "{#SERVICE_ID}")].checks[?(@.CheckID == "{#SERVICE_CHECK_ID}")].Status.first()' - type: JAVASCRIPT parameters: - | var state = ['passing', 'warning', 'critical']; return state.indexOf(value.trim()) === -1 ? 255 : state.indexOf(value.trim()); - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_local_services tags: - tag: check value: '{#SERVICE_CHECK_NAME}' - tag: component value: service - tag: namespace value: '{#SERVICE_NAMESPACE}' - tag: service value: '{#SERVICE_NAME}' master_item: key: consul.get_local_services preprocessing: - type: JAVASCRIPT parameters: - | var data = JSON.parse(value), result = []; if (data.length === 0) { return '[]' }; data.forEach(function (service) { result.push({ '{#TYPE}': 'aggregated_status', '{#SERVICE_NAME}': service.name, '{#SERVICE_ID}': service.id, '{#SERVICE_NAMESPACE}': service.namespace }); if (service['checks'] !== 0) { service['checks'].forEach(function (check) { result.push({ '{#TYPE}': 'service_check', '{#SERVICE_NAME}': service.name, '{#SERVICE_ID}': service.id, '{#SERVICE_NAMESPACE}': service.namespace, '{#SERVICE_CHECK_ID}': check["CheckID"], '{#SERVICE_CHECK_NAME}': check["Name"] }); }); } }); return JSON.stringify(result) - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h overrides: - name: 'aggregated status' step: '1' filter: conditions: - macro: '{#TYPE}' value: aggregated_status formulaid: A operations: - operationobject: ITEM_PROTOTYPE operator: LIKE value: 'Aggregated status' discover: DISCOVER - operationobject: ITEM_PROTOTYPE operator: LIKE value: State discover: DISCOVER - name: checks step: '2' filter: conditions: - macro: '{#TYPE}' value: service_check formulaid: A operations: - operationobject: ITEM_PROTOTYPE operator: LIKE value: Check discover: DISCOVER - uuid: 6ff39fd6911945b2baa9b762d5a86df2 name: 'Raft leader metrics discovery' type: DEPENDENT key: consul.raft.leader.discovery delay: '0' description: 'Discover raft metrics for leader nodes.' item_prototypes: - uuid: 440e2a259cd64b918ebfb607961da2c8 name: 'Consul: Autopilot healthy' type: DEPENDENT key: 'consul.autopilot.healthy[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT description: 'Tracks the overall health of the local server cluster. 1 if all servers are healthy, 0 if one or more are unhealthy.' valuemap: name: 'Consul Autopilot healthy' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_autopilot_healthy - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: health - uuid: 2e4fd6c5aac84054aef867fc9d8cb3c5 name: 'Consul: Raft state: commit time, p50' type: DEPENDENT key: 'consul.raft.commit_time.p50[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) time it takes to commit a new entry to the raft log on the leader, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_raft_commitTime{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: 9428c07a23364967aef060cf3303b996 name: 'Consul: Raft state: commit time, p90' type: DEPENDENT key: 'consul.raft.commit_time.p90[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile time it takes to commit a new entry to the raft log on the leader, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_raft_commitTime{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: d54c97e8c4204f8c9f79911440f1bd13 name: 'Consul: Raft state: commit, rate' type: DEPENDENT key: 'consul.raft.commit_time.rate[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: Rps description: 'The number of commits a new entry to the Raft log on the leader per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_raft_commitTime_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: 3c56ebe6e022430e861488873ac6f716 name: 'Consul: Raft state: dispatch log, p50' type: DEPENDENT key: 'consul.raft.dispatch_log.p50[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) time it takes for the leader to write log entries to disk, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_raft_leader_dispatchLog{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: fd1e6c33254b467f8355491dc96889eb name: 'Consul: Raft state: dispatch log, p90' type: DEPENDENT key: 'consul.raft.dispatch_log.p90[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile time it takes for the leader to write log entries to disk, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_raft_leader_dispatchLog{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: bc73aeda20a543ac957d1531f25fd5a9 name: 'Consul: Raft state: dispatch log, rate' type: DEPENDENT key: 'consul.raft.dispatch_log.rate[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT description: 'The number of times a Raft leader writes a log to disk per second.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_raft_leader_dispatchLog_count - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: 526a787732224555adde561ec86844fb name: 'Consul: Raft state: leader last contact, p50' type: DEPENDENT key: 'consul.raft.leader_last_contact.p50[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 50 percentile (median) of how long it takes a leader node to communicate with followers during a leader lease check, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_raft_leader_lastContact{quantile="0.5"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: 1ae3d9e4647b4972b1572946a2794715 name: 'Consul: Raft state: leader last contact, p90' type: DEPENDENT key: 'consul.raft.leader_last_contact.p90[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: ms description: 'The 90 percentile of how long it takes a leader node to communicate with followers during a leader lease check, in milliseconds.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - 'consul_raft_leader_lastContact{quantile="0.9"}' - value - '' error_handler: DISCARD_VALUE - type: JAVASCRIPT parameters: - 'return (isNaN(value)) ? 0 : value;' master_item: key: consul.get_metrics tags: - tag: component value: raft master_item: key: consul.get_node_info preprocessing: - type: JAVASCRIPT parameters: - | return JSON.stringify(JSON.parse(value)["Stats"]["leader"] === true ? [{'{#SINGLETON}': ''}] : []); - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h - uuid: f7dfc3d88f5440bea02080205d3f0a9b name: 'Raft server metrics discovery' type: DEPENDENT key: consul.raft.server.discovery delay: '0' description: 'Discover raft metrics for server nodes.' item_prototypes: - uuid: 428f1d7924634383aabcd5b37f561a41 name: 'Consul: Raft: apply, rate' type: DEPENDENT key: 'consul.raft.apply.rate[{#SINGLETON}]' delay: '0' history: 7d value_type: FLOAT units: Rps description: | Incremented whenever a leader first passes a message into the Raft commit process (called an Apply operation). This metric describes the arrival rate of new logs into Raft per second. preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_raft_apply - value - '' error_handler: DISCARD_VALUE - type: CHANGE_PER_SECOND parameters: - '' master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: 25dd098b98124fa8a9518963c8b4e5ce name: 'Consul: Raft state' type: DEPENDENT key: 'consul.raft.state[{#SINGLETON}]' delay: '0' history: 7d trends: '0' value_type: CHAR description: 'Current state of Consul agent.' preprocessing: - type: JSONPATH parameters: - $.Stats.raft.state - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h master_item: key: consul.get_node_info tags: - tag: component value: raft - uuid: 7b030c4eac68464e8c454577ab0f0f53 name: 'Consul: Raft state: candidate' type: DEPENDENT key: 'consul.raft.state_candidate[{#SINGLETON}]' delay: '0' history: 7d description: 'The number of initiated leader elections.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_raft_state_candidate - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: raft - uuid: e89157e341d8409c96e31a9d541a7fe8 name: 'Consul: Raft state: leader' type: DEPENDENT key: 'consul.raft.state_leader[{#SINGLETON}]' delay: '0' history: 7d description: 'Increments when a server becomes a leader.' preprocessing: - type: PROMETHEUS_PATTERN parameters: - consul_raft_state_leader - value - '' error_handler: DISCARD_VALUE master_item: key: consul.get_metrics tags: - tag: component value: raft master_item: key: consul.get_node_info preprocessing: - type: JAVASCRIPT parameters: - | return JSON.stringify(JSON.parse(value)["Config"]["Server"] === true ? [{'{#SINGLETON}': ''}] : []); - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 3h tags: - tag: class value: software - tag: target value: consul macros: - macro: '{$CONSUL.LLD.FILTER.LOCAL_SERVICE_NAME.MATCHES}' value: '.*' description: 'Filter of discoverable discovered services on local node.' - macro: '{$CONSUL.LLD.FILTER.LOCAL_SERVICE_NAME.NOT_MATCHES}' value: 'CHANGE IF NEEDED' description: 'Filter to exclude discovered services on local node.' - macro: '{$CONSUL.LLD.FILTER.SERVICE_NAMESPACE.MATCHES}' value: '.*' description: 'Filter of discoverable discovered service by namespace on local node. Enterprise only, in case of Open Source version Namespace will be set to ''None''.' - macro: '{$CONSUL.LLD.FILTER.SERVICE_NAMESPACE.NOT_MATCHES}' value: 'CHANGE IF NEEDED' description: 'Filter to exclude discovered service by namespace on local node. Enterprise only, in case of Open Source version Namespace will be set to ''None''.' - macro: '{$CONSUL.NODE.API.URL}' value: 'http://localhost:8500' description: 'Consul instance URL.' - macro: '{$CONSUL.NODE.HEALTH_SCORE.MAX.HIGH}' value: '4' description: 'Maximum acceptable value of node''s health score for AVERAGE trigger expression.' - macro: '{$CONSUL.NODE.HEALTH_SCORE.MAX.WARN}' value: '2' description: 'Maximum acceptable value of node''s health score for WARNING trigger expression.' - macro: '{$CONSUL.OPEN.FDS.MAX.WARN}' value: '90' description: 'Maximum percentage of used file descriptors.' - macro: '{$CONSUL.TOKEN}' value: '' description: 'Consul auth token.' valuemaps: - uuid: 92638a6d5a9347edb011a8c999a9895e name: 'Consul Autopilot healthy' mappings: - value: '0' newvalue: Unhealthy - value: '1' newvalue: Healthy - uuid: 1f966e7c41134551870c82f013f0b2cd name: 'Consul health state' mappings: - value: '0' newvalue: passing - value: '1' newvalue: warning - value: '2' newvalue: critical - value: '255' newvalue: unknown - uuid: 8d8f7d7e37a44fe8ac590147f621cb4c name: 'Consul Node role' mappings: - value: '0' newvalue: Agent - value: '1' newvalue: Server triggers: - uuid: 9e1a0b7f49844d1db525d00d5f1060f0 expression: 'min(/HashiCorp Consul Node by HTTP/consul.process_open_fds,5m)/last(/HashiCorp Consul Node by HTTP/consul.process_max_fds)*100>{$CONSUL.OPEN.FDS.MAX.WARN}' name: 'Consul: Current number of open files is too high' event_name: 'Consul: Current number of open files is too high (over {$CONSUL.OPEN.FDS.MAX.WARN}% for 5m)' priority: WARNING description: '"Heavy file descriptor usage (i.e., near the process’s file descriptor limit) indicates a potential file descriptor exhaustion issue."' tags: - tag: scope value: capacity graphs: - uuid: 2411147c0f4a425394a64fcd3dc231f0 name: 'Consul: Catalog operations' graph_items: - color: 199C0D item: host: 'HashiCorp Consul Node by HTTP' key: consul.catalog.register.rate - sortorder: '1' color: F63100 item: host: 'HashiCorp Consul Node by HTTP' key: consul.catalog.deregister.rate - uuid: 929c2527abaf447f9909003e6a43d799 name: 'Consul: File descriptors' graph_items: - drawtype: GRADIENT_LINE color: 199C0D item: host: 'HashiCorp Consul Node by HTTP' key: consul.process_open_fds - sortorder: '1' drawtype: BOLD_LINE color: F63100 item: host: 'HashiCorp Consul Node by HTTP' key: consul.process_max_fds - uuid: 6a987c1499f145ff8b68281f4fef3424 name: 'Consul: Memory usage' graph_items: - color: 199C0D item: host: 'HashiCorp Consul Node by HTTP' key: consul.virtual_memory_bytes - sortorder: '1' color: F63100 item: host: 'HashiCorp Consul Node by HTTP' key: consul.resident_memory_bytes - uuid: ba792478fe3140709a06a852560307fd name: 'Consul: Serf member operations' graph_items: - color: 199C0D item: host: 'HashiCorp Consul Node by HTTP' key: consul.serf.member.update.rate - sortorder: '1' color: F63100 item: host: 'HashiCorp Consul Node by HTTP' key: consul.serf.member.left.rate - sortorder: '2' color: 00611C item: host: 'HashiCorp Consul Node by HTTP' key: consul.serf.member.join.rate - sortorder: '3' color: F7941D item: host: 'HashiCorp Consul Node by HTTP' key: consul.serf.member.failed.rate - sortorder: '4' color: FC6EA3 item: host: 'HashiCorp Consul Node by HTTP' key: consul.serf.member.flap.rate