diff --git a/resources/grafana/generated/dashboards/rhacs-cluster-overview.yaml b/resources/grafana/generated/dashboards/rhacs-cluster-overview.yaml index bed9d32..19961ef 100644 --- a/resources/grafana/generated/dashboards/rhacs-cluster-overview.yaml +++ b/resources/grafana/generated/dashboards/rhacs-cluster-overview.yaml @@ -35,8 +35,8 @@ spec: "uid": "PBFA97CFB590B2093" }, "enable": true, - "iconColor": "purple", "expr": "count (count by (git_version) (label_replace(count_over_time(kubernetes_build_info{job!~\"kube-dns|coredns\"}[${__interval}]), \"git_version\", \"$1\", \"git_version\", \"(v[0-9]*.[0-9]*).*\"))) > 1", + "iconColor": "purple", "name": "Kubernetes Upgrade", "textFormat": "Kubernetes Upgrade" }, @@ -46,8 +46,8 @@ spec: "uid": "PBFA97CFB590B2093" }, "enable": true, - "iconColor": "red", "expr": "count (count by (gitVersion) (count_over_time (openshift_apiserver_build_info[${__interval}]))) > 1", + "iconColor": "red", "name": "OpenShift Upgrade", "textFormat": "OpenShift Upgrade" } @@ -56,7 +56,7 @@ spec: "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 23, + "id": 26, "links": [], "liveNow": false, "panels": [ @@ -525,8 +525,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -623,8 +622,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -673,19 +671,6 @@ spec: "title": "Secured Clusters", "type": "timeseries" }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 25 - }, - "id": 16, - "panels": [], - "title": "Resources", - "type": "row" - }, { "datasource": { "type": "prometheus", @@ -733,8 +718,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -750,7 +734,7 @@ spec: "h": 8, "w": 12, "x": 0, - "y": 26 + "y": 25 }, "id": 4, "options": { @@ -783,6 +767,19 @@ spec: "title": "Network Received", "type": "timeseries" }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 16, + "panels": [], + "title": "Resources", + "type": "row" + }, { "datasource": { "type": "prometheus", @@ -830,8 +827,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -839,17 +835,17 @@ spec: } ] }, - "unit": "Bps" + "unit": "percentunit" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 26 + "x": 0, + "y": 34 }, - "id": 5, + "id": 6, "options": { "legend": { "calcs": [], @@ -859,7 +855,7 @@ spec: }, "tooltip": { "mode": "single", - "sort": "none" + "sort": "desc" } }, "pluginVersion": "9.1.0", @@ -870,14 +866,15 @@ spec: "uid": "PBFA97CFB590B2093" }, "editorMode": "code", - "expr": "sum(rate(container_network_transmit_bytes_total{namespace=~\"rhacs-$instance_id\", job=~\"kubelet\"}[5m])) by (namespace)", + "expr": "sum(container_memory_working_set_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace) / sum(container_spec_memory_limit_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace)", + "format": "time_series", "interval": "", "legendFormat": "{{namespace}}", "range": true, "refId": "A" } ], - "title": "Network Transmitted", + "title": "Central Memory Usage", "type": "timeseries" }, { @@ -927,8 +924,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -936,17 +932,17 @@ spec: } ] }, - "unit": "percentunit" + "unit": "Bps" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, + "x": 12, "y": 34 }, - "id": 6, + "id": 5, "options": { "legend": { "calcs": [], @@ -956,7 +952,7 @@ spec: }, "tooltip": { "mode": "single", - "sort": "desc" + "sort": "none" } }, "pluginVersion": "9.1.0", @@ -967,15 +963,14 @@ spec: "uid": "PBFA97CFB590B2093" }, "editorMode": "code", - "expr": "sum(container_memory_working_set_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace) / sum(container_spec_memory_limit_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace)", - "format": "time_series", + "expr": "sum(rate(container_network_transmit_bytes_total{namespace=~\"rhacs-$instance_id\", job=~\"kubelet\"}[5m])) by (namespace)", "interval": "", "legendFormat": "{{namespace}}", "range": true, "refId": "A" } ], - "title": "Central Memory Usage", + "title": "Network Transmitted", "type": "timeseries" }, { @@ -1039,8 +1034,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1118,7 +1112,7 @@ spec: "content": "### Description\n\nThis graph shows the occurences per minute of **SELinux AVC denials** on the cluster.\nThese violations are logged on the cluster, propagated to CloudWatch, aggregated by a log metric, retrieved by the cloudwatch-exporter and finally scraped by Prometheus.\n\n**Expected: 0 violations.**\n\nA violation means that the cluster node's SELinux policy prevented a process' actions.\nAs an example, a violation could indicate that a process on the cluster tried to access a file which is SELinux-protected.\n\n### Drill-Down\n\nLog into the cluster's AWS account and use a [Log Insights query](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-3600~timeType~'RELATIVE~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40logStream*20like*20*2flinux-audit*2f*0a*7c*20filter*20*40message*20like*20*2fAVC*2f*0a*7c*20sort*20*40timestamp*20desc*0a*7c*20limit*201000~source~(~))) similar to this one:\n```\nfields @timestamp, @message, @logStream, @log\n| filter @logStream like /linux-audit/\n| filter @message like /AVC/\n| sort @timestamp desc\n| limit 1000\n```\n\n**Note:**\n* all CloudWatch related resources are located in the `us-east-1` region.\n* the log group containing the violation logs are called `acs-.audit`.\n", "mode": "markdown" }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "type": "text" }, { @@ -1169,8 +1163,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1248,7 +1241,7 @@ spec: "content": "### Description\n\nThis graph shows the occurences per minute of Network Policy ACL denials on the cluster.\nThese violations are logged on the cluster, propagated to CloudWatch, aggregated by a log metric, retrieved by the cloudwatch-exporter and finally scraped by Prometheus.\n\n**Expected: 0 violations.**\n\nA violation means that network traffic was prevented due to a Kubernetes Network Policy.\nAs an example, a violation could indicate that communication between RHACS tenant namespaces\nwas attempted, which is strictly forbidden.\n\n### Drill-Down\n\nLog into the cluster's AWS account and use a [Log Insights query](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-3600~timeType~'RELATIVE~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40message*20like*20*2facl_log*28.*2a*29.*2a*5csverdict*3ddrop*2f*0a*7c*20filter*20*40logStream*20like*20*2f.*2aovn-audit*5c.log*2f*0a*7c*20sort*20*40timestamp*20desc*0a*7c*20limit*201000~source~(~))) similar to this one:\n```\nfields @timestamp, @message, @logStream, @log\n| filter @message like /acl_log(.*).*\\sverdict=drop/\n| filter @logStream like /.*ovn-audit\\.log/\n| sort @timestamp desc\n| limit 1000\n```\n\n**Note:**\n* all CloudWatch related resources are located in the `us-east-1` region.\n* the log group containing the violation logs are called `acs-.audit`.\n\n", "mode": "markdown" }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "type": "text" }, { @@ -1289,8 +1282,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1327,8 +1319,7 @@ spec: "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -1481,7 +1472,7 @@ spec: } ] }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "targets": [ { "datasource": { @@ -1666,8 +1657,7 @@ spec: "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1732,8 +1722,7 @@ spec: "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -1807,8 +1796,7 @@ spec: "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "yellow", @@ -1882,8 +1870,7 @@ spec: "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -1952,7 +1939,7 @@ spec: } ] }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "targets": [ { "datasource": { @@ -2130,11 +2117,249 @@ spec: } ], "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 85 + }, + "id": 149, + "panels": [], + "title": "Certificate Expiry", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "description": "Expiration dates for central and scanner TLS certificates.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 86 + }, + "id": 148, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": ["sum"], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Expiration" + } + ] + }, + "pluginVersion": "11.1.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "code", + "exemplar": true, + "expr": "acs_fleetshard_certificate_expiration_timestamp * on (exported_namespace) group_left(rhacs_org_name) label_replace(rox_central_info, \"exported_namespace\", \"$1\", \"namespace\", \"(.*)\")", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "interval": "", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "editorMode": "code", + "expr": "", + "hide": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + } + ], + "title": "Certificates Expiry", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": false, + "__name__": true, + "container": true, + "instance": true, + "job": true, + "namespace": true, + "pod": true, + "rhacs_cluster_name": true, + "rhacs_environment": true, + "rhacs_org_name": false + }, + "includeByName": {}, + "indexByName": { + "Time": 4, + "Value": 12, + "__name__": 5, + "container": 6, + "data_key": 3, + "exported_namespace": 0, + "instance": 7, + "job": 8, + "namespace": 1, + "pod": 9, + "rhacs_cluster_name": 10, + "rhacs_environment": 11, + "secret": 2 + }, + "renameByName": { + "Time": "Expiration", + "Value": "", + "container": "", + "data_key": "Key", + "exported_namespace": "Namespace", + "secret": "Secret" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Expiration", + "binary": { + "left": "Value", + "operator": "*", + "right": "1000" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "destinationType": "time", + "targetField": "Expiration" + } + ], + "fields": {} + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Value": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Expiration": { + "aggregations": ["last"], + "operation": "aggregate" + }, + "Key": { + "aggregations": [], + "operation": "groupby" + }, + "Namespace": { + "aggregations": ["last"], + "operation": "groupby" + }, + "Secret": { + "aggregations": [], + "operation": "groupby" + }, + "rhacs_org_name": { + "aggregations": [], + "operation": "groupby" + } + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": { + "Expiration (last)": 1, + "Key": 4, + "Namespace": 0, + "Secret": 3, + "rhacs_org_name": 2 + }, + "renameByName": { + "Expiration (last)": "Expiration", + "Namespace (last)": "Namespace", + "rhacs_org_name": "Organization" + } + } + } + ], + "type": "table" } ], - "refresh": "", "revision": 1, - "schemaVersion": 38, + "schemaVersion": 39, "tags": ["rhacs"], "templating": { "list": [ diff --git a/resources/grafana/sources/rhacs-cluster-overview.json b/resources/grafana/sources/rhacs-cluster-overview.json index ca0e6c2..974a693 100644 --- a/resources/grafana/sources/rhacs-cluster-overview.json +++ b/resources/grafana/sources/rhacs-cluster-overview.json @@ -25,8 +25,8 @@ "uid": "PBFA97CFB590B2093" }, "enable": true, - "iconColor": "purple", "expr": "count (count by (git_version) (label_replace(count_over_time(kubernetes_build_info{job!~\"kube-dns|coredns\"}[${__interval}]), \"git_version\", \"$1\", \"git_version\", \"(v[0-9]*.[0-9]*).*\"))) > 1", + "iconColor": "purple", "name": "Kubernetes Upgrade", "textFormat": "Kubernetes Upgrade" }, @@ -36,8 +36,8 @@ "uid": "PBFA97CFB590B2093" }, "enable": true, - "iconColor": "red", "expr": "count (count by (gitVersion) (count_over_time (openshift_apiserver_build_info[${__interval}]))) > 1", + "iconColor": "red", "name": "OpenShift Upgrade", "textFormat": "OpenShift Upgrade" } @@ -46,7 +46,7 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 23, + "id": 26, "links": [], "liveNow": false, "panels": [ @@ -515,8 +515,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -613,8 +612,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -663,19 +661,6 @@ "title": "Secured Clusters", "type": "timeseries" }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 25 - }, - "id": 16, - "panels": [], - "title": "Resources", - "type": "row" - }, { "datasource": { "type": "prometheus", @@ -723,8 +708,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -740,7 +724,7 @@ "h": 8, "w": 12, "x": 0, - "y": 26 + "y": 25 }, "id": 4, "options": { @@ -773,6 +757,19 @@ "title": "Network Received", "type": "timeseries" }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 16, + "panels": [], + "title": "Resources", + "type": "row" + }, { "datasource": { "type": "prometheus", @@ -820,8 +817,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -829,17 +825,17 @@ } ] }, - "unit": "Bps" + "unit": "percentunit" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 26 + "x": 0, + "y": 34 }, - "id": 5, + "id": 6, "options": { "legend": { "calcs": [], @@ -849,7 +845,7 @@ }, "tooltip": { "mode": "single", - "sort": "none" + "sort": "desc" } }, "pluginVersion": "9.1.0", @@ -860,14 +856,15 @@ "uid": "PBFA97CFB590B2093" }, "editorMode": "code", - "expr": "sum(rate(container_network_transmit_bytes_total{namespace=~\"rhacs-$instance_id\", job=~\"kubelet\"}[5m])) by (namespace)", + "expr": "sum(container_memory_working_set_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace) / sum(container_spec_memory_limit_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace)", + "format": "time_series", "interval": "", "legendFormat": "{{namespace}}", "range": true, "refId": "A" } ], - "title": "Network Transmitted", + "title": "Central Memory Usage", "type": "timeseries" }, { @@ -917,8 +914,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -926,17 +922,17 @@ } ] }, - "unit": "percentunit" + "unit": "Bps" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, + "x": 12, "y": 34 }, - "id": 6, + "id": 5, "options": { "legend": { "calcs": [], @@ -946,7 +942,7 @@ }, "tooltip": { "mode": "single", - "sort": "desc" + "sort": "none" } }, "pluginVersion": "9.1.0", @@ -957,15 +953,14 @@ "uid": "PBFA97CFB590B2093" }, "editorMode": "code", - "expr": "sum(container_memory_working_set_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace) / sum(container_spec_memory_limit_bytes{namespace=~\"rhacs-$instance_id\", container=\"central\", job=~\"kubelet\"}) by (namespace)", - "format": "time_series", + "expr": "sum(rate(container_network_transmit_bytes_total{namespace=~\"rhacs-$instance_id\", job=~\"kubelet\"}[5m])) by (namespace)", "interval": "", "legendFormat": "{{namespace}}", "range": true, "refId": "A" } ], - "title": "Central Memory Usage", + "title": "Network Transmitted", "type": "timeseries" }, { @@ -1029,8 +1024,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1108,7 +1102,7 @@ "content": "### Description\n\nThis graph shows the occurences per minute of **SELinux AVC denials** on the cluster.\nThese violations are logged on the cluster, propagated to CloudWatch, aggregated by a log metric, retrieved by the cloudwatch-exporter and finally scraped by Prometheus.\n\n**Expected: 0 violations.**\n\nA violation means that the cluster node's SELinux policy prevented a process' actions.\nAs an example, a violation could indicate that a process on the cluster tried to access a file which is SELinux-protected.\n\n### Drill-Down\n\nLog into the cluster's AWS account and use a [Log Insights query](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-3600~timeType~'RELATIVE~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40logStream*20like*20*2flinux-audit*2f*0a*7c*20filter*20*40message*20like*20*2fAVC*2f*0a*7c*20sort*20*40timestamp*20desc*0a*7c*20limit*201000~source~(~))) similar to this one:\n```\nfields @timestamp, @message, @logStream, @log\n| filter @logStream like /linux-audit/\n| filter @message like /AVC/\n| sort @timestamp desc\n| limit 1000\n```\n\n**Note:**\n* all CloudWatch related resources are located in the `us-east-1` region.\n* the log group containing the violation logs are called `acs-.audit`.\n", "mode": "markdown" }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "type": "text" }, { @@ -1159,8 +1153,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1238,7 +1231,7 @@ "content": "### Description\n\nThis graph shows the occurences per minute of Network Policy ACL denials on the cluster.\nThese violations are logged on the cluster, propagated to CloudWatch, aggregated by a log metric, retrieved by the cloudwatch-exporter and finally scraped by Prometheus.\n\n**Expected: 0 violations.**\n\nA violation means that network traffic was prevented due to a Kubernetes Network Policy.\nAs an example, a violation could indicate that communication between RHACS tenant namespaces\nwas attempted, which is strictly forbidden.\n\n### Drill-Down\n\nLog into the cluster's AWS account and use a [Log Insights query](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-3600~timeType~'RELATIVE~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40message*20like*20*2facl_log*28.*2a*29.*2a*5csverdict*3ddrop*2f*0a*7c*20filter*20*40logStream*20like*20*2f.*2aovn-audit*5c.log*2f*0a*7c*20sort*20*40timestamp*20desc*0a*7c*20limit*201000~source~(~))) similar to this one:\n```\nfields @timestamp, @message, @logStream, @log\n| filter @message like /acl_log(.*).*\\sverdict=drop/\n| filter @logStream like /.*ovn-audit\\.log/\n| sort @timestamp desc\n| limit 1000\n```\n\n**Note:**\n* all CloudWatch related resources are located in the `us-east-1` region.\n* the log group containing the violation logs are called `acs-.audit`.\n\n", "mode": "markdown" }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "type": "text" }, { @@ -1279,8 +1272,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1317,8 +1309,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -1471,7 +1462,7 @@ } ] }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "targets": [ { "datasource": { @@ -1656,8 +1647,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1722,8 +1712,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -1797,8 +1786,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "yellow", @@ -1872,8 +1860,7 @@ "mode": "percentage", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "#EAB839", @@ -1942,7 +1929,7 @@ } ] }, - "pluginVersion": "10.2.0", + "pluginVersion": "11.1.0", "targets": [ { "datasource": { @@ -2120,11 +2107,249 @@ } ], "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 85 + }, + "id": 149, + "panels": [], + "title": "Certificate Expiry", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "description": "Expiration dates for central and scanner TLS certificates.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 86 + }, + "id": 148, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": true, + "fields": "", + "reducer": ["sum"], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Expiration" + } + ] + }, + "pluginVersion": "11.1.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "code", + "exemplar": true, + "expr": "acs_fleetshard_certificate_expiration_timestamp * on (exported_namespace) group_left(rhacs_org_name) label_replace(rox_central_info, \"exported_namespace\", \"$1\", \"namespace\", \"(.*)\")", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "interval": "", + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "editorMode": "code", + "expr": "", + "hide": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + } + ], + "title": "Certificates Expiry", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": false, + "__name__": true, + "container": true, + "instance": true, + "job": true, + "namespace": true, + "pod": true, + "rhacs_cluster_name": true, + "rhacs_environment": true, + "rhacs_org_name": false + }, + "includeByName": {}, + "indexByName": { + "Time": 4, + "Value": 12, + "__name__": 5, + "container": 6, + "data_key": 3, + "exported_namespace": 0, + "instance": 7, + "job": 8, + "namespace": 1, + "pod": 9, + "rhacs_cluster_name": 10, + "rhacs_environment": 11, + "secret": 2 + }, + "renameByName": { + "Time": "Expiration", + "Value": "", + "container": "", + "data_key": "Key", + "exported_namespace": "Namespace", + "secret": "Secret" + } + } + }, + { + "id": "calculateField", + "options": { + "alias": "Expiration", + "binary": { + "left": "Value", + "operator": "*", + "right": "1000" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + } + } + }, + { + "id": "convertFieldType", + "options": { + "conversions": [ + { + "destinationType": "time", + "targetField": "Expiration" + } + ], + "fields": {} + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Value": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": {} + } + }, + { + "id": "groupBy", + "options": { + "fields": { + "Expiration": { + "aggregations": ["last"], + "operation": "aggregate" + }, + "Key": { + "aggregations": [], + "operation": "groupby" + }, + "Namespace": { + "aggregations": ["last"], + "operation": "groupby" + }, + "Secret": { + "aggregations": [], + "operation": "groupby" + }, + "rhacs_org_name": { + "aggregations": [], + "operation": "groupby" + } + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": { + "Expiration (last)": 1, + "Key": 4, + "Namespace": 0, + "Secret": 3, + "rhacs_org_name": 2 + }, + "renameByName": { + "Expiration (last)": "Expiration", + "Namespace (last)": "Namespace", + "rhacs_org_name": "Organization" + } + } + } + ], + "type": "table" } ], - "refresh": "", "revision": 1, - "schemaVersion": 38, + "schemaVersion": 39, "tags": ["rhacs"], "templating": { "list": [