From 6c8647a27d0ab9c5f0802ca5870ea7bf90d5e2a8 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Mon, 25 Jun 2018 09:22:28 -0400 Subject: [PATCH] Remove prometheus labels with high cardinality --- internal/ingress/metric/collector/collector.go | 13 +++---------- rootfs/etc/nginx/lua/monitor.lua | 5 +---- rootfs/etc/nginx/lua/test/monitor_test.lua | 17 ++++------------- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/internal/ingress/metric/collector/collector.go b/internal/ingress/metric/collector/collector.go index 697923764c..8ba2851074 100644 --- a/internal/ingress/metric/collector/collector.go +++ b/internal/ingress/metric/collector/collector.go @@ -30,15 +30,10 @@ type socketData struct { Host string `json:"host"` // Label Status string `json:"status"` // Label - RealIPAddress string `json:"realIpAddr"` // Label - RemoteAddress string `json:"remoteAddr"` // Label - RemoteUser string `json:"remoteUser"` // Label - BytesSent float64 `json:"bytesSent"` // Metric Protocol string `json:"protocol"` // Label Method string `json:"method"` // Label - URI string `json:"uri"` // Label RequestLength float64 `json:"requestLength"` // Metric RequestTime float64 `json:"requestTime"` // Metric @@ -51,6 +46,7 @@ type socketData struct { Namespace string `json:"namespace"` // Label Ingress string `json:"ingress"` // Label Service string `json:"service"` // Label + Path string `json:"path"` // Label } // SocketCollector stores prometheus metrics and ingress meta-data @@ -82,7 +78,7 @@ func NewInstance(ns string, class string) error { sc.ns = ns sc.ingressClass = class - requestTags := []string{"host", "status", "remote_address", "real_ip_address", "remote_user", "protocol", "method", "uri", "upstream_name", "upstream_ip", "upstream_status", "namespace", "ingress", "service"} + requestTags := []string{"host", "status", "protocol", "method", "path", "upstream_name", "upstream_ip", "upstream_status", "namespace", "ingress", "service"} collectorTags := []string{"namespace", "ingress_class"} sc.upstreamResponseTime = prometheus.NewHistogramVec( @@ -181,12 +177,9 @@ func (sc *SocketCollector) handleMessage(msg []byte) { requestLabels := prometheus.Labels{ "host": stats.Host, "status": stats.Status, - "remote_address": stats.RemoteAddress, - "real_ip_address": stats.RealIPAddress, - "remote_user": stats.RemoteUser, "protocol": stats.Protocol, "method": stats.Method, - "uri": stats.URI, + "path": stats.Path, "upstream_name": stats.UpstreamName, "upstream_ip": stats.UpstreamIP, "upstream_status": stats.UpstreamStatus, diff --git a/rootfs/etc/nginx/lua/monitor.lua b/rootfs/etc/nginx/lua/monitor.lua index 2ef609cfd5..e116ba2b1d 100644 --- a/rootfs/etc/nginx/lua/monitor.lua +++ b/rootfs/etc/nginx/lua/monitor.lua @@ -16,13 +16,10 @@ function _M.encode_nginx_stats() return cjson.encode({ host = ngx.var.host or "-", status = ngx.var.status or "-", - remoteAddr = ngx.var.remote_addr or "-", - realIpAddr = ngx.var.realip_remote_addr or "-", - remoteUser = ngx.var.remote_user or "-", bytesSent = tonumber(ngx.var.bytes_sent) or -1, protocol = ngx.var.server_protocol or "-", method = ngx.var.request_method or "-", - uri = ngx.var.uri or "-", + path = ngx.var.location_path or "-", requestLength = tonumber(ngx.var.request_length) or -1, requestTime = tonumber(ngx.var.request_time) or -1, upstreamName = ngx.var.proxy_upstream_name or "-", diff --git a/rootfs/etc/nginx/lua/test/monitor_test.lua b/rootfs/etc/nginx/lua/test/monitor_test.lua index 752f534bc4..7abb50d141 100644 --- a/rootfs/etc/nginx/lua/test/monitor_test.lua +++ b/rootfs/etc/nginx/lua/test/monitor_test.lua @@ -28,13 +28,10 @@ describe("Monitor", function() local nginx_environment = { host = "testshop.com", status = "200", - remote_addr = "10.10.10.10", - realip_remote_addr = "5.5.5.5", - remote_user = "admin", bytes_sent = "150", server_protocol = "HTTP", request_method = "GET", - uri = "/admin", + location_path = "/admin", request_length = "300", request_time = "60", proxy_upstream_name = "test-upstream", @@ -54,13 +51,10 @@ describe("Monitor", function() local expected_json_stats = { host = "testshop.com", status = "200", - remoteAddr = "10.10.10.10", - realIpAddr = "5.5.5.5", - remoteUser = "admin", bytesSent = 150.0, protocol = "HTTP", method = "GET", - uri = "/admin", + path = "/admin", requestLength = 300.0, requestTime = 60.0, upstreamName = "test-upstream", @@ -82,7 +76,7 @@ describe("Monitor", function() remote_user = "francisco", server_protocol = "HTTP", request_method = "GET", - uri = "/admin", + location_path = "/admin", request_time = "60", proxy_upstream_name = "test-upstream", upstream_addr = "2.2.2.2", @@ -99,13 +93,10 @@ describe("Monitor", function() local expected_json_stats = { host = "-", status = "-", - remoteAddr = "10.10.10.10", - realIpAddr = "5.5.5.5", - remoteUser = "francisco", bytesSent = -1, protocol = "HTTP", method = "GET", - uri = "/admin", + path = "/admin", requestLength = -1, requestTime = 60.0, upstreamName = "test-upstream",