| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | package envoy |
| 4 | |
| 5 | import ( |
| 6 | "fmt" |
| 7 | "strings" |
| 8 | |
| 9 | "github.com/netdata/netdata/go/plugins/plugin/framework/collectorapi" |
| 10 | |
| 11 | "github.com/prometheus/prometheus/model/labels" |
| 12 | ) |
| 13 | |
| 14 | const ( |
| 15 | prioServerState = collectorapi.Priority + iota |
| 16 | prioServerMemoryAllocatedSize |
| 17 | prioServerMemoryHeapSize |
| 18 | prioServerMemoryPhysicalSize |
| 19 | prioServerConnectionsCount |
| 20 | prioServerParentConnectionsCount |
| 21 | |
| 22 | prioClusterManagerClustersCount |
| 23 | prioClusterManagerClusterChangesRate |
| 24 | prioClusterManagerClusterUpdatesRate |
| 25 | prioClusterManagerClusterUpdatesVieMergeRate |
| 26 | prioClusterManagerClusterUpdatesMergeCancelledRate |
| 27 | prioClusterManagerClusterUpdatesOufOfMergeWindowsRate |
| 28 | |
| 29 | prioClusterMembershipEndpointsCount |
| 30 | prioClusterMembershipChangesRate |
| 31 | prioClusterMembershipUpdatesRate |
| 32 | |
| 33 | prioClusterUpstreamActiveConnectionsCount |
| 34 | prioClusterUpstreamConnectionsRate |
| 35 | prioClusterUpstreamHTTPConnectionsRate |
| 36 | prioClusterUpstreamDestroyedConnectionsRate |
| 37 | prioClusterUpstreamFailedConnectionsRate |
| 38 | prioClusterUpstreamTimedOutConnectionsRate |
| 39 | prioClusterUpstreamTrafficRate |
| 40 | prioClusterUpstreamBufferedSize |
| 41 | |
| 42 | prioClusterUpstreamActiveRequestsCount |
| 43 | prioClusterUpstreamRequestsRate |
| 44 | prioClusterUpstreamFailedRequestsRate |
| 45 | prioClusterUpstreamActivePendingRequestsCount |
| 46 | prioClusterUpstreamPendingRequestsRate |
| 47 | prioClusterUpstreamPendingFailedRequestsRate |
| 48 | prioClusterUpstreamRequestRetriesRate |
| 49 | prioClusterUpstreamRequestSuccessRetriesRate |
| 50 | prioClusterUpstreamRequestBackoffRetriesRate |
| 51 | |
| 52 | prioListenerManagerListenerCount |
| 53 | prioListenerManagerListenerChangesRate |
| 54 | prioListenerManagerListenerObjectEventsRate |
| 55 | |
| 56 | prioListenerAdminDownstreamActiveConnectionsCount |
| 57 | prioListenerAdminDownstreamConnectionsRate |
| 58 | prioListenerAdminDownstreamDestroyedConnectionsRate |
| 59 | prioListenerAdminDownstreamTimedOutConnectionsRate |
| 60 | prioListenerAdminDownstreamRejectedConnectionsRate |
| 61 | prioListenerAdminDownstreamFilterClosedByRemoteConnectionsRate |
| 62 | prioListenerAdminDownstreamFilterReadErrorsRate |
| 63 | prioListenerAdminDownstreamActiveSocketsCount |
| 64 | prioListenerAdminDownstreamTimedOutSocketsRate |
| 65 | |
| 66 | prioListenerDownstreamActiveConnectionsCount |
| 67 | prioListenerDownstreamConnectionsRate |
| 68 | prioListenerDownstreamDestroyedConnectionsRate |
| 69 | prioListenerDownstreamTimedOutConnectionsRate |
| 70 | prioListenerDownstreamRejectedConnectionsRate |
| 71 | prioListenerDownstreamFilterClosedByRemoteConnectionsRate |
| 72 | prioListenerDownstreamFilterReadErrorsRate |
| 73 | prioListenerDownstreamActiveSocketsCount |
| 74 | prioListenerDownstreamTimedOutSocketsRate |
| 75 | |
| 76 | prioServerUptime |
| 77 | ) |
| 78 | |
| 79 | var ( |
| 80 | serverChartsTmpl = collectorapi.Charts{ |
| 81 | serverStateChartTmpl.Copy(), |
| 82 | |
| 83 | serverMemoryAllocatedSizeChartTmpl.Copy(), |
| 84 | serverMemoryHeapSizeChartTmpl.Copy(), |
| 85 | serverMemoryPhysicalSizeChartTmpl.Copy(), |
| 86 | |
| 87 | serverConnectionsCountChartTmpl.Copy(), |
| 88 | serverParentConnectionsCountChartTmpl.Copy(), |
| 89 | |
| 90 | serverUptimeChartTmpl.Copy(), |
| 91 | } |
| 92 | serverStateChartTmpl = collectorapi.Chart{ |
| 93 | ID: "server_state_%s", |
| 94 | Title: "Server current state", |
| 95 | Units: "state", |
| 96 | Fam: "server", |
| 97 | Ctx: "envoy.server_state", |
| 98 | Priority: prioServerState, |
| 99 | Dims: collectorapi.Dims{ |
| 100 | {ID: "envoy_server_state_live_%s", Name: "live"}, |
| 101 | {ID: "envoy_server_state_draining_%s", Name: "draining"}, |
| 102 | {ID: "envoy_server_state_pre_initializing_%s", Name: "pre_initializing"}, |
| 103 | {ID: "envoy_server_state_initializing_%s", Name: "initializing"}, |
| 104 | }, |
| 105 | } |
| 106 | serverConnectionsCountChartTmpl = collectorapi.Chart{ |
| 107 | ID: "server_connections_%s", |
| 108 | Title: "Server current connections", |
| 109 | Units: "connections", |
| 110 | Fam: "server", |
| 111 | Ctx: "envoy.server_connections_count", |
| 112 | Priority: prioServerConnectionsCount, |
| 113 | Dims: collectorapi.Dims{ |
| 114 | {ID: "envoy_server_total_connections_%s", Name: "connections"}, |
| 115 | }, |
| 116 | } |
| 117 | serverParentConnectionsCountChartTmpl = collectorapi.Chart{ |
| 118 | ID: "server_parent_connections_%s", |
| 119 | Title: "Server current parent connections", |
| 120 | Units: "connections", |
| 121 | Fam: "server", |
| 122 | Ctx: "envoy.server_parent_connections_count", |
| 123 | Priority: prioServerParentConnectionsCount, |
| 124 | Dims: collectorapi.Dims{ |
| 125 | {ID: "envoy_server_parent_connections_%s", Name: "connections"}, |
| 126 | }, |
| 127 | } |
| 128 | serverMemoryAllocatedSizeChartTmpl = collectorapi.Chart{ |
| 129 | ID: "server_memory_allocated_size_%s", |
| 130 | Title: "Server memory allocated size", |
| 131 | Units: "bytes", |
| 132 | Fam: "server", |
| 133 | Ctx: "envoy.server_memory_allocated_size", |
| 134 | Priority: prioServerMemoryAllocatedSize, |
| 135 | Dims: collectorapi.Dims{ |
| 136 | {ID: "envoy_server_memory_allocated_%s", Name: "allocated"}, |
| 137 | }, |
| 138 | } |
| 139 | serverMemoryHeapSizeChartTmpl = collectorapi.Chart{ |
| 140 | ID: "server_memory_heap_size_%s", |
| 141 | Title: "Server memory heap size", |
| 142 | Units: "bytes", |
| 143 | Fam: "server", |
| 144 | Ctx: "envoy.server_memory_heap_size", |
| 145 | Priority: prioServerMemoryHeapSize, |
| 146 | Dims: collectorapi.Dims{ |
| 147 | {ID: "envoy_server_memory_heap_size_%s", Name: "heap"}, |
| 148 | }, |
| 149 | } |
| 150 | serverMemoryPhysicalSizeChartTmpl = collectorapi.Chart{ |
| 151 | ID: "server_memory_physical_size_%s", |
| 152 | Title: "Server memory physical size", |
| 153 | Units: "bytes", |
| 154 | Fam: "server", |
| 155 | Ctx: "envoy.server_memory_physical_size", |
| 156 | Priority: prioServerMemoryPhysicalSize, |
| 157 | Dims: collectorapi.Dims{ |
| 158 | {ID: "envoy_server_memory_physical_size_%s", Name: "physical"}, |
| 159 | }, |
| 160 | } |
| 161 | serverUptimeChartTmpl = collectorapi.Chart{ |
| 162 | ID: "server_uptime_%s", |
| 163 | Title: "Server uptime", |
| 164 | Units: "seconds", |
| 165 | Fam: "uptime", |
| 166 | Ctx: "envoy.server_uptime", |
| 167 | Priority: prioServerUptime, |
| 168 | Dims: collectorapi.Dims{ |
| 169 | {ID: "envoy_server_uptime_%s", Name: "uptime"}, |
| 170 | }, |
| 171 | } |
| 172 | ) |
| 173 | |
| 174 | var ( |
| 175 | clusterManagerChartsTmpl = collectorapi.Charts{ |
| 176 | clusterManagerClusterCountChartTmpl.Copy(), |
| 177 | clusterManagerClusterChangesRateChartTmpl.Copy(), |
| 178 | clusterManagerClusterUpdatesRateChartTmpl.Copy(), |
| 179 | clusterManagerClusterUpdatesViaMergeRateChartTmpl.Copy(), |
| 180 | clusterManagerClusterUpdatesMergeCancelledRateChartTmpl.Copy(), |
| 181 | clusterManagerClusterUpdatesOutOfMergeWindowRateChartTmpl.Copy(), |
| 182 | } |
| 183 | clusterManagerClusterCountChartTmpl = collectorapi.Chart{ |
| 184 | ID: "cluster_manager_cluster_count_%s", |
| 185 | Title: "Cluster manager current clusters", |
| 186 | Units: "clusters", |
| 187 | Fam: "cluster mgr", |
| 188 | Ctx: "envoy.cluster_manager_cluster_count", |
| 189 | Priority: prioClusterManagerClustersCount, |
| 190 | Dims: collectorapi.Dims{ |
| 191 | {ID: "envoy_cluster_manager_active_clusters_%s", Name: "active"}, |
| 192 | {ID: "envoy_cluster_manager_warming_clusters_%s", Name: "not_active"}, |
| 193 | }, |
| 194 | } |
| 195 | clusterManagerClusterChangesRateChartTmpl = collectorapi.Chart{ |
| 196 | ID: "cluster_manager_cluster_changes_%s", |
| 197 | Title: "Cluster manager cluster changes", |
| 198 | Units: "clusters/s", |
| 199 | Fam: "cluster mgr", |
| 200 | Ctx: "envoy.cluster_manager_cluster_changes_rate", |
| 201 | Priority: prioClusterManagerClusterChangesRate, |
| 202 | Dims: collectorapi.Dims{ |
| 203 | {ID: "envoy_cluster_manager_cluster_added_%s", Name: "added", Algo: collectorapi.Incremental}, |
| 204 | {ID: "envoy_cluster_manager_cluster_modified_%s", Name: "modified", Algo: collectorapi.Incremental}, |
| 205 | {ID: "envoy_cluster_manager_cluster_removed_%s", Name: "removed", Algo: collectorapi.Incremental}, |
| 206 | }, |
| 207 | } |
| 208 | clusterManagerClusterUpdatesRateChartTmpl = collectorapi.Chart{ |
| 209 | ID: "cluster_manager_cluster_updates_%s", |
| 210 | Title: "Cluster manager updates", |
| 211 | Units: "updates/s", |
| 212 | Fam: "cluster mgr", |
| 213 | Ctx: "envoy.cluster_manager_cluster_updates_rate", |
| 214 | Priority: prioClusterManagerClusterUpdatesRate, |
| 215 | Dims: collectorapi.Dims{ |
| 216 | {ID: "envoy_cluster_manager_cluster_updated_%s", Name: "cluster", Algo: collectorapi.Incremental}, |
| 217 | }, |
| 218 | } |
| 219 | clusterManagerClusterUpdatesViaMergeRateChartTmpl = collectorapi.Chart{ |
| 220 | ID: "cluster_manager_cluster_updated_via_merge_%s", |
| 221 | Title: "Cluster manager updates applied as merged updates", |
| 222 | Units: "updates/s", |
| 223 | Fam: "cluster mgr", |
| 224 | Ctx: "envoy.cluster_manager_cluster_updated_via_merge_rate", |
| 225 | Priority: prioClusterManagerClusterUpdatesVieMergeRate, |
| 226 | Dims: collectorapi.Dims{ |
| 227 | {ID: "envoy_cluster_manager_cluster_updated_via_merge_%s", Name: "via_merge", Algo: collectorapi.Incremental}, |
| 228 | }, |
| 229 | } |
| 230 | clusterManagerClusterUpdatesMergeCancelledRateChartTmpl = collectorapi.Chart{ |
| 231 | ID: "cluster_manager_update_merge_cancelled_%s", |
| 232 | Title: "Cluster manager cancelled merged updates", |
| 233 | Units: "updates/s", |
| 234 | Fam: "cluster mgr", |
| 235 | Ctx: "envoy.cluster_manager_update_merge_cancelled_rate", |
| 236 | Priority: prioClusterManagerClusterUpdatesMergeCancelledRate, |
| 237 | Dims: collectorapi.Dims{ |
| 238 | {ID: "envoy_cluster_manager_update_merge_cancelled_%s", Name: "merge_cancelled", Algo: collectorapi.Incremental}, |
| 239 | }, |
| 240 | } |
| 241 | clusterManagerClusterUpdatesOutOfMergeWindowRateChartTmpl = collectorapi.Chart{ |
| 242 | ID: "cluster_manager_update_out_of_merge_window_%s", |
| 243 | Title: "Cluster manager out of a merge window updates", |
| 244 | Units: "updates/s", |
| 245 | Fam: "cluster mgr", |
| 246 | Ctx: "envoy.cluster_manager_update_out_of_merge_window_rate", |
| 247 | Priority: prioClusterManagerClusterUpdatesOufOfMergeWindowsRate, |
| 248 | Dims: collectorapi.Dims{ |
| 249 | {ID: "envoy_cluster_manager_update_out_of_merge_window_%s", Name: "out_of_merge_window", Algo: collectorapi.Incremental}, |
| 250 | }, |
| 251 | } |
| 252 | ) |
| 253 | |
| 254 | var ( |
| 255 | clusterUpstreamChartsTmpl = collectorapi.Charts{ |
| 256 | clusterUpstreamActiveConnectionsCountChartTmpl.Copy(), |
| 257 | clusterUpstreamConnectionsRateChartTmpl.Copy(), |
| 258 | clusterUpstreamHTTPConnectionsRateChartTmpl.Copy(), |
| 259 | clusterUpstreamDestroyedConnectionsRateChartTmpl.Copy(), |
| 260 | clusterUpstreamFailedConnectionsRateChartTmpl.Copy(), |
| 261 | clusterUpstreamTimedOutConnectionsRateChartTmpl.Copy(), |
| 262 | clusterUpstreamTrafficRateChartTmpl.Copy(), |
| 263 | clusterUpstreamBufferedSizeChartTmpl.Copy(), |
| 264 | |
| 265 | clusterUpstreamActiveRequestsCountChartTmpl.Copy(), |
| 266 | clusterUpstreamRequestsRateChartTmpl.Copy(), |
| 267 | clusterUpstreamFailedRequestsRateChartTmpl.Copy(), |
| 268 | clusterUpstreamActivePendingRequestsCountChartTmpl.Copy(), |
| 269 | clusterUpstreamPendingRequestsRateChartTmpl.Copy(), |
| 270 | clusterUpstreamPendingFailedRequestsRateChartTmpl.Copy(), |
| 271 | clusterUpstreamRequestRetriesRateChartTmpl.Copy(), |
| 272 | clusterUpstreamRequestSuccessRetriesRateChartTmpl.Copy(), |
| 273 | clusterUpstreamRequestRetriesBackoffRateChartTmpl.Copy(), |
| 274 | |
| 275 | clusterMembershipEndpointsCountChartTmpl.Copy(), |
| 276 | clusterMembershipChangesRateChartTmpl.Copy(), |
| 277 | clusterMembershipUpdatesRateChartTmpl.Copy(), |
| 278 | } |
| 279 | |
| 280 | clusterUpstreamActiveConnectionsCountChartTmpl = collectorapi.Chart{ |
| 281 | ID: "cluster_upstream_cx_active_%s", |
| 282 | Title: "Cluster upstream current active connections", |
| 283 | Units: "connections", |
| 284 | Fam: "upstream conns", |
| 285 | Ctx: "envoy.cluster_upstream_cx_active_count", |
| 286 | Priority: prioClusterUpstreamActiveConnectionsCount, |
| 287 | Dims: collectorapi.Dims{ |
| 288 | {ID: "envoy_cluster_upstream_cx_active_%s", Name: "active"}, |
| 289 | }, |
| 290 | } |
| 291 | clusterUpstreamConnectionsRateChartTmpl = collectorapi.Chart{ |
| 292 | ID: "cluster_upstream_cx_total_%s", |
| 293 | Title: "Cluster upstream connections", |
| 294 | Units: "connections/s", |
| 295 | Fam: "upstream conns", |
| 296 | Ctx: "envoy.cluster_upstream_cx_rate", |
| 297 | Priority: prioClusterUpstreamConnectionsRate, |
| 298 | Dims: collectorapi.Dims{ |
| 299 | {ID: "envoy_cluster_upstream_cx_total_%s", Name: "created", Algo: collectorapi.Incremental}, |
| 300 | }, |
| 301 | } |
| 302 | clusterUpstreamHTTPConnectionsRateChartTmpl = collectorapi.Chart{ |
| 303 | ID: "cluster_upstream_cx_http_total_%s", |
| 304 | Title: "Cluster upstream connections by HTTP version", |
| 305 | Units: "connections/s", |
| 306 | Fam: "upstream conns", |
| 307 | Ctx: "envoy.cluster_upstream_cx_http_rate", |
| 308 | Priority: prioClusterUpstreamHTTPConnectionsRate, |
| 309 | Dims: collectorapi.Dims{ |
| 310 | {ID: "envoy_cluster_upstream_cx_http1_total_%s", Name: "http1", Algo: collectorapi.Incremental}, |
| 311 | {ID: "envoy_cluster_upstream_cx_http2_total_%s", Name: "http2", Algo: collectorapi.Incremental}, |
| 312 | {ID: "envoy_cluster_upstream_cx_http3_total_%s", Name: "http3", Algo: collectorapi.Incremental}, |
| 313 | }, |
| 314 | } |
| 315 | clusterUpstreamDestroyedConnectionsRateChartTmpl = collectorapi.Chart{ |
| 316 | ID: "cluster_upstream_cx_destroy_%s", |
| 317 | Title: "Cluster upstream destroyed connections", |
| 318 | Units: "connections/s", |
| 319 | Fam: "upstream conns", |
| 320 | Ctx: "envoy.cluster_upstream_cx_destroy_rate", |
| 321 | Priority: prioClusterUpstreamDestroyedConnectionsRate, |
| 322 | Dims: collectorapi.Dims{ |
| 323 | {ID: "envoy_cluster_upstream_cx_destroy_local_%s", Name: "local", Algo: collectorapi.Incremental}, |
| 324 | {ID: "envoy_cluster_upstream_cx_destroy_remote_%s", Name: "remote", Algo: collectorapi.Incremental}, |
| 325 | }, |
| 326 | } |
| 327 | clusterUpstreamFailedConnectionsRateChartTmpl = collectorapi.Chart{ |
| 328 | ID: "cluster_upstream_cx_connect_fail_%s", |
| 329 | Title: "Cluster upstream failed connections", |
| 330 | Units: "connections/s", |
| 331 | Fam: "upstream conns", |
| 332 | Ctx: "envoy.cluster_upstream_cx_connect_fail_rate", |
| 333 | Priority: prioClusterUpstreamFailedConnectionsRate, |
| 334 | Dims: collectorapi.Dims{ |
| 335 | {ID: "envoy_cluster_upstream_cx_connect_fail_%s", Name: "failed", Algo: collectorapi.Incremental}, |
| 336 | }, |
| 337 | } |
| 338 | clusterUpstreamTimedOutConnectionsRateChartTmpl = collectorapi.Chart{ |
| 339 | ID: "cluster_upstream_cx_connect_timeout_%s", |
| 340 | Title: "Cluster upstream timed out connections", |
| 341 | Units: "connections/s", |
| 342 | Fam: "upstream conns", |
| 343 | Ctx: "envoy.cluster_upstream_cx_connect_timeout_rate", |
| 344 | Priority: prioClusterUpstreamTimedOutConnectionsRate, |
| 345 | Dims: collectorapi.Dims{ |
| 346 | {ID: "envoy_cluster_upstream_cx_connect_timeout_%s", Name: "timeout", Algo: collectorapi.Incremental}, |
| 347 | }, |
| 348 | } |
| 349 | clusterUpstreamTrafficRateChartTmpl = collectorapi.Chart{ |
| 350 | ID: "cluster_upstream_cx_bytes_total_%s", |
| 351 | Title: "Cluster upstream connection traffic", |
| 352 | Units: "bytes/s", |
| 353 | Fam: "upstream traffic", |
| 354 | Ctx: "envoy.cluster_upstream_cx_bytes_rate", |
| 355 | Priority: prioClusterUpstreamTrafficRate, |
| 356 | Dims: collectorapi.Dims{ |
| 357 | {ID: "envoy_cluster_upstream_cx_rx_bytes_total_%s", Name: "received", Algo: collectorapi.Incremental}, |
| 358 | {ID: "envoy_cluster_upstream_cx_tx_bytes_total_%s", Name: "sent", Algo: collectorapi.Incremental}, |
| 359 | }, |
| 360 | } |
| 361 | clusterUpstreamBufferedSizeChartTmpl = collectorapi.Chart{ |
| 362 | ID: "cluster_upstream_cx_bytes_buffered_%s", |
| 363 | Title: "Cluster upstream current connection buffered size", |
| 364 | Units: "bytes", |
| 365 | Fam: "upstream traffic", |
| 366 | Ctx: "envoy.cluster_upstream_cx_bytes_buffered_size", |
| 367 | Priority: prioClusterUpstreamBufferedSize, |
| 368 | Dims: collectorapi.Dims{ |
| 369 | {ID: "envoy_cluster_upstream_cx_rx_bytes_buffered_%s", Name: "received"}, |
| 370 | {ID: "envoy_cluster_upstream_cx_tx_bytes_buffered_%s", Name: "send"}, |
| 371 | }, |
| 372 | } |
| 373 | |
| 374 | clusterUpstreamActiveRequestsCountChartTmpl = collectorapi.Chart{ |
| 375 | ID: "cluster_upstream_rq_active_%s", |
| 376 | Title: "Cluster upstream current active requests", |
| 377 | Units: "requests", |
| 378 | Fam: "upstream requests", |
| 379 | Ctx: "envoy.cluster_upstream_rq_active_count", |
| 380 | Priority: prioClusterUpstreamActiveRequestsCount, |
| 381 | Dims: collectorapi.Dims{ |
| 382 | {ID: "envoy_cluster_upstream_rq_active_%s", Name: "active"}, |
| 383 | }, |
| 384 | } |
| 385 | clusterUpstreamRequestsRateChartTmpl = collectorapi.Chart{ |
| 386 | ID: "cluster_upstream_rq_total_%s", |
| 387 | Title: "Cluster upstream requests", |
| 388 | Units: "requests/s", |
| 389 | Fam: "upstream requests", |
| 390 | Ctx: "envoy.cluster_upstream_rq_rate", |
| 391 | Priority: prioClusterUpstreamRequestsRate, |
| 392 | Dims: collectorapi.Dims{ |
| 393 | {ID: "envoy_cluster_upstream_rq_total_%s", Name: "requests", Algo: collectorapi.Incremental}, |
| 394 | }, |
| 395 | } |
| 396 | clusterUpstreamFailedRequestsRateChartTmpl = collectorapi.Chart{ |
| 397 | ID: "cluster_upstream_rq_failed_total_%s", |
| 398 | Title: "Cluster upstream failed requests", |
| 399 | Units: "requests/s", |
| 400 | Fam: "upstream requests", |
| 401 | Ctx: "envoy.cluster_upstream_rq_failed_rate", |
| 402 | Priority: prioClusterUpstreamFailedRequestsRate, |
| 403 | Dims: collectorapi.Dims{ |
| 404 | {ID: "envoy_cluster_upstream_rq_cancelled_%s", Name: "cancelled", Algo: collectorapi.Incremental}, |
| 405 | {ID: "envoy_cluster_upstream_rq_maintenance_mode_%s", Name: "maintenance_mode", Algo: collectorapi.Incremental}, |
| 406 | {ID: "envoy_cluster_upstream_rq_timeout_%s", Name: "timeout", Algo: collectorapi.Incremental}, |
| 407 | {ID: "envoy_cluster_upstream_rq_max_duration_reached_%s", Name: "max_duration_reached", Algo: collectorapi.Incremental}, |
| 408 | {ID: "envoy_cluster_upstream_rq_per_try_timeout_%s", Name: "per_try_timeout", Algo: collectorapi.Incremental}, |
| 409 | {ID: "envoy_cluster_upstream_rq_rx_reset_%s", Name: "reset_local", Algo: collectorapi.Incremental}, |
| 410 | {ID: "envoy_cluster_upstream_rq_tx_reset_%s", Name: "reset_remote", Algo: collectorapi.Incremental}, |
| 411 | }, |
| 412 | } |
| 413 | clusterUpstreamActivePendingRequestsCountChartTmpl = collectorapi.Chart{ |
| 414 | ID: "cluster_upstream_rq_pending_active_%s", |
| 415 | Title: "Cluster upstream current active pending requests", |
| 416 | Units: "requests", |
| 417 | Fam: "upstream requests", |
| 418 | Ctx: "envoy.cluster_upstream_rq_pending_active_count", |
| 419 | Priority: prioClusterUpstreamActivePendingRequestsCount, |
| 420 | Dims: collectorapi.Dims{ |
| 421 | {ID: "envoy_cluster_upstream_rq_pending_active_%s", Name: "active_pending"}, |
| 422 | }, |
| 423 | } |
| 424 | clusterUpstreamPendingRequestsRateChartTmpl = collectorapi.Chart{ |
| 425 | ID: "cluster_upstream_rq_pending_total_%s", |
| 426 | Title: "Cluster upstream pending requests", |
| 427 | Units: "requests/s", |
| 428 | Fam: "upstream requests", |
| 429 | Ctx: "envoy.cluster_upstream_rq_pending_rate", |
| 430 | Priority: prioClusterUpstreamPendingRequestsRate, |
| 431 | Dims: collectorapi.Dims{ |
| 432 | {ID: "envoy_cluster_upstream_rq_pending_total_%s", Name: "pending", Algo: collectorapi.Incremental}, |
| 433 | }, |
| 434 | } |
| 435 | clusterUpstreamPendingFailedRequestsRateChartTmpl = collectorapi.Chart{ |
| 436 | ID: "cluster_upstream_rq_pending_failed_total_%s", |
| 437 | Title: "Cluster upstream failed pending requests", |
| 438 | Units: "requests/s", |
| 439 | Fam: "upstream requests", |
| 440 | Ctx: "envoy.cluster_upstream_rq_pending_failed_rate", |
| 441 | Priority: prioClusterUpstreamPendingFailedRequestsRate, |
| 442 | Dims: collectorapi.Dims{ |
| 443 | {ID: "envoy_cluster_upstream_rq_pending_overflow_%s", Name: "overflow", Algo: collectorapi.Incremental}, |
| 444 | {ID: "envoy_cluster_upstream_rq_pending_failure_eject_%s", Name: "failure_eject", Algo: collectorapi.Incremental}, |
| 445 | }, |
| 446 | } |
| 447 | clusterUpstreamRequestRetriesRateChartTmpl = collectorapi.Chart{ |
| 448 | ID: "cluster_upstream_rq_retry_%s", |
| 449 | Title: "Cluster upstream request retries", |
| 450 | Units: "retries/s", |
| 451 | Fam: "upstream requests", |
| 452 | Ctx: "envoy.cluster_upstream_rq_retry_rate", |
| 453 | Priority: prioClusterUpstreamRequestRetriesRate, |
| 454 | Dims: collectorapi.Dims{ |
| 455 | {ID: "envoy_cluster_upstream_rq_retry_%s", Name: "request", Algo: collectorapi.Incremental}, |
| 456 | }, |
| 457 | } |
| 458 | clusterUpstreamRequestSuccessRetriesRateChartTmpl = collectorapi.Chart{ |
| 459 | ID: "cluster_upstream_rq_retry_success_%s", |
| 460 | Title: "Cluster upstream request successful retries", |
| 461 | Units: "retries/s", |
| 462 | Fam: "upstream requests", |
| 463 | Ctx: "envoy.cluster_upstream_rq_retry_success_rate", |
| 464 | Priority: prioClusterUpstreamRequestSuccessRetriesRate, |
| 465 | Dims: collectorapi.Dims{ |
| 466 | {ID: "envoy_cluster_upstream_rq_retry_success_%s", Name: "success", Algo: collectorapi.Incremental}, |
| 467 | }, |
| 468 | } |
| 469 | clusterUpstreamRequestRetriesBackoffRateChartTmpl = collectorapi.Chart{ |
| 470 | ID: "cluster_upstream_rq_retry_backoff_%s", |
| 471 | Title: "Cluster upstream request backoff retries", |
| 472 | Units: "retries/s", |
| 473 | Fam: "upstream requests", |
| 474 | Ctx: "envoy.cluster_upstream_rq_retry_backoff_rate", |
| 475 | Priority: prioClusterUpstreamRequestBackoffRetriesRate, |
| 476 | Dims: collectorapi.Dims{ |
| 477 | {ID: "envoy_cluster_upstream_rq_retry_backoff_exponential_%s", Name: "exponential", Algo: collectorapi.Incremental}, |
| 478 | {ID: "envoy_cluster_upstream_rq_retry_backoff_ratelimited_%s", Name: "ratelimited", Algo: collectorapi.Incremental}, |
| 479 | }, |
| 480 | } |
| 481 | |
| 482 | clusterMembershipEndpointsCountChartTmpl = collectorapi.Chart{ |
| 483 | ID: "cluster_membership_endpoints_count_%s", |
| 484 | Title: "Cluster membership current endpoints", |
| 485 | Units: "endpoints", |
| 486 | Fam: "cluster membership", |
| 487 | Ctx: "envoy.cluster_membership_endpoints_count", |
| 488 | Priority: prioClusterMembershipEndpointsCount, |
| 489 | Dims: collectorapi.Dims{ |
| 490 | {ID: "envoy_cluster_membership_healthy_%s", Name: "healthy"}, |
| 491 | {ID: "envoy_cluster_membership_degraded_%s", Name: "degraded"}, |
| 492 | {ID: "envoy_cluster_membership_excluded_%s", Name: "excluded"}, |
| 493 | }, |
| 494 | } |
| 495 | clusterMembershipChangesRateChartTmpl = collectorapi.Chart{ |
| 496 | ID: "cluster_membership_change_%s", |
| 497 | Title: "Cluster membership changes", |
| 498 | Units: "changes/s", |
| 499 | Fam: "cluster membership", |
| 500 | Ctx: "envoy.cluster_membership_changes_rate", |
| 501 | Priority: prioClusterMembershipChangesRate, |
| 502 | Dims: collectorapi.Dims{ |
| 503 | {ID: "envoy_cluster_membership_change_%s", Name: "membership", Algo: collectorapi.Incremental}, |
| 504 | }, |
| 505 | } |
| 506 | clusterMembershipUpdatesRateChartTmpl = collectorapi.Chart{ |
| 507 | ID: "cluster_membership_updates_%s", |
| 508 | Title: "Cluster membership updates", |
| 509 | Units: "updates/s", |
| 510 | Fam: "cluster membership", |
| 511 | Ctx: "envoy.cluster_membership_updates_rate", |
| 512 | Priority: prioClusterMembershipUpdatesRate, |
| 513 | Dims: collectorapi.Dims{ |
| 514 | {ID: "envoy_cluster_update_success_%s", Name: "success", Algo: collectorapi.Incremental}, |
| 515 | {ID: "envoy_cluster_update_failure_%s", Name: "failure", Algo: collectorapi.Incremental}, |
| 516 | {ID: "envoy_cluster_update_empty_%s", Name: "empty", Algo: collectorapi.Incremental}, |
| 517 | {ID: "envoy_cluster_update_no_rebuild_%s", Name: "no_rebuild", Algo: collectorapi.Incremental}, |
| 518 | }, |
| 519 | } |
| 520 | ) |
| 521 | |
| 522 | var ( |
| 523 | listenerManagerChartsTmpl = collectorapi.Charts{ |
| 524 | listenerManagerListenersByStateCountChartTmpl.Copy(), |
| 525 | listenerManagerListenerChangesRateChartTmpl.Copy(), |
| 526 | listenerManagerListenerObjectEventsRateChartTmpl.Copy(), |
| 527 | } |
| 528 | listenerManagerListenersByStateCountChartTmpl = collectorapi.Chart{ |
| 529 | ID: "listener_manager_listeners_count_%s", |
| 530 | Title: "Listener manager current listeners", |
| 531 | Units: "listeners", |
| 532 | Fam: "downstream mgr", |
| 533 | Ctx: "envoy.listener_manager_listeners_count", |
| 534 | Priority: prioListenerManagerListenerCount, |
| 535 | Dims: collectorapi.Dims{ |
| 536 | {ID: "envoy_listener_manager_total_listeners_active_%s", Name: "active"}, |
| 537 | {ID: "envoy_listener_manager_total_listeners_warming_%s", Name: "warming"}, |
| 538 | {ID: "envoy_listener_manager_total_listeners_draining_%s", Name: "draining"}, |
| 539 | }, |
| 540 | } |
| 541 | listenerManagerListenerChangesRateChartTmpl = collectorapi.Chart{ |
| 542 | ID: "listener_manager_listener_changes_%s", |
| 543 | Title: "Listener manager listener changes", |
| 544 | Units: "listeners/s", |
| 545 | Fam: "downstream mgr", |
| 546 | Ctx: "envoy.listener_manager_listener_changes_rate", |
| 547 | Priority: prioListenerManagerListenerChangesRate, |
| 548 | Dims: collectorapi.Dims{ |
| 549 | {ID: "envoy_listener_manager_listener_added_%s", Name: "added", Algo: collectorapi.Incremental}, |
| 550 | {ID: "envoy_listener_manager_listener_modified_%s", Name: "modified", Algo: collectorapi.Incremental}, |
| 551 | {ID: "envoy_listener_manager_listener_removed_%s", Name: "removed", Algo: collectorapi.Incremental}, |
| 552 | {ID: "envoy_listener_manager_listener_stopped_%s", Name: "stopped", Algo: collectorapi.Incremental}, |
| 553 | }, |
| 554 | } |
| 555 | listenerManagerListenerObjectEventsRateChartTmpl = collectorapi.Chart{ |
| 556 | ID: "listener_manager_listener_object_events_%s", |
| 557 | Title: "Listener manager listener object events", |
| 558 | Units: "objects/s", |
| 559 | Fam: "downstream mgr", |
| 560 | Ctx: "envoy.listener_manager_listener_object_events_rate", |
| 561 | Priority: prioListenerManagerListenerObjectEventsRate, |
| 562 | Dims: collectorapi.Dims{ |
| 563 | {ID: "envoy_listener_manager_listener_create_success_%s", Name: "create_success", Algo: collectorapi.Incremental}, |
| 564 | {ID: "envoy_listener_manager_listener_create_failure_%s", Name: "create_failure", Algo: collectorapi.Incremental}, |
| 565 | {ID: "envoy_listener_manager_listener_in_place_updated_%s", Name: "in_place_updated", Algo: collectorapi.Incremental}, |
| 566 | }, |
| 567 | } |
| 568 | ) |
| 569 | |
| 570 | var ( |
| 571 | listenerAdminDownstreamChartsTmpl = collectorapi.Charts{ |
| 572 | listenerAdminDownstreamActiveConnectionsCountChartTmpl.Copy(), |
| 573 | listenerAdminDownstreamConnectionsRateChartTmpl.Copy(), |
| 574 | listenerAdminDownstreamDestroyedConnectionsRateChartTmpl.Copy(), |
| 575 | listenerAdminDownstreamTimedOutConnectionsRateChartTmpl.Copy(), |
| 576 | listenerAdminDownstreamRejectedConnectionsRateChartTmpl.Copy(), |
| 577 | listenerAdminDownstreamFilterClosedByRemoteConnectionsRateChartTmpl.Copy(), |
| 578 | listenerAdminDownstreamFilterReadErrorsRateChartTmpl.Copy(), |
| 579 | |
| 580 | listenerAdminDownstreamActiveSocketsCountChartTmpl.Copy(), |
| 581 | listenerAdminDownstreamTimedOutSocketsRateChartTmpl.Copy(), |
| 582 | } |
| 583 | |
| 584 | listenerAdminDownstreamActiveConnectionsCountChartTmpl = collectorapi.Chart{ |
| 585 | ID: "listener_admin_downstream_cx_active_%s", |
| 586 | Title: "Listener admin downstream current active connections", |
| 587 | Units: "connections", |
| 588 | Fam: "downstream adm conns", |
| 589 | Ctx: "envoy.listener_admin_downstream_cx_active_count", |
| 590 | Priority: prioListenerAdminDownstreamActiveConnectionsCount, |
| 591 | Dims: collectorapi.Dims{ |
| 592 | {ID: "envoy_listener_admin_downstream_cx_active_%s", Name: "active"}, |
| 593 | }, |
| 594 | } |
| 595 | listenerAdminDownstreamConnectionsRateChartTmpl = collectorapi.Chart{ |
| 596 | ID: "listener_admin_downstream_cx_total_%s", |
| 597 | Title: "Listener admin downstream connections", |
| 598 | Units: "connections/s", |
| 599 | Fam: "downstream adm conns", |
| 600 | Ctx: "envoy.listener_admin_downstream_cx_rate", |
| 601 | Priority: prioListenerAdminDownstreamConnectionsRate, |
| 602 | Dims: collectorapi.Dims{ |
| 603 | {ID: "envoy_listener_admin_downstream_cx_total_%s", Name: "created", Algo: collectorapi.Incremental}, |
| 604 | }, |
| 605 | } |
| 606 | listenerAdminDownstreamDestroyedConnectionsRateChartTmpl = collectorapi.Chart{ |
| 607 | ID: "listener_admin_downstream_cx_destroy_%s", |
| 608 | Title: "Listener admin downstream destroyed connections", |
| 609 | Units: "connections/s", |
| 610 | Fam: "downstream adm conns", |
| 611 | Ctx: "envoy.listener_admin_downstream_cx_destroy_rate", |
| 612 | Priority: prioListenerAdminDownstreamDestroyedConnectionsRate, |
| 613 | Dims: collectorapi.Dims{ |
| 614 | {ID: "envoy_listener_admin_downstream_cx_destroy_%s", Name: "destroyed", Algo: collectorapi.Incremental}, |
| 615 | }, |
| 616 | } |
| 617 | listenerAdminDownstreamTimedOutConnectionsRateChartTmpl = collectorapi.Chart{ |
| 618 | ID: "listener_admin_downstream_cx_transport_socket_connect_timeout_%s", |
| 619 | Title: "Listener admin downstream timed out connections", |
| 620 | Units: "connections/s", |
| 621 | Fam: "downstream adm conns", |
| 622 | Ctx: "envoy.listener_admin_downstream_cx_transport_socket_connect_timeout_rate", |
| 623 | Priority: prioListenerAdminDownstreamTimedOutConnectionsRate, |
| 624 | Dims: collectorapi.Dims{ |
| 625 | {ID: "envoy_listener_admin_downstream_cx_transport_socket_connect_timeout_%s", Name: "timeout", Algo: collectorapi.Incremental}, |
| 626 | }, |
| 627 | } |
| 628 | listenerAdminDownstreamRejectedConnectionsRateChartTmpl = collectorapi.Chart{ |
| 629 | ID: "listener_admin_downstream_cx_rejected_%s", |
| 630 | Title: "Listener admin downstream rejected connections", |
| 631 | Units: "connections/s", |
| 632 | Fam: "downstream adm conns", |
| 633 | Ctx: "envoy.listener_admin_downstream_cx_rejected_rate", |
| 634 | Priority: prioListenerAdminDownstreamRejectedConnectionsRate, |
| 635 | Dims: collectorapi.Dims{ |
| 636 | {ID: "envoy_listener_admin_downstream_cx_overflow_%s", Name: "overflow", Algo: collectorapi.Incremental}, |
| 637 | {ID: "envoy_listener_admin_downstream_cx_overload_reject_%s", Name: "overload", Algo: collectorapi.Incremental}, |
| 638 | {ID: "envoy_listener_admin_downstream_global_cx_overflow_%s", Name: "global_overflow", Algo: collectorapi.Incremental}, |
| 639 | }, |
| 640 | } |
| 641 | listenerAdminDownstreamFilterClosedByRemoteConnectionsRateChartTmpl = collectorapi.Chart{ |
| 642 | ID: "listener_admin_downstream_listener_filter_remote_close_%s", |
| 643 | Title: "Listener admin downstream connections closed by remote when peek data for listener filters", |
| 644 | Units: "connections/s", |
| 645 | Fam: "downstream adm conns", |
| 646 | Ctx: "envoy.listener_admin_downstream_listener_filter_remote_close_rate", |
| 647 | Priority: prioListenerAdminDownstreamFilterClosedByRemoteConnectionsRate, |
| 648 | Dims: collectorapi.Dims{ |
| 649 | {ID: "envoy_listener_admin_downstream_listener_filter_remote_close_%s", Name: "closed", Algo: collectorapi.Incremental}, |
| 650 | }, |
| 651 | } |
| 652 | listenerAdminDownstreamFilterReadErrorsRateChartTmpl = collectorapi.Chart{ |
| 653 | ID: "listener_admin_downstream_listener_filter_error_%s", |
| 654 | Title: "Listener admin downstream read errors when peeking data for listener filters", |
| 655 | Units: "errors/s", |
| 656 | Fam: "downstream adm conns", |
| 657 | Ctx: "envoy.listener_admin_downstream_listener_filter_error_rate", |
| 658 | Priority: prioListenerAdminDownstreamFilterReadErrorsRate, |
| 659 | Dims: collectorapi.Dims{ |
| 660 | {ID: "envoy_listener_admin_downstream_listener_filter_error_%s", Name: "read", Algo: collectorapi.Incremental}, |
| 661 | }, |
| 662 | } |
| 663 | |
| 664 | listenerAdminDownstreamActiveSocketsCountChartTmpl = collectorapi.Chart{ |
| 665 | ID: "listener_admin_downstream_pre_cx_active_%s", |
| 666 | Title: "Listener admin downstream current active sockets", |
| 667 | Units: "sockets", |
| 668 | Fam: "downstream adm sockets", |
| 669 | Ctx: "envoy.listener_admin_downstream_pre_cx_active_count", |
| 670 | Priority: prioListenerAdminDownstreamActiveSocketsCount, |
| 671 | Dims: collectorapi.Dims{ |
| 672 | {ID: "envoy_listener_admin_downstream_pre_cx_active_%s", Name: "active"}, |
| 673 | }, |
| 674 | } |
| 675 | listenerAdminDownstreamTimedOutSocketsRateChartTmpl = collectorapi.Chart{ |
| 676 | ID: "listener_admin_downstream_pre_cx_timeout_%s", |
| 677 | Title: "Listener admin downstream timed out sockets", |
| 678 | Units: "sockets/s", |
| 679 | Fam: "downstream adm sockets", |
| 680 | Ctx: "envoy.listener_admin_downstream_pre_cx_timeout_rate", |
| 681 | Priority: prioListenerAdminDownstreamTimedOutSocketsRate, |
| 682 | Dims: collectorapi.Dims{ |
| 683 | {ID: "envoy_listener_admin_downstream_pre_cx_timeout_%s", Name: "timeout", Algo: collectorapi.Incremental}, |
| 684 | }, |
| 685 | } |
| 686 | ) |
| 687 | |
| 688 | var ( |
| 689 | listenerDownstreamChartsTmpl = collectorapi.Charts{ |
| 690 | listenerDownstreamActiveConnectionsCountChartTmpl.Copy(), |
| 691 | listenerDownstreamConnectionsRateChartTmpl.Copy(), |
| 692 | listenerDownstreamDestroyedConnectionsRateChartTmpl.Copy(), |
| 693 | listenerDownstreamTimedOutConnectionsRateChartTmpl.Copy(), |
| 694 | listenerDownstreamRejectedConnectionsRateChartTmpl.Copy(), |
| 695 | listenerDownstreamFilterClosedByRemoteConnectionsRateChartTmpl.Copy(), |
| 696 | listenerDownstreamFilterReadErrorsRateChartTmpl.Copy(), |
| 697 | |
| 698 | listenerDownstreamActiveSocketsCountChartTmpl.Copy(), |
| 699 | listenerDownstreamTimedOutSocketsRateChartTmpl.Copy(), |
| 700 | } |
| 701 | |
| 702 | listenerDownstreamActiveConnectionsCountChartTmpl = collectorapi.Chart{ |
| 703 | ID: "listener_downstream_cx_active_%s", |
| 704 | Title: "Listener downstream current active connections", |
| 705 | Units: "connections", |
| 706 | Fam: "downstream conns", |
| 707 | Ctx: "envoy.listener_downstream_cx_active_count", |
| 708 | Priority: prioListenerDownstreamActiveConnectionsCount, |
| 709 | Dims: collectorapi.Dims{ |
| 710 | {ID: "envoy_listener_downstream_cx_active_%s", Name: "active"}, |
| 711 | }, |
| 712 | } |
| 713 | listenerDownstreamConnectionsRateChartTmpl = collectorapi.Chart{ |
| 714 | ID: "listener_downstream_cx_total_%s", |
| 715 | Title: "Listener downstream connections", |
| 716 | Units: "connections/s", |
| 717 | Fam: "downstream conns", |
| 718 | Ctx: "envoy.listener_downstream_cx_rate", |
| 719 | Priority: prioListenerDownstreamConnectionsRate, |
| 720 | Dims: collectorapi.Dims{ |
| 721 | {ID: "envoy_listener_downstream_cx_total_%s", Name: "created", Algo: collectorapi.Incremental}, |
| 722 | }, |
| 723 | } |
| 724 | listenerDownstreamDestroyedConnectionsRateChartTmpl = collectorapi.Chart{ |
| 725 | ID: "listener_downstream_cx_destroy_%s", |
| 726 | Title: "Listener downstream destroyed connections", |
| 727 | Units: "connections/s", |
| 728 | Fam: "downstream conns", |
| 729 | Ctx: "envoy.listener_downstream_cx_destroy_rate", |
| 730 | Priority: prioListenerDownstreamDestroyedConnectionsRate, |
| 731 | Dims: collectorapi.Dims{ |
| 732 | {ID: "envoy_listener_downstream_cx_destroy_%s", Name: "destroyed", Algo: collectorapi.Incremental}, |
| 733 | }, |
| 734 | } |
| 735 | listenerDownstreamTimedOutConnectionsRateChartTmpl = collectorapi.Chart{ |
| 736 | ID: "listener_downstream_cx_transport_socket_connect_timeout_%s", |
| 737 | Title: "Listener downstream timed out connections", |
| 738 | Units: "connections/s", |
| 739 | Fam: "downstream conns", |
| 740 | Ctx: "envoy.listener_downstream_cx_transport_socket_connect_timeout_rate", |
| 741 | Priority: prioListenerDownstreamTimedOutConnectionsRate, |
| 742 | Dims: collectorapi.Dims{ |
| 743 | {ID: "envoy_listener_downstream_cx_transport_socket_connect_timeout_%s", Name: "timeout", Algo: collectorapi.Incremental}, |
| 744 | }, |
| 745 | } |
| 746 | listenerDownstreamRejectedConnectionsRateChartTmpl = collectorapi.Chart{ |
| 747 | ID: "listener_downstream_cx_rejected_%s", |
| 748 | Title: "Listener downstream rejected connections", |
| 749 | Units: "connections/s", |
| 750 | Fam: "downstream conns", |
| 751 | Ctx: "envoy.listener_downstream_cx_rejected_rate", |
| 752 | Priority: prioListenerDownstreamRejectedConnectionsRate, |
| 753 | Dims: collectorapi.Dims{ |
| 754 | {ID: "envoy_listener_downstream_cx_overflow_%s", Name: "overflow", Algo: collectorapi.Incremental}, |
| 755 | {ID: "envoy_listener_downstream_cx_overload_reject_%s", Name: "overload", Algo: collectorapi.Incremental}, |
| 756 | {ID: "envoy_listener_downstream_global_cx_overflow_%s", Name: "global_overflow", Algo: collectorapi.Incremental}, |
| 757 | }, |
| 758 | } |
| 759 | listenerDownstreamFilterClosedByRemoteConnectionsRateChartTmpl = collectorapi.Chart{ |
| 760 | ID: "listener_downstream_listener_filter_remote_close_%s", |
| 761 | Title: "Listener downstream connections closed by remote when peek data for listener filters", |
| 762 | Units: "connections/s", |
| 763 | Fam: "downstream conns", |
| 764 | Ctx: "envoy.listener_downstream_listener_filter_remote_close_rate", |
| 765 | Priority: prioListenerDownstreamFilterClosedByRemoteConnectionsRate, |
| 766 | Dims: collectorapi.Dims{ |
| 767 | {ID: "envoy_listener_downstream_listener_filter_remote_close_%s", Name: "closed", Algo: collectorapi.Incremental}, |
| 768 | }, |
| 769 | } |
| 770 | listenerDownstreamFilterReadErrorsRateChartTmpl = collectorapi.Chart{ |
| 771 | ID: "listener_downstream_listener_filter_error_%s", |
| 772 | Title: "Listener downstream read errors when peeking data for listener filters", |
| 773 | Units: "errors/s", |
| 774 | Fam: "downstream conns", |
| 775 | Ctx: "envoy.listener_downstream_listener_filter_error_rate", |
| 776 | Priority: prioListenerDownstreamFilterReadErrorsRate, |
| 777 | Dims: collectorapi.Dims{ |
| 778 | {ID: "envoy_listener_downstream_listener_filter_error_%s", Name: "read", Algo: collectorapi.Incremental}, |
| 779 | }, |
| 780 | } |
| 781 | |
| 782 | listenerDownstreamActiveSocketsCountChartTmpl = collectorapi.Chart{ |
| 783 | ID: "listener_downstream_pre_cx_active_%s", |
| 784 | Title: "Listener downstream current active sockets", |
| 785 | Units: "sockets", |
| 786 | Fam: "downstream sockets", |
| 787 | Ctx: "envoy.listener_downstream_pre_cx_active_count", |
| 788 | Priority: prioListenerDownstreamActiveSocketsCount, |
| 789 | Dims: collectorapi.Dims{ |
| 790 | {ID: "envoy_listener_downstream_pre_cx_active_%s", Name: "active"}, |
| 791 | }, |
| 792 | } |
| 793 | listenerDownstreamTimedOutSocketsRateChartTmpl = collectorapi.Chart{ |
| 794 | ID: "listener_downstream_pre_cx_timeout_%s", |
| 795 | Title: "Listener downstream timed out sockets", |
| 796 | Units: "sockets/s", |
| 797 | Fam: "downstream sockets", |
| 798 | Ctx: "envoy.listener_downstream_pre_cx_timeout_rate", |
| 799 | Priority: prioListenerDownstreamTimedOutSocketsRate, |
| 800 | Dims: collectorapi.Dims{ |
| 801 | {ID: "envoy_listener_downstream_pre_cx_timeout_%s", Name: "timeout", Algo: collectorapi.Incremental}, |
| 802 | }, |
| 803 | } |
| 804 | ) |
| 805 | |
| 806 | func (c *Collector) addServerCharts(id string, labels labels.Labels) { |
| 807 | c.addCharts(serverChartsTmpl.Copy(), id, labels) |
| 808 | } |
| 809 | |
| 810 | func (c *Collector) addClusterManagerCharts(id string, labels labels.Labels) { |
| 811 | c.addCharts(clusterManagerChartsTmpl.Copy(), id, labels) |
| 812 | } |
| 813 | |
| 814 | func (c *Collector) addClusterUpstreamCharts(id string, labels labels.Labels) { |
| 815 | c.addCharts(clusterUpstreamChartsTmpl.Copy(), id, labels) |
| 816 | } |
| 817 | |
| 818 | func (c *Collector) addListenerManagerCharts(id string, labels labels.Labels) { |
| 819 | c.addCharts(listenerManagerChartsTmpl.Copy(), id, labels) |
| 820 | } |
| 821 | |
| 822 | func (c *Collector) addListenerAdminDownstreamCharts(id string, labels labels.Labels) { |
| 823 | c.addCharts(listenerAdminDownstreamChartsTmpl.Copy(), id, labels) |
| 824 | } |
| 825 | |
| 826 | func (c *Collector) addListenerDownstreamCharts(id string, labels labels.Labels) { |
| 827 | c.addCharts(listenerDownstreamChartsTmpl.Copy(), id, labels) |
| 828 | } |
| 829 | |
| 830 | func (c *Collector) addCharts(charts *collectorapi.Charts, id string, labels labels.Labels) { |
| 831 | charts = charts.Copy() |
| 832 | |
| 833 | for _, chart := range *charts { |
| 834 | if id == "" { |
| 835 | chart.ID = strings.Replace(chart.ID, "_%s", "", 1) |
| 836 | for _, dim := range chart.Dims { |
| 837 | dim.ID = strings.Replace(dim.ID, "_%s", "", 1) |
| 838 | } |
| 839 | } else { |
| 840 | chart.ID = fmt.Sprintf(chart.ID, dotReplacer.Replace(id)) |
| 841 | for _, dim := range chart.Dims { |
| 842 | dim.ID = fmt.Sprintf(dim.ID, id) |
| 843 | } |
| 844 | } |
| 845 | |
| 846 | for _, lbl := range labels { |
| 847 | chart.Labels = append(chart.Labels, collectorapi.Label{Key: lbl.Name, Value: lbl.Value}) |
| 848 | } |
| 849 | } |
| 850 | |
| 851 | if err := c.Charts().Add(*charts...); err != nil { |
| 852 | c.Warning(err) |
| 853 | } |
| 854 | } |
| 855 | |
| 856 | func (c *Collector) removeCharts(id string) { |
| 857 | if id == "" { |
| 858 | return |
| 859 | } |
| 860 | |
| 861 | id = dotReplacer.Replace(id) |
| 862 | for _, chart := range *c.Charts() { |
| 863 | if strings.HasSuffix(chart.ID, id) { |
| 864 | chart.MarkRemove() |
| 865 | chart.MarkNotCreated() |
| 866 | } |
| 867 | } |
| 868 | } |
| 869 | |
| 870 | var dotReplacer = strings.NewReplacer(".", "_") |