You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2128 lines
79 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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: '<PUT YOUR AUTH TOKEN>'
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 processs 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