Available solutions
Envoy Proxy by HTTP
Overview
The template to monitor Envoy Proxy by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Envoy Proxy by HTTP - collects metrics by HTTP agent from metrics endpoint {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus).
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- Envoy Proxy 1.20.2
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Internal service metrics are collected from {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus). https://www.envoyproxy.io/docs/envoy/v1.20.0/operations/stats_overview
Don't forget to change macros {$ENVOY.URL}, {$ENVOY.METRICS.PATH}. Also, see the Macros section for a list of macros used to set trigger values.
NOTE. Some metrics may not be collected depending on your Envoy Proxy instance version and configuration.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.URL} | Instance URL. |
http://localhost:9901 |
| {$ENVOY.METRICS.PATH} | The path Zabbix will scrape metrics in prometheus format from. |
/stats/prometheus |
| {$ENVOY.CERT.MIN} | Minimum number of days before certificate expiration used for trigger expression. |
7 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get node metrics | Get server metrics. |
HTTP agent | envoy.get_metrics Preprocessing
|
| Server state | State of the server. Live - (default) Server is live and serving traffic. Draining - Server is draining listeners in response to external health checks failing. Pre initializing - Server has not yet completed cluster manager initialization. Initializing - Server is running the cluster manager initialization callbacks (e.g., RDS). |
Dependent item | envoy.server.state Preprocessing
|
| Server live | 1 if the server is not currently draining, 0 otherwise. |
Dependent item | envoy.server.live Preprocessing
|
| Uptime | Current server uptime in seconds. |
Dependent item | envoy.server.uptime Preprocessing
|
| Certificate expiration, day before | Number of days until the next certificate being managed will expire. |
Dependent item | envoy.server.days_until_first_cert_expiring Preprocessing
|
| Server concurrency | Number of worker threads. |
Dependent item | envoy.server.concurrency Preprocessing
|
| Memory allocated | Current amount of allocated memory in bytes. Total of both new and old Envoy processes on hot restart. |
Dependent item | envoy.server.memory_allocated Preprocessing
|
| Memory heap size | Current reserved heap size in bytes. New Envoy process heap size on hot restart. |
Dependent item | envoy.server.memory_heap_size Preprocessing
|
| Memory physical size | Current estimate of total bytes of the physical memory. New Envoy process physical memory size on hot restart. |
Dependent item | envoy.server.memory_physical_size Preprocessing
|
| Filesystem, flushed by timer rate | Total number of times internal flush buffers are written to a file due to flush timeout per second. |
Dependent item | envoy.filesystem.flushed_by_timer.rate Preprocessing
|
| Filesystem, write completed rate | Total number of times a file was written per second. |
Dependent item | envoy.filesystem.write_completed.rate Preprocessing
|
| Filesystem, write failed rate | Total number of times an error occurred during a file write operation per second. |
Dependent item | envoy.filesystem.write_failed.rate Preprocessing
|
| Filesystem, reopen failed rate | Total number of times a file was failed to be opened per second. |
Dependent item | envoy.filesystem.reopen_failed.rate Preprocessing
|
| Connections, total | Total connections of both new and old Envoy processes. |
Dependent item | envoy.server.total_connections Preprocessing
|
| Connections, parent | Total connections of the old Envoy process on hot restart. |
Dependent item | envoy.server.parent_connections Preprocessing
|
| Clusters, warming | Number of currently warming (not active) clusters. |
Dependent item | envoy.cluster_manager.warming_clusters Preprocessing
|
| Clusters, active | Number of currently active (warmed) clusters. |
Dependent item | envoy.cluster_manager.active_clusters Preprocessing
|
| Clusters, added rate | Total clusters added (either via static config or CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_added.rate Preprocessing
|
| Clusters, modified rate | Total clusters modified (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_modified.rate Preprocessing
|
| Clusters, removed rate | Total clusters removed (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_removed.rate Preprocessing
|
| Clusters, updates rate | Total cluster updates per second. |
Dependent item | envoy.cluster_manager.cluster_updated.rate Preprocessing
|
| Listeners, active | Number of currently active listeners. |
Dependent item | envoy.listener_manager.total_listeners_active Preprocessing
|
| Listeners, draining | Number of currently draining listeners. |
Dependent item | envoy.listener_manager.total_listeners_draining Preprocessing
|
| Listener, warming | Number of currently warming listeners. |
Dependent item | envoy.listener_manager.total_listeners_warming Preprocessing
|
| Listener manager, initialized | A boolean (1 if started and 0 otherwise) that indicates whether listeners have been initialized on workers. |
Dependent item | envoy.listener_manager.workers_started Preprocessing
|
| Listeners, create failure | Total failed listener object additions to workers per second. |
Dependent item | envoy.listener_manager.listener_create_failure.rate Preprocessing
|
| Listeners, create success | Total listener objects successfully added to workers per second. |
Dependent item | envoy.listener_manager.listener_create_success.rate Preprocessing
|
| Listeners, added | Total listeners added (either via static config or LDS) per second. |
Dependent item | envoy.listener_manager.listener_added.rate Preprocessing
|
| Listeners, stopped | Total listeners stopped per second. |
Dependent item | envoy.listener_manager.listener_stopped.rate Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: Server state is not live | last(/Envoy Proxy by HTTP/envoy.server.state) > 0 |
Average | ||
| Envoy Proxy: Service has been restarted | Uptime is less than 10 minutes. |
last(/Envoy Proxy by HTTP/envoy.server.uptime)<10m |
Info | Manual close: Yes |
| Envoy Proxy: Failed to fetch metrics data | Zabbix has not received data for items for the last 10 minutes. |
nodata(/Envoy Proxy by HTTP/envoy.server.uptime,10m)=1 |
Warning | Manual close: Yes |
| Envoy Proxy: SSL certificate expires soon | Please check certificate. Less than {$ENVOY.CERT.MIN} days left until the next certificate being managed will expire. |
last(/Envoy Proxy by HTTP/envoy.server.days_until_first_cert_expiring)<{$ENVOY.CERT.MIN} |
Warning |
LLD rule Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster metrics discovery | Dependent item | envoy.lld.cluster Preprocessing
|
Item prototypes for Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster ["{#CLUSTER_NAME}"]: Membership, total | Current cluster membership total. |
Dependent item | envoy.cluster.membership_total["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Membership, healthy | Current cluster healthy total (inclusive of both health checking and outlier detection). |
Dependent item | envoy.cluster.membership_healthy["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Membership, unhealthy | Current cluster unhealthy. |
Calculated | envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"] |
| Cluster ["{#CLUSTER_NAME}"]: Membership, degraded | Current cluster degraded total. |
Dependent item | envoy.cluster.membership_degraded["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Connections, total | Current cluster total connections. |
Dependent item | envoy.cluster.upstream_cx_total["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Connections, active | Current cluster total active connections. |
Dependent item | envoy.cluster.upstream_cx_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests total, rate | Current cluster request total per second. |
Dependent item | envoy.cluster.upstream_rq_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests timeout, rate | Current cluster requests that timed out waiting for a response per second. |
Dependent item | envoy.cluster.upstream_rq_timeout.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests completed, rate | Total upstream requests completed per second. |
Dependent item | envoy.cluster.upstream_rq_completed.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 2xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_2x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 3xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_3x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 4xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_4x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 5xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_5x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests pending | Total active requests pending a connection pool connection. |
Dependent item | envoy.cluster.upstream_rq_pending_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests active | Total active requests. |
Dependent item | envoy.cluster.upstream_rq_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Upstream bytes out, rate | Total sent connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_tx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Upstream bytes in, rate | Total received connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_rx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
Trigger prototypes for Cluster metrics discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: There are unhealthy clusters | last(/Envoy Proxy by HTTP/envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"]) > 0 |
Average |
LLD rule Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listeners metrics discovery | Dependent item | envoy.lld.listeners Preprocessing
|
Item prototypes for Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listener ["{#LISTENER_ADDRESS}"]: Connections, active | Total active connections. |
Dependent item | envoy.listener.downstream_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
| Listener ["{#LISTENER_ADDRESS}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.listener.downstream_cx_total.rate["{#LISTENER_ADDRESS}"] Preprocessing
|
| Listener ["{#LISTENER_ADDRESS}"]: Sockets, undergoing | Sockets currently undergoing listener filter processing. |
Dependent item | envoy.listener.downstream_pre_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
LLD rule HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP metrics discovery | Dependent item | envoy.lld.http Preprocessing
|
Item prototypes for HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP ["{#CONN_MANAGER}"]: Requests, rate | Total active connections per second. |
Dependent item | envoy.http.downstream_rq_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Requests, active | Total active requests. |
Dependent item | envoy.http.downstream_rq_active["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Requests timeout, rate | Total requests closed due to a timeout on the request path per second. |
Dependent item | envoy.http.downstream_rq_timeout["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.http.downstream_cx_total["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Connections, active | Total active connections. |
Dependent item | envoy.http.downstream_cx_active["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Bytes in, rate | Total bytes received per second. |
Dependent item | envoy.http.downstream_cx_rx_bytes_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Bytes out, rate | Total bytes sent per second. |
Dependent item | envoy.http.downstream_cx_tx_bytes_tota.rate["{#CONN_MANAGER}"] Preprocessing
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Envoy Proxy by OTLP
Overview
This template collects Envoy Proxy's OpenTelemetry (OTLP) traces and logs via Zabbix's native APM query items (Telemetry query), without external scripts or a Zabbix proxy script layer. It requires Envoy's OpenTelemetry tracing to be enabled (directly, or via an OpenTelemetry Collector in front of Envoy).
Requirements
Zabbix version: 8.0 and higher.
Tested versions
This template has been tested on:
- Envoy Proxy (OpenTelemetry tracing)
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
- Enable Envoy's OpenTelemetry tracing (or point an OpenTelemetry Collector in front of Envoy) at your Zabbix server/proxy's OTLP endpoint. See https://www.envoyproxy.io/docs/envoy/latest/configuration/other_features/tracing#opentelemetry
- Ensure the
TelemetryProviderparameter is configured in the Zabbix server/proxy configuration file. - Apply the template to a host representing the Envoy instance.
- Adjust the remaining macros (update interval, thresholds) if needed.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.OTLP.INTERVAL} | Update interval of the Telemetry query and calculated items. The aggregation bucket (granularity) stays fixed at 1 minute, so use a multiple of 1 minute. |
1m |
| {$ENVOY.OTLP.TIME_SHIFT} | Time shift of the processing window of the Telemetry query items. Increase it if the OTLP collector writes data with a delay. |
15s |
| {$ENVOY.OTLP.NODATA.TIMEOUT} | Time period without span data after which the availability trigger fires. |
30m |
| {$ENVOY.OTLP.SPAN.DOWNSTREAM.ERROR.WARN} | Downstream (SpanKind Server) span error rate threshold, in %. |
30 |
| {$ENVOY.OTLP.SPAN.DOWNSTREAM.P95.WARN} | 95th percentile downstream (SpanKind Server) span duration threshold, in seconds. |
1 |
| {$ENVOY.OTLP.SPAN.UPSTREAM.ERROR.WARN} | Upstream (SpanKind Client) span error rate threshold, in %. |
30 |
| {$ENVOY.OTLP.SPAN.UPSTREAM.P95.WARN} | 95th percentile upstream (SpanKind Client) span duration threshold, in seconds. |
1 |
| {$ENVOY.OTLP.LOG.SEVERITY.WARN} | Threshold for |
10 |
| {$ENVOY.OTLP.LOG.SEVERITY.ERROR} | Threshold for |
5 |
| {$ENVOY.OTLP.LOG.SEVERITY.FATAL} | Threshold for |
0 |
| {$ENVOY.OTLP.HTTP.5XX.WARN} | Downstream 5xx response rate threshold, in %. |
5 |
| {$ENVOY.OTLP.LB.PANIC.WARN} | Number of load-balancer panic-mode events (no healthy upstream hosts) per aggregation window that triggers an alert. |
0 |
| {$ENVOY.OTLP.LISTENER.CX_OVERFLOW.WARN} | Number of rejected connections due to listener connection-limit overflow per aggregation window that triggers an alert. |
0 |
| {$ENVOY.OTLP.WATCHDOG.MEGA_MISS.WARN} | Number of worker-thread watchdog "mega miss" events (severe event-loop stall) per aggregation window that triggers an alert. |
0 |
| {$ENVOY.OTLP.OVERLOAD.CLOSE.WARN} | Number of downstream requests closed due to Envoy overload-protection per aggregation window that triggers an alert. |
0 |
| {$ENVOY.OTLP.CIRCUIT_BREAKER.WARN} | Number of aggregation windows a default-priority circuit breaker is seen open (tripped) before the trigger fires. |
0 |
| {$ENVOY.OTLP.CLUSTER.HEALTHY.MIN.WARN} | Minimum share of healthy upstream hosts, in percent (summed across all clusters), before the trigger fires. |
90 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Downstream span: Total count | Total number of downstream (SpanKind Server, ingress) spans over the aggregation window. |
Telemetry query | envoy.otlp.span.downstream.total Preprocessing
|
| Downstream span: Error count | Number of downstream (SpanKind Server, ingress) spans with status code "Error" over the aggregation window. |
Telemetry query | envoy.otlp.span.downstream.error Preprocessing
|
| Downstream span: Error rate | Percentage of error spans among downstream (ingress) spans over the aggregation window. |
Calculated | envoy.otlp.span.downstream.error.rate Preprocessing
|
| Downstream span: Duration, average | Average downstream (ingress) span duration over the aggregation window. |
Telemetry query | envoy.otlp.span.downstream.duration.avg Preprocessing
|
| Downstream span: Duration, minimum | Minimum downstream (ingress) span duration over the aggregation window. |
Telemetry query | envoy.otlp.span.downstream.duration.min Preprocessing
|
| Downstream span: Duration, maximum | Maximum downstream (ingress) span duration over the aggregation window. |
Telemetry query | envoy.otlp.span.downstream.duration.max Preprocessing
|
| Downstream span: Duration, 95th percentile | 95th percentile of downstream (ingress) span durations over the aggregation window. |
Telemetry query | envoy.otlp.span.downstream.duration.p95 Preprocessing
|
| Upstream span: Total count | Total number of upstream (SpanKind Client, egress) spans over the aggregation window. |
Telemetry query | envoy.otlp.span.upstream.total Preprocessing
|
| Upstream span: Error count | Number of upstream (SpanKind Client, egress) spans with status code "Error" over the aggregation window. |
Telemetry query | envoy.otlp.span.upstream.error Preprocessing
|
| Upstream span: Error rate | Percentage of error spans among upstream (egress) spans over the aggregation window — i.e. how often calls to upstream clusters fail. |
Calculated | envoy.otlp.span.upstream.error.rate Preprocessing
|
| Upstream span: Duration, average | Average upstream (egress) span duration over the aggregation window — the latency of Envoy's calls to upstream clusters. |
Telemetry query | envoy.otlp.span.upstream.duration.avg Preprocessing
|
| Upstream span: Duration, minimum | Minimum upstream (egress) span duration over the aggregation window. |
Telemetry query | envoy.otlp.span.upstream.duration.min Preprocessing
|
| Upstream span: Duration, maximum | Maximum upstream (egress) span duration over the aggregation window. |
Telemetry query | envoy.otlp.span.upstream.duration.max Preprocessing
|
| Upstream span: Duration, 95th percentile | 95th percentile of upstream (egress) span durations over the aggregation window. |
Telemetry query | envoy.otlp.span.upstream.duration.p95 Preprocessing
|
| Downstream requests: Total, rate | Number of new downstream HTTP requests (envoy_http_downstream_rq_total) per aggregation window, across all listeners. |
Telemetry query | envoy.otlp.http.rq.total.rate Preprocessing
|
| Downstream requests: 5xx, rate | Number of downstream responses with a 5xx status class (envoy_http_downstream_rq_xx, envoy_response_code_class=5) per aggregation window. |
Telemetry query | envoy.otlp.http.rq.5xx.rate Preprocessing
|
| Downstream requests: 4xx, rate | Number of downstream responses with a 4xx status class (envoy_http_downstream_rq_xx, envoy_response_code_class=4) per aggregation window. |
Telemetry query | envoy.otlp.http.rq.4xx.rate Preprocessing
|
| Downstream requests: 2xx, rate | Number of downstream responses with a 2xx status class (envoy_http_downstream_rq_xx, envoy_response_code_class=2) per aggregation window. |
Telemetry query | envoy.otlp.http.rq.2xx.rate Preprocessing
|
| Downstream requests: 3xx, rate | Number of downstream responses with a 3xx status class (envoy_http_downstream_rq_xx, envoy_response_code_class=3) per aggregation window. |
Telemetry query | envoy.otlp.http.rq.3xx.rate Preprocessing
|
| Downstream requests: 5xx rate, in % | Share of downstream HTTP responses with a 5xx status class, in percent of total requests. |
Calculated | envoy.otlp.http.rq.error.rate Preprocessing
|
| Downstream requests: Timeouts, rate | Number of downstream requests closed due to a timeout (envoy_http_downstream_rq_timeout) per aggregation window. Distinct from cluster.rq.timeout.rate, which counts upstream timeouts. |
Telemetry query | envoy.otlp.http.rq.timeout.rate Preprocessing
|
| Downstream requests: Overload-closed, rate | Number of downstream requests closed because Envoy itself is overloaded (envoy_http_downstream_rq_overload_close — one of Envoy's own overload-protection actions triggered) per aggregation window. |
Telemetry query | envoy.otlp.http.rq.overload_close.rate Preprocessing
|
| Downstream requests: Premature resets, rate | Number of connections closed for sending too many premature stream resets (envoy_http_downstream_rq_too_many_premature_resets) per aggregation window — Envoy's built-in mitigation for the HTTP/2 rapid-reset abuse pattern (CVE-2023-44487). |
Telemetry query | envoy.otlp.http.rq.premature_resets.rate Preprocessing
|
| Upstream: Connect failures, rate | Number of failed upstream connection attempts (envoy_cluster_upstream_cx_connect_fail) per aggregation window, across all clusters. |
Telemetry query | envoy.otlp.cluster.cx.connect_fail.rate Preprocessing
|
| Upstream: Request timeouts, rate | Number of upstream requests that timed out (envoy_cluster_upstream_rq_timeout) per aggregation window, across all clusters. |
Telemetry query | envoy.otlp.cluster.rq.timeout.rate Preprocessing
|
| Upstream: No healthy hosts (LB panic), rate | Number of times load balancing entered panic mode (envoy_cluster_lb_healthy_panic — no healthy upstream hosts, routing to all hosts regardless of health) per aggregation window. |
Telemetry query | envoy.otlp.cluster.lb.healthy_panic.rate Preprocessing
|
| Listener: Connection overflow, rate | Number of connections rejected because a listener's connection limit was reached (envoy_listener_downstream_cx_overflow) per aggregation window. |
Telemetry query | envoy.otlp.listener.cx.overflow.rate Preprocessing
|
| Worker: Watchdog miss, rate | Number of worker-thread event-loop watchdog misses (envoy_server_worker_watchdog_miss — the thread was unresponsive longer than expected) per aggregation window. |
Telemetry query | envoy.otlp.worker.watchdog.miss.rate Preprocessing
|
| Worker: Watchdog mega miss, rate | Number of worker-thread event-loop watchdog "mega miss" events (envoy_server_worker_watchdog_mega_miss — a severe, prolonged event-loop stall) per aggregation window. |
Telemetry query | envoy.otlp.worker.watchdog.mega_miss.rate Preprocessing
|
| Circuit breaker: Connection pool open | 1 if the default-priority connection-pool circuit breaker is open (tripped) for at least one cluster (envoy_cluster_circuit_breakers_default_cx_pool_open), 0 otherwise. |
Telemetry query | envoy.otlp.cluster.cb.cx_pool_open Preprocessing
|
| Circuit breaker: Request queue open | 1 if the default-priority pending-request circuit breaker is open for at least one cluster (envoy_cluster_circuit_breakers_default_rq_pending_open), 0 otherwise. |
Telemetry query | envoy.otlp.cluster.cb.rq_pending_open Preprocessing
|
| Circuit breaker: Requests open | 1 if the default-priority request circuit breaker is open for at least one cluster (envoy_cluster_circuit_breakers_default_rq_open — max concurrent requests reached), 0 otherwise. |
Telemetry query | envoy.otlp.cluster.cb.rq_open Preprocessing
|
| Circuit breaker: Retries open | 1 if the default-priority retry circuit breaker is open for at least one cluster (envoy_cluster_circuit_breakers_default_rq_retry_open — retry budget exhausted), 0 otherwise. |
Telemetry query | envoy.otlp.cluster.cb.rq_retry_open Preprocessing
|
| Cluster membership: Healthy | Number of healthy upstream hosts (envoy_cluster_membership_healthy), summed across all clusters, at the lowest point of the aggregation window. |
Telemetry query | envoy.otlp.cluster.membership.healthy Preprocessing
|
| Cluster membership: Total | Total number of configured upstream hosts (envoy_cluster_membership_total), summed across all clusters. |
Telemetry query | envoy.otlp.cluster.membership.total Preprocessing
|
| Cluster membership: Degraded | Number of degraded upstream hosts (envoy_cluster_membership_degraded), summed across all clusters, at the highest point of the aggregation window. |
Telemetry query | envoy.otlp.cluster.membership.degraded Preprocessing
|
| Cluster membership: Excluded | Number of excluded upstream hosts (envoy_cluster_membership_excluded), summed across all clusters, at the highest point of the aggregation window. |
Telemetry query | envoy.otlp.cluster.membership.excluded Preprocessing
|
| Cluster membership: Healthy, in % | Share of healthy upstream hosts, in percent of all configured hosts, summed across all clusters. |
Calculated | envoy.otlp.cluster.membership.healthy.pct Preprocessing
|
| Downstream: Active requests | Number of currently active (in-flight) downstream HTTP requests (envoy_http_downstream_rq_active), across all listeners. |
Telemetry query | envoy.otlp.http.rq.active Preprocessing
|
| Downstream: Active connections | Number of currently active downstream HTTP connections (envoy_http_downstream_cx_active), across all listeners. |
Telemetry query | envoy.otlp.http.cx.active Preprocessing
|
| Get logs | Collect Envoy Proxy OpenTelemetry log counts grouped by severity. |
Telemetry query | envoy.otlp.get.logs Preprocessing
|
| Logs: Info entries count | Number of |
Dependent item | envoy.otlp.logs.info Preprocessing
|
| Logs: Warning entries count | Number of |
Dependent item | envoy.otlp.logs.warn Preprocessing
|
| Logs: Error entries count | Number of |
Dependent item | envoy.otlp.logs.error Preprocessing
|
| Logs: Fatal entries count | Number of |
Dependent item | envoy.otlp.logs.fatal Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: No telemetry data received | No spans have arrived from the telemetry backend for {$ENVOY.OTLP.NODATA.TIMEOUT}. |
nodata(/Envoy Proxy by OTLP/envoy.otlp.span.downstream.total,{$ENVOY.OTLP.NODATA.TIMEOUT}) = 1 |
Average | |
| Envoy Proxy: High downstream span error rate | min(/Envoy Proxy by OTLP/envoy.otlp.span.downstream.error.rate,5m) > {$ENVOY.OTLP.SPAN.DOWNSTREAM.ERROR.WARN} |
Warning | ||
| Envoy Proxy: High downstream span duration for 95% of spans | min(/Envoy Proxy by OTLP/envoy.otlp.span.downstream.duration.p95,5m) > {$ENVOY.OTLP.SPAN.DOWNSTREAM.P95.WARN} |
Warning | ||
| Envoy Proxy: High upstream span error rate | min(/Envoy Proxy by OTLP/envoy.otlp.span.upstream.error.rate,5m) > {$ENVOY.OTLP.SPAN.UPSTREAM.ERROR.WARN} |
Warning | ||
| Envoy Proxy: High upstream span duration for 95% of spans | min(/Envoy Proxy by OTLP/envoy.otlp.span.upstream.duration.p95,5m) > {$ENVOY.OTLP.SPAN.UPSTREAM.P95.WARN} |
Warning | ||
| Envoy Proxy: High 5xx response rate | min(/Envoy Proxy by OTLP/envoy.otlp.http.rq.error.rate,5m) > {$ENVOY.OTLP.HTTP.5XX.WARN} |
Warning | ||
| Envoy Proxy: Envoy shedding requests due to overload | min(/Envoy Proxy by OTLP/envoy.otlp.http.rq.overload_close.rate,5m) > {$ENVOY.OTLP.OVERLOAD.CLOSE.WARN} |
High | ||
| Envoy Proxy: Load balancer entered panic mode | min(/Envoy Proxy by OTLP/envoy.otlp.cluster.lb.healthy_panic.rate,5m) > {$ENVOY.OTLP.LB.PANIC.WARN} |
High | ||
| Envoy Proxy: Listener rejecting connections (overflow) | min(/Envoy Proxy by OTLP/envoy.otlp.listener.cx.overflow.rate,5m) > {$ENVOY.OTLP.LISTENER.CX_OVERFLOW.WARN} |
Warning | ||
| Envoy Proxy: Worker thread severely stalled (watchdog mega miss) | min(/Envoy Proxy by OTLP/envoy.otlp.worker.watchdog.mega_miss.rate,5m) > {$ENVOY.OTLP.WATCHDOG.MEGA_MISS.WARN} |
High | ||
| Envoy Proxy: Connection pool circuit breaker open | min(/Envoy Proxy by OTLP/envoy.otlp.cluster.cb.cx_pool_open,5m) > {$ENVOY.OTLP.CIRCUIT_BREAKER.WARN} |
Warning | ||
| Envoy Proxy: Request queue circuit breaker open | min(/Envoy Proxy by OTLP/envoy.otlp.cluster.cb.rq_pending_open,5m) > {$ENVOY.OTLP.CIRCUIT_BREAKER.WARN} |
Warning | ||
| Envoy Proxy: Request circuit breaker open | min(/Envoy Proxy by OTLP/envoy.otlp.cluster.cb.rq_open,5m) > {$ENVOY.OTLP.CIRCUIT_BREAKER.WARN} |
Warning | ||
| Envoy Proxy: Retry circuit breaker open | min(/Envoy Proxy by OTLP/envoy.otlp.cluster.cb.rq_retry_open,5m) > {$ENVOY.OTLP.CIRCUIT_BREAKER.WARN} |
Warning | ||
| Envoy Proxy: Low share of healthy upstream hosts | max(/Envoy Proxy by OTLP/envoy.otlp.cluster.membership.healthy.pct,5m) < {$ENVOY.OTLP.CLUSTER.HEALTHY.MIN.WARN} |
Warning | ||
| Envoy Proxy: Warning severity level entries in logs | min(/Envoy Proxy by OTLP/envoy.otlp.logs.warn,5m) > {$ENVOY.OTLP.LOG.SEVERITY.WARN} |
Warning | ||
| Envoy Proxy: Error severity level entries in logs | min(/Envoy Proxy by OTLP/envoy.otlp.logs.error,5m) > {$ENVOY.OTLP.LOG.SEVERITY.ERROR} |
Average | ||
| Envoy Proxy: Fatal severity level entries in logs | min(/Envoy Proxy by OTLP/envoy.otlp.logs.fatal,5m) > {$ENVOY.OTLP.LOG.SEVERITY.FATAL} |
High |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Envoy Proxy by HTTP
Overview
The template to monitor Envoy Proxy by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Envoy Proxy by HTTP - collects metrics by HTTP agent from metrics endpoint {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus).
Requirements
Zabbix version: 7.2 and higher.
Tested versions
This template has been tested on:
- Envoy Proxy 1.20.2
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Internal service metrics are collected from {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus). https://www.envoyproxy.io/docs/envoy/v1.20.0/operations/stats_overview
Don't forget to change macros {$ENVOY.URL}, {$ENVOY.METRICS.PATH}. Also, see the Macros section for a list of macros used to set trigger values.
NOTE. Some metrics may not be collected depending on your Envoy Proxy instance version and configuration.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.URL} | Instance URL. |
http://localhost:9901 |
| {$ENVOY.METRICS.PATH} | The path Zabbix will scrape metrics in prometheus format from. |
/stats/prometheus |
| {$ENVOY.CERT.MIN} | Minimum number of days before certificate expiration used for trigger expression. |
7 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get node metrics | Get server metrics. |
HTTP agent | envoy.get_metrics Preprocessing
|
| Server state | State of the server. Live - (default) Server is live and serving traffic. Draining - Server is draining listeners in response to external health checks failing. Pre initializing - Server has not yet completed cluster manager initialization. Initializing - Server is running the cluster manager initialization callbacks (e.g., RDS). |
Dependent item | envoy.server.state Preprocessing
|
| Server live | 1 if the server is not currently draining, 0 otherwise. |
Dependent item | envoy.server.live Preprocessing
|
| Uptime | Current server uptime in seconds. |
Dependent item | envoy.server.uptime Preprocessing
|
| Certificate expiration, day before | Number of days until the next certificate being managed will expire. |
Dependent item | envoy.server.days_until_first_cert_expiring Preprocessing
|
| Server concurrency | Number of worker threads. |
Dependent item | envoy.server.concurrency Preprocessing
|
| Memory allocated | Current amount of allocated memory in bytes. Total of both new and old Envoy processes on hot restart. |
Dependent item | envoy.server.memory_allocated Preprocessing
|
| Memory heap size | Current reserved heap size in bytes. New Envoy process heap size on hot restart. |
Dependent item | envoy.server.memory_heap_size Preprocessing
|
| Memory physical size | Current estimate of total bytes of the physical memory. New Envoy process physical memory size on hot restart. |
Dependent item | envoy.server.memory_physical_size Preprocessing
|
| Filesystem, flushed by timer rate | Total number of times internal flush buffers are written to a file due to flush timeout per second. |
Dependent item | envoy.filesystem.flushed_by_timer.rate Preprocessing
|
| Filesystem, write completed rate | Total number of times a file was written per second. |
Dependent item | envoy.filesystem.write_completed.rate Preprocessing
|
| Filesystem, write failed rate | Total number of times an error occurred during a file write operation per second. |
Dependent item | envoy.filesystem.write_failed.rate Preprocessing
|
| Filesystem, reopen failed rate | Total number of times a file was failed to be opened per second. |
Dependent item | envoy.filesystem.reopen_failed.rate Preprocessing
|
| Connections, total | Total connections of both new and old Envoy processes. |
Dependent item | envoy.server.total_connections Preprocessing
|
| Connections, parent | Total connections of the old Envoy process on hot restart. |
Dependent item | envoy.server.parent_connections Preprocessing
|
| Clusters, warming | Number of currently warming (not active) clusters. |
Dependent item | envoy.cluster_manager.warming_clusters Preprocessing
|
| Clusters, active | Number of currently active (warmed) clusters. |
Dependent item | envoy.cluster_manager.active_clusters Preprocessing
|
| Clusters, added rate | Total clusters added (either via static config or CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_added.rate Preprocessing
|
| Clusters, modified rate | Total clusters modified (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_modified.rate Preprocessing
|
| Clusters, removed rate | Total clusters removed (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_removed.rate Preprocessing
|
| Clusters, updates rate | Total cluster updates per second. |
Dependent item | envoy.cluster_manager.cluster_updated.rate Preprocessing
|
| Listeners, active | Number of currently active listeners. |
Dependent item | envoy.listener_manager.total_listeners_active Preprocessing
|
| Listeners, draining | Number of currently draining listeners. |
Dependent item | envoy.listener_manager.total_listeners_draining Preprocessing
|
| Listener, warming | Number of currently warming listeners. |
Dependent item | envoy.listener_manager.total_listeners_warming Preprocessing
|
| Listener manager, initialized | A boolean (1 if started and 0 otherwise) that indicates whether listeners have been initialized on workers. |
Dependent item | envoy.listener_manager.workers_started Preprocessing
|
| Listeners, create failure | Total failed listener object additions to workers per second. |
Dependent item | envoy.listener_manager.listener_create_failure.rate Preprocessing
|
| Listeners, create success | Total listener objects successfully added to workers per second. |
Dependent item | envoy.listener_manager.listener_create_success.rate Preprocessing
|
| Listeners, added | Total listeners added (either via static config or LDS) per second. |
Dependent item | envoy.listener_manager.listener_added.rate Preprocessing
|
| Listeners, stopped | Total listeners stopped per second. |
Dependent item | envoy.listener_manager.listener_stopped.rate Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: Server state is not live | last(/Envoy Proxy by HTTP/envoy.server.state) > 0 |
Average | ||
| Envoy Proxy: Service has been restarted | Uptime is less than 10 minutes. |
last(/Envoy Proxy by HTTP/envoy.server.uptime)<10m |
Info | Manual close: Yes |
| Envoy Proxy: Failed to fetch metrics data | Zabbix has not received data for items for the last 10 minutes. |
nodata(/Envoy Proxy by HTTP/envoy.server.uptime,10m)=1 |
Warning | Manual close: Yes |
| Envoy Proxy: SSL certificate expires soon | Please check certificate. Less than {$ENVOY.CERT.MIN} days left until the next certificate being managed will expire. |
last(/Envoy Proxy by HTTP/envoy.server.days_until_first_cert_expiring)<{$ENVOY.CERT.MIN} |
Warning |
LLD rule Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster metrics discovery | Dependent item | envoy.lld.cluster Preprocessing
|
Item prototypes for Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster ["{#CLUSTER_NAME}"]: Membership, total | Current cluster membership total. |
Dependent item | envoy.cluster.membership_total["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Membership, healthy | Current cluster healthy total (inclusive of both health checking and outlier detection). |
Dependent item | envoy.cluster.membership_healthy["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Membership, unhealthy | Current cluster unhealthy. |
Calculated | envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"] |
| Cluster ["{#CLUSTER_NAME}"]: Membership, degraded | Current cluster degraded total. |
Dependent item | envoy.cluster.membership_degraded["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Connections, total | Current cluster total connections. |
Dependent item | envoy.cluster.upstream_cx_total["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Connections, active | Current cluster total active connections. |
Dependent item | envoy.cluster.upstream_cx_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests total, rate | Current cluster request total per second. |
Dependent item | envoy.cluster.upstream_rq_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests timeout, rate | Current cluster requests that timed out waiting for a response per second. |
Dependent item | envoy.cluster.upstream_rq_timeout.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests completed, rate | Total upstream requests completed per second. |
Dependent item | envoy.cluster.upstream_rq_completed.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 2xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_2x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 3xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_3x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 4xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_4x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 5xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_5x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests pending | Total active requests pending a connection pool connection. |
Dependent item | envoy.cluster.upstream_rq_pending_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests active | Total active requests. |
Dependent item | envoy.cluster.upstream_rq_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Upstream bytes out, rate | Total sent connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_tx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Upstream bytes in, rate | Total received connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_rx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
Trigger prototypes for Cluster metrics discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: There are unhealthy clusters | last(/Envoy Proxy by HTTP/envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"]) > 0 |
Average |
LLD rule Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listeners metrics discovery | Dependent item | envoy.lld.listeners Preprocessing
|
Item prototypes for Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listener ["{#LISTENER_ADDRESS}"]: Connections, active | Total active connections. |
Dependent item | envoy.listener.downstream_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
| Listener ["{#LISTENER_ADDRESS}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.listener.downstream_cx_total.rate["{#LISTENER_ADDRESS}"] Preprocessing
|
| Listener ["{#LISTENER_ADDRESS}"]: Sockets, undergoing | Sockets currently undergoing listener filter processing. |
Dependent item | envoy.listener.downstream_pre_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
LLD rule HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP metrics discovery | Dependent item | envoy.lld.http Preprocessing
|
Item prototypes for HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP ["{#CONN_MANAGER}"]: Requests, rate | Total active connections per second. |
Dependent item | envoy.http.downstream_rq_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Requests, active | Total active requests. |
Dependent item | envoy.http.downstream_rq_active["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Requests timeout, rate | Total requests closed due to a timeout on the request path per second. |
Dependent item | envoy.http.downstream_rq_timeout["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.http.downstream_cx_total["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Connections, active | Total active connections. |
Dependent item | envoy.http.downstream_cx_active["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Bytes in, rate | Total bytes received per second. |
Dependent item | envoy.http.downstream_cx_rx_bytes_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Bytes out, rate | Total bytes sent per second. |
Dependent item | envoy.http.downstream_cx_tx_bytes_tota.rate["{#CONN_MANAGER}"] Preprocessing
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Envoy Proxy by HTTP
Overview
The template to monitor Envoy Proxy by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Envoy Proxy by HTTP - collects metrics by HTTP agent from metrics endpoint {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus).
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- Envoy Proxy 1.20.2
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Internal service metrics are collected from {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus). https://www.envoyproxy.io/docs/envoy/v1.20.0/operations/stats_overview
Don't forget to change macros {$ENVOY.URL}, {$ENVOY.METRICS.PATH}. Also, see the Macros section for a list of macros used to set trigger values.
NOTE. Some metrics may not be collected depending on your Envoy Proxy instance version and configuration.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.URL} | Instance URL. |
http://localhost:9901 |
| {$ENVOY.METRICS.PATH} | The path Zabbix will scrape metrics in prometheus format from. |
/stats/prometheus |
| {$ENVOY.CERT.MIN} | Minimum number of days before certificate expiration used for trigger expression. |
7 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get node metrics | Get server metrics. |
HTTP agent | envoy.get_metrics Preprocessing
|
| Server state | State of the server. Live - (default) Server is live and serving traffic. Draining - Server is draining listeners in response to external health checks failing. Pre initializing - Server has not yet completed cluster manager initialization. Initializing - Server is running the cluster manager initialization callbacks (e.g., RDS). |
Dependent item | envoy.server.state Preprocessing
|
| Server live | 1 if the server is not currently draining, 0 otherwise. |
Dependent item | envoy.server.live Preprocessing
|
| Uptime | Current server uptime in seconds. |
Dependent item | envoy.server.uptime Preprocessing
|
| Certificate expiration, day before | Number of days until the next certificate being managed will expire. |
Dependent item | envoy.server.days_until_first_cert_expiring Preprocessing
|
| Server concurrency | Number of worker threads. |
Dependent item | envoy.server.concurrency Preprocessing
|
| Memory allocated | Current amount of allocated memory in bytes. Total of both new and old Envoy processes on hot restart. |
Dependent item | envoy.server.memory_allocated Preprocessing
|
| Memory heap size | Current reserved heap size in bytes. New Envoy process heap size on hot restart. |
Dependent item | envoy.server.memory_heap_size Preprocessing
|
| Memory physical size | Current estimate of total bytes of the physical memory. New Envoy process physical memory size on hot restart. |
Dependent item | envoy.server.memory_physical_size Preprocessing
|
| Filesystem, flushed by timer rate | Total number of times internal flush buffers are written to a file due to flush timeout per second. |
Dependent item | envoy.filesystem.flushed_by_timer.rate Preprocessing
|
| Filesystem, write completed rate | Total number of times a file was written per second. |
Dependent item | envoy.filesystem.write_completed.rate Preprocessing
|
| Filesystem, write failed rate | Total number of times an error occurred during a file write operation per second. |
Dependent item | envoy.filesystem.write_failed.rate Preprocessing
|
| Filesystem, reopen failed rate | Total number of times a file was failed to be opened per second. |
Dependent item | envoy.filesystem.reopen_failed.rate Preprocessing
|
| Connections, total | Total connections of both new and old Envoy processes. |
Dependent item | envoy.server.total_connections Preprocessing
|
| Connections, parent | Total connections of the old Envoy process on hot restart. |
Dependent item | envoy.server.parent_connections Preprocessing
|
| Clusters, warming | Number of currently warming (not active) clusters. |
Dependent item | envoy.cluster_manager.warming_clusters Preprocessing
|
| Clusters, active | Number of currently active (warmed) clusters. |
Dependent item | envoy.cluster_manager.active_clusters Preprocessing
|
| Clusters, added rate | Total clusters added (either via static config or CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_added.rate Preprocessing
|
| Clusters, modified rate | Total clusters modified (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_modified.rate Preprocessing
|
| Clusters, removed rate | Total clusters removed (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_removed.rate Preprocessing
|
| Clusters, updates rate | Total cluster updates per second. |
Dependent item | envoy.cluster_manager.cluster_updated.rate Preprocessing
|
| Listeners, active | Number of currently active listeners. |
Dependent item | envoy.listener_manager.total_listeners_active Preprocessing
|
| Listeners, draining | Number of currently draining listeners. |
Dependent item | envoy.listener_manager.total_listeners_draining Preprocessing
|
| Listener, warming | Number of currently warming listeners. |
Dependent item | envoy.listener_manager.total_listeners_warming Preprocessing
|
| Listener manager, initialized | A boolean (1 if started and 0 otherwise) that indicates whether listeners have been initialized on workers. |
Dependent item | envoy.listener_manager.workers_started Preprocessing
|
| Listeners, create failure | Total failed listener object additions to workers per second. |
Dependent item | envoy.listener_manager.listener_create_failure.rate Preprocessing
|
| Listeners, create success | Total listener objects successfully added to workers per second. |
Dependent item | envoy.listener_manager.listener_create_success.rate Preprocessing
|
| Listeners, added | Total listeners added (either via static config or LDS) per second. |
Dependent item | envoy.listener_manager.listener_added.rate Preprocessing
|
| Listeners, stopped | Total listeners stopped per second. |
Dependent item | envoy.listener_manager.listener_stopped.rate Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: Server state is not live | last(/Envoy Proxy by HTTP/envoy.server.state) > 0 |
Average | ||
| Envoy Proxy: Service has been restarted | Uptime is less than 10 minutes. |
last(/Envoy Proxy by HTTP/envoy.server.uptime)<10m |
Info | Manual close: Yes |
| Envoy Proxy: Failed to fetch metrics data | Zabbix has not received data for items for the last 10 minutes. |
nodata(/Envoy Proxy by HTTP/envoy.server.uptime,10m)=1 |
Warning | Manual close: Yes |
| Envoy Proxy: SSL certificate expires soon | Please check certificate. Less than {$ENVOY.CERT.MIN} days left until the next certificate being managed will expire. |
last(/Envoy Proxy by HTTP/envoy.server.days_until_first_cert_expiring)<{$ENVOY.CERT.MIN} |
Warning |
LLD rule Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster metrics discovery | Dependent item | envoy.lld.cluster Preprocessing
|
Item prototypes for Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster ["{#CLUSTER_NAME}"]: Membership, total | Current cluster membership total. |
Dependent item | envoy.cluster.membership_total["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Membership, healthy | Current cluster healthy total (inclusive of both health checking and outlier detection). |
Dependent item | envoy.cluster.membership_healthy["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Membership, unhealthy | Current cluster unhealthy. |
Calculated | envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"] |
| Cluster ["{#CLUSTER_NAME}"]: Membership, degraded | Current cluster degraded total. |
Dependent item | envoy.cluster.membership_degraded["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Connections, total | Current cluster total connections. |
Dependent item | envoy.cluster.upstream_cx_total["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Connections, active | Current cluster total active connections. |
Dependent item | envoy.cluster.upstream_cx_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests total, rate | Current cluster request total per second. |
Dependent item | envoy.cluster.upstream_rq_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests timeout, rate | Current cluster requests that timed out waiting for a response per second. |
Dependent item | envoy.cluster.upstream_rq_timeout.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests completed, rate | Total upstream requests completed per second. |
Dependent item | envoy.cluster.upstream_rq_completed.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 2xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_2x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 3xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_3x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 4xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_4x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests 5xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_5x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests pending | Total active requests pending a connection pool connection. |
Dependent item | envoy.cluster.upstream_rq_pending_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Requests active | Total active requests. |
Dependent item | envoy.cluster.upstream_rq_active["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Upstream bytes out, rate | Total sent connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_tx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Cluster ["{#CLUSTER_NAME}"]: Upstream bytes in, rate | Total received connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_rx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
Trigger prototypes for Cluster metrics discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: There are unhealthy clusters | last(/Envoy Proxy by HTTP/envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"]) > 0 |
Average |
LLD rule Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listeners metrics discovery | Dependent item | envoy.lld.listeners Preprocessing
|
Item prototypes for Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listener ["{#LISTENER_ADDRESS}"]: Connections, active | Total active connections. |
Dependent item | envoy.listener.downstream_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
| Listener ["{#LISTENER_ADDRESS}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.listener.downstream_cx_total.rate["{#LISTENER_ADDRESS}"] Preprocessing
|
| Listener ["{#LISTENER_ADDRESS}"]: Sockets, undergoing | Sockets currently undergoing listener filter processing. |
Dependent item | envoy.listener.downstream_pre_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
LLD rule HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP metrics discovery | Dependent item | envoy.lld.http Preprocessing
|
Item prototypes for HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP ["{#CONN_MANAGER}"]: Requests, rate | Total active connections per second. |
Dependent item | envoy.http.downstream_rq_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Requests, active | Total active requests. |
Dependent item | envoy.http.downstream_rq_active["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Requests timeout, rate | Total requests closed due to a timeout on the request path per second. |
Dependent item | envoy.http.downstream_rq_timeout["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.http.downstream_cx_total["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Connections, active | Total active connections. |
Dependent item | envoy.http.downstream_cx_active["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Bytes in, rate | Total bytes received per second. |
Dependent item | envoy.http.downstream_cx_rx_bytes_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| HTTP ["{#CONN_MANAGER}"]: Bytes out, rate | Total bytes sent per second. |
Dependent item | envoy.http.downstream_cx_tx_bytes_tota.rate["{#CONN_MANAGER}"] Preprocessing
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Envoy Proxy by HTTP
Overview
The template to monitor Envoy Proxy by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Envoy Proxy by HTTP - collects metrics by HTTP agent from metrics endpoint {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus).
Requirements
Zabbix version: 6.4 and higher.
Tested versions
This template has been tested on:
- Envoy Proxy 1.20.2
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Internal service metrics are collected from {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus). https://www.envoyproxy.io/docs/envoy/v1.20.0/operations/stats_overview
Don't forget to change macros {$ENVOY.URL}, {$ENVOY.METRICS.PATH}. Also, see the Macros section for a list of macros used to set trigger values.
NOTE. Some metrics may not be collected depending on your Envoy Proxy instance version and configuration.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.URL} | Instance URL. |
http://localhost:9901 |
| {$ENVOY.METRICS.PATH} | The path Zabbix will scrape metrics in prometheus format from. |
/stats/prometheus |
| {$ENVOY.CERT.MIN} | Minimum number of days before certificate expiration used for trigger expression. |
7 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: Get node metrics | Get server metrics. |
HTTP agent | envoy.get_metrics Preprocessing
|
| Envoy Proxy: Server state | State of the server. Live - (default) Server is live and serving traffic. Draining - Server is draining listeners in response to external health checks failing. Pre initializing - Server has not yet completed cluster manager initialization. Initializing - Server is running the cluster manager initialization callbacks (e.g., RDS). |
Dependent item | envoy.server.state Preprocessing
|
| Envoy Proxy: Server live | 1 if the server is not currently draining, 0 otherwise. |
Dependent item | envoy.server.live Preprocessing
|
| Envoy Proxy: Uptime | Current server uptime in seconds. |
Dependent item | envoy.server.uptime Preprocessing
|
| Envoy Proxy: Certificate expiration, day before | Number of days until the next certificate being managed will expire. |
Dependent item | envoy.server.days_until_first_cert_expiring Preprocessing
|
| Envoy Proxy: Server concurrency | Number of worker threads. |
Dependent item | envoy.server.concurrency Preprocessing
|
| Envoy Proxy: Memory allocated | Current amount of allocated memory in bytes. Total of both new and old Envoy processes on hot restart. |
Dependent item | envoy.server.memory_allocated Preprocessing
|
| Envoy Proxy: Memory heap size | Current reserved heap size in bytes. New Envoy process heap size on hot restart. |
Dependent item | envoy.server.memory_heap_size Preprocessing
|
| Envoy Proxy: Memory physical size | Current estimate of total bytes of the physical memory. New Envoy process physical memory size on hot restart. |
Dependent item | envoy.server.memory_physical_size Preprocessing
|
| Envoy Proxy: Filesystem, flushed by timer rate | Total number of times internal flush buffers are written to a file due to flush timeout per second. |
Dependent item | envoy.filesystem.flushed_by_timer.rate Preprocessing
|
| Envoy Proxy: Filesystem, write completed rate | Total number of times a file was written per second. |
Dependent item | envoy.filesystem.write_completed.rate Preprocessing
|
| Envoy Proxy: Filesystem, write failed rate | Total number of times an error occurred during a file write operation per second. |
Dependent item | envoy.filesystem.write_failed.rate Preprocessing
|
| Envoy Proxy: Filesystem, reopen failed rate | Total number of times a file was failed to be opened per second. |
Dependent item | envoy.filesystem.reopen_failed.rate Preprocessing
|
| Envoy Proxy: Connections, total | Total connections of both new and old Envoy processes. |
Dependent item | envoy.server.total_connections Preprocessing
|
| Envoy Proxy: Connections, parent | Total connections of the old Envoy process on hot restart. |
Dependent item | envoy.server.parent_connections Preprocessing
|
| Envoy Proxy: Clusters, warming | Number of currently warming (not active) clusters. |
Dependent item | envoy.cluster_manager.warming_clusters Preprocessing
|
| Envoy Proxy: Clusters, active | Number of currently active (warmed) clusters. |
Dependent item | envoy.cluster_manager.active_clusters Preprocessing
|
| Envoy Proxy: Clusters, added rate | Total clusters added (either via static config or CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_added.rate Preprocessing
|
| Envoy Proxy: Clusters, modified rate | Total clusters modified (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_modified.rate Preprocessing
|
| Envoy Proxy: Clusters, removed rate | Total clusters removed (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_removed.rate Preprocessing
|
| Envoy Proxy: Clusters, updates rate | Total cluster updates per second. |
Dependent item | envoy.cluster_manager.cluster_updated.rate Preprocessing
|
| Envoy Proxy: Listeners, active | Number of currently active listeners. |
Dependent item | envoy.listener_manager.total_listeners_active Preprocessing
|
| Envoy Proxy: Listeners, draining | Number of currently draining listeners. |
Dependent item | envoy.listener_manager.total_listeners_draining Preprocessing
|
| Envoy Proxy: Listener, warming | Number of currently warming listeners. |
Dependent item | envoy.listener_manager.total_listeners_warming Preprocessing
|
| Envoy Proxy: Listener manager, initialized | A boolean (1 if started and 0 otherwise) that indicates whether listeners have been initialized on workers. |
Dependent item | envoy.listener_manager.workers_started Preprocessing
|
| Envoy Proxy: Listeners, create failure | Total failed listener object additions to workers per second. |
Dependent item | envoy.listener_manager.listener_create_failure.rate Preprocessing
|
| Envoy Proxy: Listeners, create success | Total listener objects successfully added to workers per second. |
Dependent item | envoy.listener_manager.listener_create_success.rate Preprocessing
|
| Envoy Proxy: Listeners, added | Total listeners added (either via static config or LDS) per second. |
Dependent item | envoy.listener_manager.listener_added.rate Preprocessing
|
| Envoy Proxy: Listeners, stopped | Total listeners stopped per second. |
Dependent item | envoy.listener_manager.listener_stopped.rate Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: Server state is not live | last(/Envoy Proxy by HTTP/envoy.server.state) > 0 |
Average | ||
| Envoy Proxy: Service has been restarted | Uptime is less than 10 minutes. |
last(/Envoy Proxy by HTTP/envoy.server.uptime)<10m |
Info | Manual close: Yes |
| Envoy Proxy: Failed to fetch metrics data | Zabbix has not received data for items for the last 10 minutes. |
nodata(/Envoy Proxy by HTTP/envoy.server.uptime,10m)=1 |
Warning | Manual close: Yes |
| Envoy Proxy: SSL certificate expires soon | Please check certificate. Less than {$ENVOY.CERT.MIN} days left until the next certificate being managed will expire. |
last(/Envoy Proxy by HTTP/envoy.server.days_until_first_cert_expiring)<{$ENVOY.CERT.MIN} |
Warning |
LLD rule Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster metrics discovery | Dependent item | envoy.lld.cluster Preprocessing
|
Item prototypes for Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, total | Current cluster membership total. |
Dependent item | envoy.cluster.membership_total["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, healthy | Current cluster healthy total (inclusive of both health checking and outlier detection). |
Dependent item | envoy.cluster.membership_healthy["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, unhealthy | Current cluster unhealthy. |
Calculated | envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"] |
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, degraded | Current cluster degraded total. |
Dependent item | envoy.cluster.membership_degraded["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Connections, total | Current cluster total connections. |
Dependent item | envoy.cluster.upstream_cx_total["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Connections, active | Current cluster total active connections. |
Dependent item | envoy.cluster.upstream_cx_active["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests total, rate | Current cluster request total per second. |
Dependent item | envoy.cluster.upstream_rq_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests timeout, rate | Current cluster requests that timed out waiting for a response per second. |
Dependent item | envoy.cluster.upstream_rq_timeout.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests completed, rate | Total upstream requests completed per second. |
Dependent item | envoy.cluster.upstream_rq_completed.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 2xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_2x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 3xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_3x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 4xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_4x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 5xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_5x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests pending | Total active requests pending a connection pool connection. |
Dependent item | envoy.cluster.upstream_rq_pending_active["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests active | Total active requests. |
Dependent item | envoy.cluster.upstream_rq_active["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Upstream bytes out, rate | Total sent connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_tx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Upstream bytes in, rate | Total received connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_rx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
Trigger prototypes for Cluster metrics discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: There are unhealthy clusters | last(/Envoy Proxy by HTTP/envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"]) > 0 |
Average |
LLD rule Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listeners metrics discovery | Dependent item | envoy.lld.listeners Preprocessing
|
Item prototypes for Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Connections, active | Total active connections. |
Dependent item | envoy.listener.downstream_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
| Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.listener.downstream_cx_total.rate["{#LISTENER_ADDRESS}"] Preprocessing
|
| Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Sockets, undergoing | Sockets currently undergoing listener filter processing. |
Dependent item | envoy.listener.downstream_pre_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
LLD rule HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP metrics discovery | Dependent item | envoy.lld.http Preprocessing
|
Item prototypes for HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests, rate | Total active connections per second. |
Dependent item | envoy.http.downstream_rq_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests, active | Total active requests. |
Dependent item | envoy.http.downstream_rq_active["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests timeout, rate | Total requests closed due to a timeout on the request path per second. |
Dependent item | envoy.http.downstream_rq_timeout["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.http.downstream_cx_total["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Connections, active | Total active connections. |
Dependent item | envoy.http.downstream_cx_active["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Bytes in, rate | Total bytes received per second. |
Dependent item | envoy.http.downstream_cx_rx_bytes_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Bytes out, rate | Total bytes sent per second. |
Dependent item | envoy.http.downstream_cx_tx_bytes_tota.rate["{#CONN_MANAGER}"] Preprocessing
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Envoy Proxy by HTTP
Overview
For Zabbix version: 6.2 and higher
The template to monitor Envoy Proxy by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Envoy Proxy by HTTP — collects metrics by HTTP agent from metrics endpoint {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus).
This template was tested on:
- Envoy Proxy, version 1.20.2
Setup
See Zabbix template operation for basic instructions.
Internal service metrics are collected from {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus). https://www.envoyproxy.io/docs/envoy/v1.20.0/operations/stats_overview
Don't forget to change macros {$ENVOY.URL}, {$ENVOY.METRICS.PATH}.
Also, see the Macros section for a list of macros used to set trigger values.
NOTE. Some metrics may not be collected depending on your Envoy Proxy instance version and configuration.
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.CERT.MIN} | Minimum number of days before certificate expiration used for trigger expression. |
7 |
| {$ENVOY.METRICS.PATH} | The path Zabbix will scrape metrics in prometheus format from. |
/stats/prometheus |
| {$ENVOY.URL} | Instance URL. |
http://localhost:9901 |
Template links
There are no template links in this template.
Discovery rules
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster metrics discovery | - |
DEPENDENT | envoy.lld.cluster Preprocessing: - PROMETHEUS_TO_JSON - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
| HTTP metrics discovery | - |
DEPENDENT | envoy.lld.http Preprocessing: - PROMETHEUS_TO_JSON - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
| Listeners metrics discovery | - |
DEPENDENT | envoy.lld.listeners Preprocessing: - PROMETHEUS_TO_JSON - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
Items collected
| Group | Name | Description | Type | Key and additional info |
|---|---|---|---|---|
| Envoy Proxy | Envoy Proxy: Server state | State of the server. Live - (default) Server is live and serving traffic. Draining - Server is draining listeners in response to external health checks failing. Pre initializing - Server has not yet completed cluster manager initialization. Initializing - Server is running the cluster manager initialization callbacks (e.g., RDS). |
DEPENDENT | envoy.server.state Preprocessing: - PROMETHEUS_PATTERN: - DISCARD_UNCHANGED_HEARTBEAT: |
| Envoy Proxy | Envoy Proxy: Server live | 1 if the server is not currently draining, 0 otherwise. |
DEPENDENT | envoy.server.live Preprocessing: - PROMETHEUS_PATTERN: - DISCARD_UNCHANGED_HEARTBEAT: |
| Envoy Proxy | Envoy Proxy: Uptime | Current server uptime in seconds. |
DEPENDENT | envoy.server.uptime Preprocessing: - PROMETHEUS_PATTERN: ⛔️ON_FAIL: |
| Envoy Proxy | Envoy Proxy: Certificate expiration, day before | Number of days until the next certificate being managed will expire. |
DEPENDENT | envoy.server.days_until_first_cert_expiring Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Server concurrency | Number of worker threads. |
DEPENDENT | envoy.server.concurrency Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Memory allocated | Current amount of allocated memory in bytes. Total of both new and old Envoy processes on hot restart. |
DEPENDENT | envoy.server.memory_allocated Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Memory heap size | Current reserved heap size in bytes. New Envoy process heap size on hot restart. |
DEPENDENT | envoy.server.memory_heap_size Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Memory physical size | Current estimate of total bytes of the physical memory. New Envoy process physical memory size on hot restart. |
DEPENDENT | envoy.server.memory_physical_size Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Filesystem, flushed by timer rate | Total number of times internal flush buffers are written to a file due to flush timeout per second. |
DEPENDENT | envoy.filesystem.flushed_by_timer.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Filesystem, write completed rate | Total number of times a file was written per second. |
DEPENDENT | envoy.filesystem.write_completed.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Filesystem, write failed rate | Total number of times an error occurred during a file write operation per second. |
DEPENDENT | envoy.filesystem.write_failed.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Filesystem, reopen failed rate | Total number of times a file was failed to be opened per second. |
DEPENDENT | envoy.filesystem.reopen_failed.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Connections, total | Total connections of both new and old Envoy processes. |
DEPENDENT | envoy.server.total_connections Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Connections, parent | Total connections of the old Envoy process on hot restart. |
DEPENDENT | envoy.server.parent_connections Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Clusters, warming | Number of currently warming (not active) clusters. |
DEPENDENT | envoy.cluster_manager.warming_clusters Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Clusters, active | Number of currently active (warmed) clusters. |
DEPENDENT | envoy.cluster_manager.active_clusters Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Clusters, added rate | Total clusters added (either via static config or CDS) per second. |
DEPENDENT | envoy.cluster_manager.cluster_added.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Clusters, modified rate | Total clusters modified (via CDS) per second. |
DEPENDENT | envoy.cluster_manager.cluster_modified.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Clusters, removed rate | Total clusters removed (via CDS) per second. |
DEPENDENT | envoy.cluster_manager.cluster_removed.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Clusters, updates rate | Total cluster updates per second. |
DEPENDENT | envoy.cluster_manager.cluster_updated.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Listeners, active | Number of currently active listeners. |
DEPENDENT | envoy.listener_manager.total_listeners_active Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Listeners, draining | Number of currently draining listeners. |
DEPENDENT | envoy.listener_manager.total_listeners_draining Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Listener, warming | Number of currently warming listeners. |
DEPENDENT | envoy.listener_manager.total_listeners_warming Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Listener manager, initialized | A boolean (1 if started and 0 otherwise) that indicates whether listeners have been initialized on workers. |
DEPENDENT | envoy.listener_manager.workers_started Preprocessing: - PROMETHEUS_PATTERN: - DISCARD_UNCHANGED_HEARTBEAT: |
| Envoy Proxy | Envoy Proxy: Listeners, create failure | Total failed listener object additions to workers per second. |
DEPENDENT | envoy.listener_manager.listener_create_failure.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Listeners, create success | Total listener objects successfully added to workers per second. |
DEPENDENT | envoy.listener_manager.listener_create_success.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Listeners, added | Total listeners added (either via static config or LDS) per second. |
DEPENDENT | envoy.listener_manager.listener_added.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Listeners, stopped | Total listeners stopped per second. |
DEPENDENT | envoy.listener_manager.listener_stopped.rate Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, total | Current cluster membership total. |
DEPENDENT | envoy.cluster.membership_total["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, healthy | Current cluster healthy total (inclusive of both health checking and outlier detection). |
DEPENDENT | envoy.cluster.membership_healthy["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, unhealthy | Current cluster unhealthy. |
CALCULATED | envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"] Expression: last(//envoy.cluster.membership_total["{#CLUSTER_NAME}"]) - last(//envoy.cluster.membership_healthy["{#CLUSTER_NAME}"]) |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, degraded | Current cluster degraded total. |
DEPENDENT | envoy.cluster.membership_degraded["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Connections, total | Current cluster total connections. |
DEPENDENT | envoy.cluster.upstream_cx_total["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Connections, active | Current cluster total active connections. |
DEPENDENT | envoy.cluster.upstream_cx_active["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests total, rate | Current cluster request total per second. |
DEPENDENT | envoy.cluster.upstream_rq_total.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests timeout, rate | Current cluster requests that timed out waiting for a response per second. |
DEPENDENT | envoy.cluster.upstream_rq_timeout.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests completed, rate | Total upstream requests completed per second. |
DEPENDENT | envoy.cluster.upstream_rq_completed.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 2xx, rate | Aggregate HTTP response codes per second. |
DEPENDENT | envoy.cluster.upstream_rq_2x.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 3xx, rate | Aggregate HTTP response codes per second. |
DEPENDENT | envoy.cluster.upstream_rq_3x.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 4xx, rate | Aggregate HTTP response codes per second. |
DEPENDENT | envoy.cluster.upstream_rq_4x.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 5xx, rate | Aggregate HTTP response codes per second. |
DEPENDENT | envoy.cluster.upstream_rq_5x.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests pending | Total active requests pending a connection pool connection. |
DEPENDENT | envoy.cluster.upstream_rq_pending_active["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests active | Total active requests. |
DEPENDENT | envoy.cluster.upstream_rq_active["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Upstream bytes out, rate | Total sent connection bytes per second. |
DEPENDENT | envoy.cluster.upstream_cx_tx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Upstream bytes in, rate | Total received connection bytes per second. |
DEPENDENT | envoy.cluster.upstream_cx_rx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Connections, active | Total active connections. |
DEPENDENT | envoy.listener.downstream_cx_active["{#LISTENER_ADDRESS}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Connections, rate | Total connections per second. |
DEPENDENT | envoy.listener.downstream_cx_total.rate["{#LISTENER_ADDRESS}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Sockets, undergoing | Sockets currently undergoing listener filter processing. |
DEPENDENT | envoy.listener.downstream_pre_cx_active["{#LISTENER_ADDRESS}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests, rate | Total active connections per second. |
DEPENDENT | envoy.http.downstream_rq_total.rate["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests, active | Total active requests. |
DEPENDENT | envoy.http.downstream_rq_active["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests timeout, rate | Total requests closed due to a timeout on the request path per second. |
DEPENDENT | envoy.http.downstream_rq_timeout["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Connections, rate | Total connections per second. |
DEPENDENT | envoy.http.downstream_cx_total["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Connections, active | Total active connections. |
DEPENDENT | envoy.http.downstream_cx_active["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Bytes in, rate | Total bytes received per second. |
DEPENDENT | envoy.http.downstream_cx_rx_bytes_total.rate["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Envoy Proxy | Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Bytes out, rate | Total bytes sent per second. |
DEPENDENT | envoy.http.downstream_cx_tx_bytes_tota.rate["{#CONN_MANAGER}"] Preprocessing: - PROMETHEUS_PATTERN: - CHANGE_PER_SECOND |
| Zabbix raw items | Envoy Proxy: Get node metrics | Get server metrics. |
HTTP_AGENT | envoy.get_metrics Preprocessing: - CHECK_NOT_SUPPORTED ⛔️ON_FAIL: |
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: Server state is not live | - |
last(/Envoy Proxy by HTTP/envoy.server.state) > 0 |
AVERAGE | |
| Envoy Proxy: Service has been restarted | Uptime is less than 10 minutes. |
last(/Envoy Proxy by HTTP/envoy.server.uptime)<10m |
INFO | Manual close: YES |
| Envoy Proxy: Failed to fetch metrics data | Zabbix has not received data for items for the last 10 minutes. |
nodata(/Envoy Proxy by HTTP/envoy.server.uptime,10m)=1 |
WARNING | Manual close: YES |
| Envoy Proxy: SSL certificate expires soon | Please check certificate. Less than {$ENVOY.CERT.MIN} days left until the next certificate being managed will expire. |
last(/Envoy Proxy by HTTP/envoy.server.days_until_first_cert_expiring)<{$ENVOY.CERT.MIN} |
WARNING | |
| Envoy Proxy: There are unhealthy clusters | - |
last(/Envoy Proxy by HTTP/envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"]) > 0 |
AVERAGE |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template or ask for help with it at ZABBIX forums.
Envoy Proxy by HTTP
Overview
The template to monitor Envoy Proxy by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
Template Envoy Proxy by HTTP - collects metrics by HTTP agent from metrics endpoint {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus).
Requirements
Zabbix version: 6.0 and higher.
Tested versions
This template has been tested on:
- Envoy Proxy 1.20.2
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Internal service metrics are collected from {$ENVOY.METRICS.PATH} endpoint (default: /stats/prometheus). https://www.envoyproxy.io/docs/envoy/v1.20.0/operations/stats_overview
Don't forget to change macros {$ENVOY.URL}, {$ENVOY.METRICS.PATH}. Also, see the Macros section for a list of macros used to set trigger values.
NOTE. Some metrics may not be collected depending on your Envoy Proxy instance version and configuration.
Macros used
| Name | Description | Default |
|---|---|---|
| {$ENVOY.URL} | Instance URL. |
http://localhost:9901 |
| {$ENVOY.METRICS.PATH} | The path Zabbix will scrape metrics in prometheus format from. |
/stats/prometheus |
| {$ENVOY.CERT.MIN} | Minimum number of days before certificate expiration used for trigger expression. |
7 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: Get node metrics | Get server metrics. |
HTTP agent | envoy.get_metrics Preprocessing
|
| Envoy Proxy: Server state | State of the server. Live - (default) Server is live and serving traffic. Draining - Server is draining listeners in response to external health checks failing. Pre initializing - Server has not yet completed cluster manager initialization. Initializing - Server is running the cluster manager initialization callbacks (e.g., RDS). |
Dependent item | envoy.server.state Preprocessing
|
| Envoy Proxy: Server live | 1 if the server is not currently draining, 0 otherwise. |
Dependent item | envoy.server.live Preprocessing
|
| Envoy Proxy: Uptime | Current server uptime in seconds. |
Dependent item | envoy.server.uptime Preprocessing
|
| Envoy Proxy: Certificate expiration, day before | Number of days until the next certificate being managed will expire. |
Dependent item | envoy.server.days_until_first_cert_expiring Preprocessing
|
| Envoy Proxy: Server concurrency | Number of worker threads. |
Dependent item | envoy.server.concurrency Preprocessing
|
| Envoy Proxy: Memory allocated | Current amount of allocated memory in bytes. Total of both new and old Envoy processes on hot restart. |
Dependent item | envoy.server.memory_allocated Preprocessing
|
| Envoy Proxy: Memory heap size | Current reserved heap size in bytes. New Envoy process heap size on hot restart. |
Dependent item | envoy.server.memory_heap_size Preprocessing
|
| Envoy Proxy: Memory physical size | Current estimate of total bytes of the physical memory. New Envoy process physical memory size on hot restart. |
Dependent item | envoy.server.memory_physical_size Preprocessing
|
| Envoy Proxy: Filesystem, flushed by timer rate | Total number of times internal flush buffers are written to a file due to flush timeout per second. |
Dependent item | envoy.filesystem.flushed_by_timer.rate Preprocessing
|
| Envoy Proxy: Filesystem, write completed rate | Total number of times a file was written per second. |
Dependent item | envoy.filesystem.write_completed.rate Preprocessing
|
| Envoy Proxy: Filesystem, write failed rate | Total number of times an error occurred during a file write operation per second. |
Dependent item | envoy.filesystem.write_failed.rate Preprocessing
|
| Envoy Proxy: Filesystem, reopen failed rate | Total number of times a file was failed to be opened per second. |
Dependent item | envoy.filesystem.reopen_failed.rate Preprocessing
|
| Envoy Proxy: Connections, total | Total connections of both new and old Envoy processes. |
Dependent item | envoy.server.total_connections Preprocessing
|
| Envoy Proxy: Connections, parent | Total connections of the old Envoy process on hot restart. |
Dependent item | envoy.server.parent_connections Preprocessing
|
| Envoy Proxy: Clusters, warming | Number of currently warming (not active) clusters. |
Dependent item | envoy.cluster_manager.warming_clusters Preprocessing
|
| Envoy Proxy: Clusters, active | Number of currently active (warmed) clusters. |
Dependent item | envoy.cluster_manager.active_clusters Preprocessing
|
| Envoy Proxy: Clusters, added rate | Total clusters added (either via static config or CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_added.rate Preprocessing
|
| Envoy Proxy: Clusters, modified rate | Total clusters modified (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_modified.rate Preprocessing
|
| Envoy Proxy: Clusters, removed rate | Total clusters removed (via CDS) per second. |
Dependent item | envoy.cluster_manager.cluster_removed.rate Preprocessing
|
| Envoy Proxy: Clusters, updates rate | Total cluster updates per second. |
Dependent item | envoy.cluster_manager.cluster_updated.rate Preprocessing
|
| Envoy Proxy: Listeners, active | Number of currently active listeners. |
Dependent item | envoy.listener_manager.total_listeners_active Preprocessing
|
| Envoy Proxy: Listeners, draining | Number of currently draining listeners. |
Dependent item | envoy.listener_manager.total_listeners_draining Preprocessing
|
| Envoy Proxy: Listener, warming | Number of currently warming listeners. |
Dependent item | envoy.listener_manager.total_listeners_warming Preprocessing
|
| Envoy Proxy: Listener manager, initialized | A boolean (1 if started and 0 otherwise) that indicates whether listeners have been initialized on workers. |
Dependent item | envoy.listener_manager.workers_started Preprocessing
|
| Envoy Proxy: Listeners, create failure | Total failed listener object additions to workers per second. |
Dependent item | envoy.listener_manager.listener_create_failure.rate Preprocessing
|
| Envoy Proxy: Listeners, create success | Total listener objects successfully added to workers per second. |
Dependent item | envoy.listener_manager.listener_create_success.rate Preprocessing
|
| Envoy Proxy: Listeners, added | Total listeners added (either via static config or LDS) per second. |
Dependent item | envoy.listener_manager.listener_added.rate Preprocessing
|
| Envoy Proxy: Listeners, stopped | Total listeners stopped per second. |
Dependent item | envoy.listener_manager.listener_stopped.rate Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: Server state is not live | last(/Envoy Proxy by HTTP/envoy.server.state) > 0 |
Average | ||
| Envoy Proxy: Service has been restarted | Uptime is less than 10 minutes. |
last(/Envoy Proxy by HTTP/envoy.server.uptime)<10m |
Info | Manual close: Yes |
| Envoy Proxy: Failed to fetch metrics data | Zabbix has not received data for items for the last 10 minutes. |
nodata(/Envoy Proxy by HTTP/envoy.server.uptime,10m)=1 |
Warning | Manual close: Yes |
| Envoy Proxy: SSL certificate expires soon | Please check certificate. Less than {$ENVOY.CERT.MIN} days left until the next certificate being managed will expire. |
last(/Envoy Proxy by HTTP/envoy.server.days_until_first_cert_expiring)<{$ENVOY.CERT.MIN} |
Warning |
LLD rule Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cluster metrics discovery | Dependent item | envoy.lld.cluster Preprocessing
|
Item prototypes for Cluster metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, total | Current cluster membership total. |
Dependent item | envoy.cluster.membership_total["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, healthy | Current cluster healthy total (inclusive of both health checking and outlier detection). |
Dependent item | envoy.cluster.membership_healthy["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, unhealthy | Current cluster unhealthy. |
Calculated | envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"] |
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Membership, degraded | Current cluster degraded total. |
Dependent item | envoy.cluster.membership_degraded["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Connections, total | Current cluster total connections. |
Dependent item | envoy.cluster.upstream_cx_total["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Connections, active | Current cluster total active connections. |
Dependent item | envoy.cluster.upstream_cx_active["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests total, rate | Current cluster request total per second. |
Dependent item | envoy.cluster.upstream_rq_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests timeout, rate | Current cluster requests that timed out waiting for a response per second. |
Dependent item | envoy.cluster.upstream_rq_timeout.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests completed, rate | Total upstream requests completed per second. |
Dependent item | envoy.cluster.upstream_rq_completed.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 2xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_2x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 3xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_3x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 4xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_4x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests 5xx, rate | Aggregate HTTP response codes per second. |
Dependent item | envoy.cluster.upstream_rq_5x.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests pending | Total active requests pending a connection pool connection. |
Dependent item | envoy.cluster.upstream_rq_pending_active["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Requests active | Total active requests. |
Dependent item | envoy.cluster.upstream_rq_active["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Upstream bytes out, rate | Total sent connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_tx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
| Envoy Proxy: Cluster ["{#CLUSTER_NAME}"]: Upstream bytes in, rate | Total received connection bytes per second. |
Dependent item | envoy.cluster.upstream_cx_rx_bytes_total.rate["{#CLUSTER_NAME}"] Preprocessing
|
Trigger prototypes for Cluster metrics discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Envoy Proxy: There are unhealthy clusters | last(/Envoy Proxy by HTTP/envoy.cluster.membership_unhealthy["{#CLUSTER_NAME}"]) > 0 |
Average |
LLD rule Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listeners metrics discovery | Dependent item | envoy.lld.listeners Preprocessing
|
Item prototypes for Listeners metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Connections, active | Total active connections. |
Dependent item | envoy.listener.downstream_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
| Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.listener.downstream_cx_total.rate["{#LISTENER_ADDRESS}"] Preprocessing
|
| Envoy Proxy: Listener ["{#LISTENER_ADDRESS}"]: Sockets, undergoing | Sockets currently undergoing listener filter processing. |
Dependent item | envoy.listener.downstream_pre_cx_active["{#LISTENER_ADDRESS}"] Preprocessing
|
LLD rule HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| HTTP metrics discovery | Dependent item | envoy.lld.http Preprocessing
|
Item prototypes for HTTP metrics discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests, rate | Total active connections per second. |
Dependent item | envoy.http.downstream_rq_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests, active | Total active requests. |
Dependent item | envoy.http.downstream_rq_active["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Requests timeout, rate | Total requests closed due to a timeout on the request path per second. |
Dependent item | envoy.http.downstream_rq_timeout["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Connections, rate | Total connections per second. |
Dependent item | envoy.http.downstream_cx_total["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Connections, active | Total active connections. |
Dependent item | envoy.http.downstream_cx_active["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Bytes in, rate | Total bytes received per second. |
Dependent item | envoy.http.downstream_cx_rx_bytes_total.rate["{#CONN_MANAGER}"] Preprocessing
|
| Envoy Proxy: HTTP ["{#CONN_MANAGER}"]: Bytes out, rate | Total bytes sent per second. |
Dependent item | envoy.http.downstream_cx_tx_bytes_tota.rate["{#CONN_MANAGER}"] Preprocessing
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums