diff --git a/kube-prometheus-stack/templates/nginx-ingress-dashboard.yaml b/kube-prometheus-stack/templates/nginx-ingress-dashboard.yaml new file mode 100644 index 0000000..b33963e --- /dev/null +++ b/kube-prometheus-stack/templates/nginx-ingress-dashboard.yaml @@ -0,0 +1,1505 @@ +#apiVersion: v1 +#kind: ConfigMap +#metadata: +# labels: +# grafana_dashboard: "1" +# name: nginx-ingress-dashboard +# namespace: kube-prometheus-stack +#data: +# nginx-ingress-controller_rev1.json: |- +# { +# "annotations": { +# "list": [ +# { +# "builtIn": 1, +# "datasource": { +# "type": "datasource", +# "uid": "grafana" +# }, +# "enable": true, +# "hide": true, +# "iconColor": "rgba(0, 211, 255, 1)", +# "name": "Annotations & Alerts", +# "target": { +# "limit": 100, +# "matchAny": false, +# "tags": [], +# "type": "dashboard" +# }, +# "type": "dashboard" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "enable": true, +# "expr": "sum(changes(nginx_ingress_controller_config_last_reload_successful_timestamp_seconds{instance!=\"unknown\",controller_class=~\"$controller_class\",namespace=~\"$namespace\"}[30s])) by (controller_class)", +# "hide": false, +# "iconColor": "rgba(255, 96, 96, 1)", +# "limit": 100, +# "name": "Config Reloads", +# "showIn": 0, +# "step": "30s", +# "tagKeys": "controller_class", +# "tags": [], +# "titleFormat": "Config Reloaded", +# "type": "tags" +# } +# ] +# }, +# "description": "Ingress-nginx supports a rich collection of prometheus metrics. If you have prometheus and grafana installed on your cluster then prometheus will already be scraping this data due to the scrape annotation on the deployment.", +# "editable": true, +# "fiscalYearStartMonth": 0, +# "gnetId": 9614, +# "graphTooltip": 0, +# "id": 27, +# "links": [], +# "liveNow": false, +# "panels": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fieldConfig": { +# "defaults": { +# "color": { +# "fixedColor": "rgb(31, 120, 193)", +# "mode": "fixed" +# }, +# "mappings": [ +# { +# "options": { +# "match": "null", +# "result": { +# "text": "N/A" +# } +# }, +# "type": "special" +# } +# ], +# "thresholds": { +# "mode": "absolute", +# "steps": [ +# { +# "color": "green", +# "value": null +# }, +# { +# "color": "red", +# "value": 80 +# } +# ] +# }, +# "unit": "ops" +# }, +# "overrides": [] +# }, +# "id": 20, +# "links": [], +# "maxDataPoints": 100, +# "options": { +# "colorMode": "none", +# "graphMode": "area", +# "justifyMode": "auto", +# "orientation": "horizontal", +# "reduceOptions": { +# "calcs": [ +# "mean" +# ], +# "fields": "", +# "values": false +# }, +# "textMode": "auto" +# }, +# "pluginVersion": "9.1.6", +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "round(sum(irate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\"}[2m])), 0.001)", +# "format": "time_series", +# "intervalFactor": 1, +# "refId": "A", +# "step": 4 +# } +# ], +# "title": "Controller Request Volume", +# "type": "stat" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fieldConfig": { +# "defaults": { +# "color": { +# "fixedColor": "rgb(31, 120, 193)", +# "mode": "fixed" +# }, +# "mappings": [ +# { +# "options": { +# "match": "null", +# "result": { +# "text": "N/A" +# } +# }, +# "type": "special" +# } +# ], +# "thresholds": { +# "mode": "absolute", +# "steps": [ +# { +# "color": "green", +# "value": null +# }, +# { +# "color": "red", +# "value": 80 +# } +# ] +# }, +# "unit": "none" +# }, +# "overrides": [] +# }, +# "gridPos": { +# "h": 3, +# "w": 6, +# "x": 6, +# "y": 0 +# }, +# "id": 82, +# "links": [], +# "maxDataPoints": 100, +# "options": { +# "colorMode": "none", +# "graphMode": "area", +# "justifyMode": "auto", +# "orientation": "horizontal", +# "reduceOptions": { +# "calcs": [ +# "mean" +# ], +# "fields": "", +# "values": false +# }, +# "textMode": "auto" +# }, +# "pluginVersion": "9.1.6", +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum(avg_over_time(nginx_ingress_controller_nginx_process_connections{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m]))", +# "format": "time_series", +# "instant": false, +# "intervalFactor": 1, +# "refId": "A", +# "step": 4 +# } +# ], +# "title": "Controller Connections", +# "type": "stat" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fieldConfig": { +# "defaults": { +# "color": { +# "fixedColor": "rgb(31, 120, 193)", +# "mode": "fixed" +# }, +# "mappings": [ +# { +# "options": { +# "match": "null", +# "result": { +# "text": "N/A" +# } +# }, +# "type": "special" +# } +# ], +# "thresholds": { +# "mode": "absolute", +# "steps": [ +# { +# "color": "rgba(245, 54, 54, 0.9)", +# "value": null +# }, +# { +# "color": "rgba(237, 129, 40, 0.89)", +# "value": 95 +# }, +# { +# "color": "rgba(50, 172, 45, 0.97)", +# "value": 99 +# } +# ] +# }, +# "unit": "percentunit" +# }, +# "overrides": [] +# }, +# "gridPos": { +# "h": 3, +# "w": 6, +# "x": 12, +# "y": 0 +# }, +# "id": 21, +# "links": [], +# "maxDataPoints": 100, +# "options": { +# "colorMode": "none", +# "graphMode": "area", +# "justifyMode": "auto", +# "orientation": "horizontal", +# "reduceOptions": { +# "calcs": [ +# "mean" +# ], +# "fields": "", +# "values": false +# }, +# "textMode": "auto" +# }, +# "pluginVersion": "9.1.6", +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\",status!~\"[4-5].*\"}[2m])) / sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\"}[2m]))", +# "format": "time_series", +# "intervalFactor": 1, +# "refId": "A", +# "step": 4 +# } +# ], +# "title": "Controller Success Rate (non-4|5xx responses)", +# "type": "stat" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fieldConfig": { +# "defaults": { +# "color": { +# "fixedColor": "rgb(31, 120, 193)", +# "mode": "fixed" +# }, +# "decimals": 0, +# "mappings": [ +# { +# "options": { +# "match": "null", +# "result": { +# "text": "N/A" +# } +# }, +# "type": "special" +# } +# ], +# "thresholds": { +# "mode": "absolute", +# "steps": [ +# { +# "color": "green", +# "value": null +# }, +# { +# "color": "red", +# "value": 80 +# } +# ] +# }, +# "unit": "none" +# }, +# "overrides": [] +# }, +# "gridPos": { +# "h": 3, +# "w": 3, +# "x": 18, +# "y": 0 +# }, +# "id": 81, +# "links": [], +# "maxDataPoints": 100, +# "options": { +# "colorMode": "none", +# "graphMode": "area", +# "justifyMode": "auto", +# "orientation": "horizontal", +# "reduceOptions": { +# "calcs": [ +# "mean" +# ], +# "fields": "", +# "values": false +# }, +# "textMode": "auto" +# }, +# "pluginVersion": "9.1.6", +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "avg(nginx_ingress_controller_success{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"})", +# "format": "time_series", +# "instant": true, +# "intervalFactor": 1, +# "refId": "A", +# "step": 4 +# } +# ], +# "title": "Config Reloads", +# "type": "stat" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fieldConfig": { +# "defaults": { +# "color": { +# "fixedColor": "rgb(31, 120, 193)", +# "mode": "fixed" +# }, +# "decimals": 0, +# "mappings": [ +# { +# "options": { +# "match": "null", +# "result": { +# "text": "N/A" +# } +# }, +# "type": "special" +# } +# ], +# "thresholds": { +# "mode": "absolute", +# "steps": [ +# { +# "color": "green", +# "value": null +# }, +# { +# "color": "red", +# "value": 80 +# } +# ] +# }, +# "unit": "none" +# }, +# "overrides": [] +# }, +# "gridPos": { +# "h": 3, +# "w": 3, +# "x": 21, +# "y": 0 +# }, +# "id": 83, +# "links": [], +# "maxDataPoints": 100, +# "options": { +# "colorMode": "none", +# "graphMode": "area", +# "justifyMode": "auto", +# "orientation": "horizontal", +# "reduceOptions": { +# "calcs": [ +# "mean" +# ], +# "fields": "", +# "values": false +# }, +# "textMode": "auto" +# }, +# "pluginVersion": "9.1.6", +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "count(nginx_ingress_controller_config_last_reload_successful{controller_pod=~\"$controller\",controller_namespace=~\"$namespace\"} == 0)", +# "format": "time_series", +# "instant": true, +# "intervalFactor": 1, +# "refId": "A", +# "step": 4 +# } +# ], +# "title": "Last Config Failed", +# "type": "stat" +# }, +# { +# "aliasColors": {}, +# "bars": false, +# "dashLength": 10, +# "dashes": false, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "decimals": 2, +# "editable": true, +# "error": false, +# "fill": 1, +# "fillGradient": 0, +# "grid": {}, +# "gridPos": { +# "h": 7, +# "w": 12, +# "x": 0, +# "y": 3 +# }, +# "height": "200px", +# "hiddenSeries": false, +# "id": 86, +# "isNew": true, +# "legend": { +# "alignAsTable": true, +# "avg": true, +# "current": false, +# "hideEmpty": false, +# "hideZero": true, +# "max": false, +# "min": false, +# "rightSide": true, +# "show": true, +# "sideWidth": 300, +# "sort": "current", +# "sortDesc": true, +# "total": false, +# "values": true +# }, +# "lines": true, +# "linewidth": 2, +# "links": [], +# "nullPointMode": "connected", +# "options": { +# "alertThreshold": true +# }, +# "percentage": false, +# "pluginVersion": "9.1.6", +# "pointradius": 5, +# "points": false, +# "renderer": "flot", +# "repeatDirection": "h", +# "seriesOverrides": [], +# "spaceLength": 10, +# "stack": false, +# "steppedLine": false, +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "round(sum(irate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress), 0.001)", +# "format": "time_series", +# "hide": false, +# "instant": false, +# "interval": "", +# "intervalFactor": 1, +# "legendFormat": "{{ ingress }}", +# "metric": "network", +# "refId": "A", +# "step": 10 +# } +# ], +# "thresholds": [], +# "timeRegions": [], +# "title": "Ingress Request Volume", +# "tooltip": { +# "msResolution": false, +# "shared": true, +# "sort": 2, +# "value_type": "cumulative" +# }, +# "type": "graph", +# "xaxis": { +# "mode": "time", +# "show": true, +# "values": [] +# }, +# "yaxes": [ +# { +# "format": "reqps", +# "logBase": 1, +# "show": true +# }, +# { +# "format": "Bps", +# "logBase": 1, +# "show": false +# } +# ], +# "yaxis": { +# "align": false +# } +# }, +# { +# "aliasColors": { +# "max - istio-proxy": "#890f02", +# "max - master": "#bf1b00", +# "max - prometheus": "#bf1b00" +# }, +# "bars": false, +# "dashLength": 10, +# "dashes": false, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "decimals": 2, +# "editable": false, +# "error": false, +# "fill": 0, +# "fillGradient": 0, +# "grid": {}, +# "gridPos": { +# "h": 7, +# "w": 12, +# "x": 12, +# "y": 3 +# }, +# "hiddenSeries": false, +# "id": 87, +# "isNew": true, +# "legend": { +# "alignAsTable": true, +# "avg": true, +# "current": false, +# "hideEmpty": true, +# "hideZero": false, +# "max": false, +# "min": false, +# "rightSide": true, +# "show": true, +# "sideWidth": 300, +# "sort": "avg", +# "sortDesc": true, +# "total": false, +# "values": true +# }, +# "lines": true, +# "linewidth": 2, +# "links": [], +# "nullPointMode": "connected", +# "options": { +# "alertThreshold": true +# }, +# "percentage": false, +# "pluginVersion": "9.1.6", +# "pointradius": 5, +# "points": false, +# "renderer": "flot", +# "seriesOverrides": [], +# "spaceLength": 10, +# "stack": false, +# "steppedLine": false, +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\",ingress=~\"$ingress\",status!~\"[4-5].*\"}[2m])) by (ingress) / sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress)", +# "format": "time_series", +# "instant": false, +# "interval": "10s", +# "intervalFactor": 1, +# "legendFormat": "{{ ingress }}", +# "metric": "container_memory_usage:sort_desc", +# "refId": "A", +# "step": 10 +# } +# ], +# "thresholds": [], +# "timeRegions": [], +# "title": "Ingress Success Rate (non-4|5xx responses)", +# "tooltip": { +# "msResolution": false, +# "shared": true, +# "sort": 1, +# "value_type": "cumulative" +# }, +# "type": "graph", +# "xaxis": { +# "mode": "time", +# "show": true, +# "values": [] +# }, +# "yaxes": [ +# { +# "format": "percentunit", +# "logBase": 1, +# "show": true +# }, +# { +# "format": "short", +# "logBase": 1, +# "show": false +# } +# ], +# "yaxis": { +# "align": false +# } +# }, +# { +# "aliasColors": {}, +# "bars": false, +# "dashLength": 10, +# "dashes": false, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "decimals": 2, +# "editable": true, +# "error": false, +# "fill": 1, +# "fillGradient": 0, +# "grid": {}, +# "gridPos": { +# "h": 6, +# "w": 8, +# "x": 0, +# "y": 10 +# }, +# "height": "200px", +# "hiddenSeries": false, +# "id": 32, +# "isNew": true, +# "legend": { +# "alignAsTable": false, +# "avg": true, +# "current": true, +# "max": false, +# "min": false, +# "rightSide": false, +# "show": false, +# "sideWidth": 200, +# "sort": "current", +# "sortDesc": true, +# "total": false, +# "values": true +# }, +# "lines": true, +# "linewidth": 2, +# "links": [], +# "nullPointMode": "connected", +# "options": { +# "alertThreshold": true +# }, +# "percentage": false, +# "pluginVersion": "9.1.6", +# "pointradius": 5, +# "points": false, +# "renderer": "flot", +# "seriesOverrides": [], +# "spaceLength": 10, +# "stack": false, +# "steppedLine": false, +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum (irate (nginx_ingress_controller_request_size_sum{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m]))", +# "format": "time_series", +# "instant": false, +# "interval": "10s", +# "intervalFactor": 1, +# "legendFormat": "Received", +# "metric": "network", +# "refId": "A", +# "step": 10 +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "- sum (irate (nginx_ingress_controller_response_size_sum{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m]))", +# "format": "time_series", +# "hide": false, +# "interval": "10s", +# "intervalFactor": 1, +# "legendFormat": "Sent", +# "metric": "network", +# "refId": "B", +# "step": 10 +# } +# ], +# "thresholds": [], +# "timeRegions": [], +# "title": "Network I/O pressure", +# "tooltip": { +# "msResolution": false, +# "shared": true, +# "sort": 0, +# "value_type": "cumulative" +# }, +# "type": "graph", +# "xaxis": { +# "mode": "time", +# "show": true, +# "values": [] +# }, +# "yaxes": [ +# { +# "format": "Bps", +# "logBase": 1, +# "show": true +# }, +# { +# "format": "Bps", +# "logBase": 1, +# "show": false +# } +# ], +# "yaxis": { +# "align": false +# } +# }, +# { +# "aliasColors": { +# "max - istio-proxy": "#890f02", +# "max - master": "#bf1b00", +# "max - prometheus": "#bf1b00" +# }, +# "bars": false, +# "dashLength": 10, +# "dashes": false, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "decimals": 2, +# "editable": false, +# "error": false, +# "fill": 0, +# "fillGradient": 0, +# "grid": {}, +# "gridPos": { +# "h": 6, +# "w": 8, +# "x": 8, +# "y": 10 +# }, +# "hiddenSeries": false, +# "id": 77, +# "isNew": true, +# "legend": { +# "alignAsTable": true, +# "avg": true, +# "current": true, +# "max": false, +# "min": false, +# "rightSide": false, +# "show": false, +# "sideWidth": 200, +# "sort": "current", +# "sortDesc": true, +# "total": false, +# "values": true +# }, +# "lines": true, +# "linewidth": 2, +# "links": [], +# "nullPointMode": "connected", +# "options": { +# "alertThreshold": true +# }, +# "percentage": false, +# "pluginVersion": "9.1.6", +# "pointradius": 5, +# "points": false, +# "renderer": "flot", +# "seriesOverrides": [], +# "spaceLength": 10, +# "stack": false, +# "steppedLine": false, +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "avg(nginx_ingress_controller_nginx_process_resident_memory_bytes{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}) ", +# "format": "time_series", +# "instant": false, +# "interval": "10s", +# "intervalFactor": 1, +# "legendFormat": "nginx", +# "metric": "container_memory_usage:sort_desc", +# "refId": "A", +# "step": 10 +# } +# ], +# "thresholds": [], +# "timeRegions": [], +# "title": "Average Memory Usage", +# "tooltip": { +# "msResolution": false, +# "shared": true, +# "sort": 2, +# "value_type": "cumulative" +# }, +# "type": "graph", +# "xaxis": { +# "mode": "time", +# "show": true, +# "values": [] +# }, +# "yaxes": [ +# { +# "format": "bytes", +# "logBase": 1, +# "show": true +# }, +# { +# "format": "short", +# "logBase": 1, +# "show": false +# } +# ], +# "yaxis": { +# "align": false +# } +# }, +# { +# "aliasColors": { +# "max - istio-proxy": "#890f02", +# "max - master": "#bf1b00" +# }, +# "bars": false, +# "dashLength": 10, +# "dashes": false, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "decimals": 3, +# "editable": false, +# "error": false, +# "fill": 0, +# "fillGradient": 0, +# "grid": {}, +# "gridPos": { +# "h": 6, +# "w": 8, +# "x": 16, +# "y": 10 +# }, +# "height": "", +# "hiddenSeries": false, +# "id": 79, +# "isNew": true, +# "legend": { +# "alignAsTable": true, +# "avg": true, +# "current": true, +# "max": false, +# "min": false, +# "rightSide": false, +# "show": false, +# "total": false, +# "values": true +# }, +# "lines": true, +# "linewidth": 2, +# "links": [], +# "nullPointMode": "connected", +# "options": { +# "alertThreshold": true +# }, +# "percentage": false, +# "pluginVersion": "9.1.6", +# "pointradius": 5, +# "points": false, +# "renderer": "flot", +# "seriesOverrides": [], +# "spaceLength": 10, +# "stack": false, +# "steppedLine": false, +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum (rate (nginx_ingress_controller_nginx_process_cpu_seconds_total{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m])) ", +# "format": "time_series", +# "interval": "10s", +# "intervalFactor": 1, +# "legendFormat": "nginx", +# "metric": "container_cpu", +# "refId": "A", +# "step": 10 +# } +# ], +# "thresholds": [ +# { +# "colorMode": "critical", +# "fill": true, +# "line": true, +# "op": "gt" +# } +# ], +# "timeRegions": [], +# "title": "Average CPU Usage", +# "tooltip": { +# "msResolution": true, +# "shared": true, +# "sort": 2, +# "value_type": "cumulative" +# }, +# "type": "graph", +# "xaxis": { +# "mode": "time", +# "show": true, +# "values": [] +# }, +# "yaxes": [ +# { +# "format": "none", +# "label": "cores", +# "logBase": 1, +# "show": true +# }, +# { +# "format": "short", +# "logBase": 1, +# "show": true +# } +# ], +# "yaxis": { +# "align": false +# } +# }, +# { +# "columns": [], +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fontSize": "100%", +# "gridPos": { +# "h": 8, +# "w": 24, +# "x": 0, +# "y": 16 +# }, +# "hideTimeOverride": false, +# "id": 75, +# "links": [], +# "pageSize": 7, +# "repeatDirection": "h", +# "scroll": true, +# "showHeader": true, +# "sort": { +# "col": 1, +# "desc": true +# }, +# "styles": [ +# { +# "alias": "Ingress", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 2, +# "pattern": "ingress", +# "preserveFormat": false, +# "sanitize": false, +# "thresholds": [], +# "type": "string", +# "unit": "short" +# }, +# { +# "alias": "Requests", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 2, +# "pattern": "Value #A", +# "thresholds": [ +# "" +# ], +# "type": "number", +# "unit": "ops" +# }, +# { +# "alias": "Errors", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 2, +# "pattern": "Value #B", +# "thresholds": [], +# "type": "number", +# "unit": "ops" +# }, +# { +# "alias": "P50 Latency", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 0, +# "link": false, +# "pattern": "Value #C", +# "thresholds": [], +# "type": "number", +# "unit": "dtdurations" +# }, +# { +# "alias": "P90 Latency", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 0, +# "pattern": "Value #D", +# "thresholds": [], +# "type": "number", +# "unit": "dtdurations" +# }, +# { +# "alias": "P99 Latency", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 0, +# "pattern": "Value #E", +# "thresholds": [], +# "type": "number", +# "unit": "dtdurations" +# }, +# { +# "alias": "IN", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 2, +# "pattern": "Value #F", +# "thresholds": [ +# "" +# ], +# "type": "number", +# "unit": "Bps" +# }, +# { +# "alias": "", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 2, +# "pattern": "Time", +# "thresholds": [], +# "type": "hidden", +# "unit": "short" +# }, +# { +# "alias": "OUT", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 2, +# "mappingType": 1, +# "pattern": "Value #G", +# "thresholds": [], +# "type": "number", +# "unit": "Bps" +# } +# ], +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "histogram_quantile(0.50, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (le, ingress))", +# "format": "table", +# "hide": false, +# "instant": true, +# "intervalFactor": 1, +# "legendFormat": "{{ ingress }}", +# "refId": "C" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "histogram_quantile(0.90, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (le, ingress))", +# "format": "table", +# "hide": false, +# "instant": true, +# "intervalFactor": 1, +# "legendFormat": "{{ ingress }}", +# "refId": "D" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "histogram_quantile(0.99, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (le, ingress))", +# "format": "table", +# "hide": false, +# "instant": true, +# "intervalFactor": 1, +# "legendFormat": "{{ destination_service }}", +# "refId": "E" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum(irate(nginx_ingress_controller_request_size_sum{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress)", +# "format": "table", +# "hide": false, +# "instant": true, +# "interval": "", +# "intervalFactor": 1, +# "legendFormat": "{{ ingress }}", +# "refId": "F" +# }, +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "sum(irate(nginx_ingress_controller_response_size_sum{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress)", +# "format": "table", +# "instant": true, +# "intervalFactor": 1, +# "legendFormat": "{{ ingress }}", +# "refId": "G" +# } +# ], +# "title": "Ingress Percentile Response Times and Transfer Rates", +# "transform": "table", +# "type": "table-old" +# }, +# { +# "columns": [ +# { +# "text": "Current", +# "value": "current" +# } +# ], +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "fontSize": "100%", +# "gridPos": { +# "h": 8, +# "w": 24, +# "x": 0, +# "y": 24 +# }, +# "height": "1024", +# "id": 85, +# "links": [], +# "pageSize": 7, +# "scroll": true, +# "showHeader": true, +# "sort": { +# "col": 1, +# "desc": false +# }, +# "styles": [ +# { +# "alias": "Time", +# "align": "auto", +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "pattern": "Time", +# "type": "date" +# }, +# { +# "alias": "TTL", +# "align": "auto", +# "colorMode": "cell", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "dateFormat": "YYYY-MM-DD HH:mm:ss", +# "decimals": 0, +# "pattern": "Current", +# "thresholds": [ +# "0", +# "691200" +# ], +# "type": "number", +# "unit": "s" +# }, +# { +# "alias": "", +# "align": "auto", +# "colors": [ +# "rgba(245, 54, 54, 0.9)", +# "rgba(237, 129, 40, 0.89)", +# "rgba(50, 172, 45, 0.97)" +# ], +# "decimals": 2, +# "pattern": "/.*/", +# "thresholds": [], +# "type": "number", +# "unit": "short" +# } +# ], +# "targets": [ +# { +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "expr": "avg(nginx_ingress_controller_ssl_expire_time_seconds{kubernetes_pod_name=~\"$controller\",namespace=~\"$namespace\",ingress=~\"$ingress\"}) by (host) - time()", +# "format": "time_series", +# "intervalFactor": 1, +# "legendFormat": "{{ host }}", +# "metric": "gke_letsencrypt_cert_expiration", +# "refId": "A", +# "step": 1 +# } +# ], +# "title": "Ingress Certificate Expiry", +# "transform": "timeseries_aggregations", +# "type": "table-old" +# } +# ], +# "refresh": "5s", +# "schemaVersion": 37, +# "style": "dark", +# "tags": [ +# "nginx" +# ], +# "templating": { +# "list": [ +# { +# "allValue": ".*", +# "current": { +# "selected": false, +# "text": "All", +# "value": "$__all" +# }, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "definition": "", +# "hide": 0, +# "includeAll": true, +# "label": "Namespace", +# "multi": false, +# "name": "namespace", +# "options": [], +# "query": { +# "query": "label_values(nginx_ingress_controller_config_hash, controller_namespace)", +# "refId": "Prometheus-namespace-Variable-Query" +# }, +# "refresh": 1, +# "regex": "", +# "skipUrlSync": false, +# "sort": 0, +# "tagValuesQuery": "", +# "tagsQuery": "", +# "type": "query", +# "useTags": false +# }, +# { +# "allValue": ".*", +# "current": { +# "selected": false, +# "text": "All", +# "value": "$__all" +# }, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "definition": "", +# "hide": 0, +# "includeAll": true, +# "label": "Controller Class", +# "multi": false, +# "name": "controller_class", +# "options": [], +# "query": { +# "query": "label_values(nginx_ingress_controller_config_hash{namespace=~\"$namespace\"}, controller_class) ", +# "refId": "Prometheus-controller_class-Variable-Query" +# }, +# "refresh": 1, +# "regex": "", +# "skipUrlSync": false, +# "sort": 0, +# "tagValuesQuery": "", +# "tagsQuery": "", +# "type": "query", +# "useTags": false +# }, +# { +# "allValue": ".*", +# "current": { +# "selected": false, +# "text": "All", +# "value": "$__all" +# }, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "definition": "", +# "hide": 0, +# "includeAll": true, +# "label": "Controller", +# "multi": false, +# "name": "controller", +# "options": [], +# "query": { +# "query": "label_values(nginx_ingress_controller_config_hash{namespace=~\"$namespace\",controller_class=~\"$controller_class\"}, controller_pod) ", +# "refId": "Prometheus-controller-Variable-Query" +# }, +# "refresh": 1, +# "regex": "", +# "skipUrlSync": false, +# "sort": 0, +# "tagValuesQuery": "", +# "tagsQuery": "", +# "type": "query", +# "useTags": false +# }, +# { +# "allValue": ".*", +# "current": { +# "selected": false, +# "text": "All", +# "value": "$__all" +# }, +# "datasource": { +# "type": "prometheus", +# "uid": "prometheus" +# }, +# "definition": "", +# "hide": 0, +# "includeAll": true, +# "label": "Ingress", +# "multi": false, +# "name": "ingress", +# "options": [], +# "query": { +# "query": "label_values(nginx_ingress_controller_requests{namespace=~\"$namespace\",controller_class=~\"$controller_class\",controller=~\"$controller\"}, ingress) ", +# "refId": "Prometheus-ingress-Variable-Query" +# }, +# "refresh": 1, +# "regex": "", +# "skipUrlSync": false, +# "sort": 2, +# "tagValuesQuery": "", +# "tagsQuery": "", +# "type": "query", +# "useTags": false +# } +# ] +# }, +# "time": { +# "from": "now-1h", +# "to": "now" +# }, +# "timepicker": { +# "refresh_intervals": [ +# "5s", +# "10s", +# "30s", +# "2m", +# "5m", +# "15m", +# "30m", +# "1h", +# "2h", +# "1d" +# ], +# "time_options": [ +# "5m", +# "15m", +# "1h", +# "6h", +# "12h", +# "24h", +# "2d", +# "7d", +# "30d" +# ] +# }, +# "timezone": "browser", +# "title": "NGINX Ingress controller", +# "uid": "nginx", +# "version": 1, +# "weekStart": "" +# } \ No newline at end of file diff --git a/longhorn-system/templates/ingress.yaml b/longhorn-system/templates/ingress.yaml index 754c85f..88c82fa 100644 --- a/longhorn-system/templates/ingress.yaml +++ b/longhorn-system/templates/ingress.yaml @@ -5,9 +5,9 @@ metadata: annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-production - #nginx.ingress.kubernetes.io/auth-response-headers: Authorization - #nginx.ingress.kubernetes.io/auth-url: http://oauth2-proxy.oauth2-proxy.svc.cluster.local/oauth2/auth - #nginx.ingress.kubernetes.io/auth-signin: https://oauth.durp.info/oauth2/start?rd=https://$host$request_uri$is_args$args + nginx.ingress.kubernetes.io/auth-response-headers: Authorization + nginx.ingress.kubernetes.io/auth-url: http://oauth2-proxy.oauth2-proxy.svc.cluster.local/oauth2/auth + nginx.ingress.kubernetes.io/auth-signin: https://oauth.durp.info/oauth2/start?rd=https://$host$request_uri$is_args$args #nginx.ingress.kubernetes.io/auth-signin: "https://oauth.durp.info/oauth2/start?rd=https://longhorn.internal.durp.info" nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.0.0/16" spec: