Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCPBUGS-12857: Add NaN handling for Stacked Graphs #13712

Conversation

PeterYurkovich
Copy link
Contributor

@PeterYurkovich PeterYurkovich commented Apr 1, 2024

Issue:
https://issues.redhat.com/browse/OCPBUGS-12857

Analysis / Root cause:
There is a bug in stacked graphs for Victory charts for React. The bug occurs in their victory-stack package. An issue has been made and can be tracked FormidableLabs/victory#2844.

The root issue is a dataset which has dates in the x field and all null's in the y field. This causes a error to be thrown in the VictoryCharts, and leaves the chart looking like so:
Screenshot 2024-04-01 at 2 45 02 PM

Solution Description:
To get around this, for stacked charts we will be converting any NaN's returned from Prometheus to 0 rather than null. In order to help dashboard creators and power users to debug any problematic queries, we are also adding a console.warn to let them know about this conversion, while still showing the graph otherwise. This bug is being opened both here for the developer ta as well as in the monitoring-plugin repo for the admin tab openshift/monitoring-plugin#111

Screen shots:
Dashboard After Fix:
Screenshot 2024-04-01 at 2 46 46 PM

Test setup:
In order to test this PR, it is necessary to create a chart which responds with NaN values from Prometheus. To accomplish this we recreate one of the original locations that this bug was found, by applying an incomplete resource quota and then adding a dashboard with a stacked graph. After this bug was found, the original location has changed to being a line chart rather than a stacked chart. As such it is necessary to add both the resource quota and dashboard to reproduce the bug and then show the fix.

Resource Quota

Add the following Resource Quota to a namespace:

kind: ResourceQuota
apiVersion: v1
metadata:
  name: staging-workshop-quota
spec:
  hard:
    limits.cpu: '11'
    limits.memory: 15Gi
    pods: '12'
Reproduction Dashboard

Add the following dashboard to your cluster

kind: ConfigMap
apiVersion: v1
metadata:
  labels:
    console.openshift.io/dashboard: 'true'
    console.openshift.io/odc-dashboard: 'true'
  name: failure-dashboard
  namespace: openshift-config-managed
data:
  etcd.json: |-
    {
      "annotations": {
        "list": [

        ]
      },
      "editable": true,
      "gnetId": null,
      "graphTooltip": 0,
      "hideControls": false,
      "links": [

      ],
      "refresh": "10s",
      "rows": [
          {
              "collapse": false,
              "height": "250px",
              "panels": [
                  {
                      "aliasColors": {

                      },
                      "bars": false,
                      "dashLength": 10,
                      "dashes": false,
                      "datasource": "$datasource",
                      "fill": 10,
                      "id": 3,
                      "interval": "1m",
                      "legend": {
                          "alignAsTable": true,
                          "avg": false,
                          "current": false,
                          "max": false,
                          "min": false,
                          "rightSide": true,
                          "show": true,
                          "total": false,
                          "values": false
                      },
                      "lines": true,
                      "linewidth": 0,
                      "links": [

                      ],
                      "nullPointMode": "null as zero",
                      "percentage": false,
                      "pointradius": 5,
                      "points": false,
                      "renderer": "flot",
                      "seriesOverrides": [
                          {
                              "alias": "quota - requests",
                              "color": "#F2495C",
                              "dashes": true,
                              "fill": 0,
                              "hiddenSeries": true,
                              "hideTooltip": true,
                              "legend": true,
                              "linewidth": 2,
                              "stack": false
                          },
                          {
                              "alias": "quota - limits",
                              "color": "#FF9830",
                              "dashes": true,
                              "fill": 0,
                              "hiddenSeries": true,
                              "hideTooltip": true,
                              "legend": true,
                              "linewidth": 2,
                              "stack": false
                          }
                      ],
                      "spaceLength": 10,
                      "span": 12,
                      "stack": true,
                      "steppedLine": false,
                      "targets": [
                          {
                              "expr": "sum(    container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}  * on(namespace,pod)    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)",
                              "format": "time_series",
                              "intervalFactor": 2,
                              "legendFormat": "{{workload}} - {{workload_type}}",
                              "legendLink": null,
                              "step": 10
                          },
                          {
                              "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})",
                              "format": "time_series",
                              "intervalFactor": 2,
                              "legendFormat": "quota - requests",
                              "legendLink": null,
                              "step": 10
                          },
                          {
                              "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})",
                              "format": "time_series",
                              "intervalFactor": 2,
                              "legendFormat": "quota - limits",
                              "legendLink": null,
                              "step": 10
                          }
                      ],
                      "thresholds": [

                      ],
                      "timeFrom": null,
                      "timeShift": null,
                      "title": "Memory Usage",
                      "tooltip": {
                          "shared": false,
                          "sort": 2,
                          "value_type": "individual"
                      },
                      "type": "graph",
                      "xaxis": {
                          "buckets": null,
                          "mode": "time",
                          "name": null,
                          "show": true,
                          "values": [

                          ]
                      },
                      "yaxes": [
                          {
                              "format": "bytes",
                              "label": null,
                              "logBase": 1,
                              "max": null,
                              "min": 0,
                              "show": true
                          },
                          {
                              "format": "short",
                              "label": null,
                              "logBase": 1,
                              "max": null,
                              "min": null,
                              "show": false
                          }
                      ]
                  }
              ],
              "repeat": null,
              "repeatIteration": null,
              "repeatRowId": null,
              "showTitle": true,
              "title": "Memory Usage",
              "titleSize": "h6"
          }
      ],
      "schemaVersion": 14,
      "style": "dark",
      "tags": [
          "kubernetes-mixin"
      ],
      "templating": {
          "list": [
              {
                  "current": {
                      "text": "default",
                      "value": "default"
                  },
                  "hide": 0,
                  "label": "Data Source",
                  "name": "datasource",
                  "options": [

                  ],
                  "query": "prometheus",
                  "refresh": 1,
                  "regex": "",
                  "type": "datasource"
              },
              {
                  "allValue": null,
                  "current": {
                      "text": "",
                      "value": ""
                  },
                  "datasource": "$datasource",
                  "hide": 2,
                  "includeAll": false,
                  "label": null,
                  "multi": false,
                  "name": "cluster",
                  "options": [

                  ],
                  "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                  "refresh": 2,
                  "regex": "",
                  "sort": 1,
                  "tagValuesQuery": "",
                  "tags": [

                  ],
                  "tagsQuery": "",
                  "type": "query",
                  "useTags": false
              },
              {
                  "allValue": null,
                  "current": {
                      "text": "",
                      "value": ""
                  },
                  "datasource": "$datasource",
                  "hide": 0,
                  "includeAll": false,
                  "label": null,
                  "multi": false,
                  "name": "namespace",
                  "options": [

                  ],
                  "query": "label_values(kube_pod_info{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)",
                  "refresh": 2,
                  "regex": "",
                  "sort": 1,
                  "tagValuesQuery": "",
                  "tags": [

                  ],
                  "tagsQuery": "",
                  "type": "query",
                  "useTags": false
              },
              {
                  "allValue": null,
                  "auto": false,
                  "auto_count": 30,
                  "auto_min": "10s",
                  "current": {
                      "text": "deployment",
                      "value": "deployment"
                  },
                  "datasource": "$datasource",
                  "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                  "hide": 0,
                  "includeAll": false,
                  "label": null,
                  "multi": false,
                  "name": "type",
                  "options": [

                  ],
                  "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                  "refresh": 2,
                  "regex": "",
                  "skipUrlSync": false,
                  "sort": 0,
                  "tagValuesQuery": "",
                  "tags": [

                  ],
                  "tagsQuery": "",
                  "type": "query",
                  "useTags": false
              }
          ]
      },
      "time": {
          "from": "now-1h",
          "to": "now"
      },
      "timepicker": {
          "refresh_intervals": [
              "30s"
          ],
          "time_options": [
              "1h"
          ]
      },
      "timezone": "UTC",
      "title": "Failure",
      "uid": "a87fb0d919ec0ea5f6543124e16c42a6",
      "version": 0
    }

Tested Browsers

  • Chrome
  • Firefox
  • Safari
  • Edge

@openshift-ci-robot openshift-ci-robot added jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 1, 2024
@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: This pull request references Jira Issue OCPBUGS-12854, which is invalid:

  • expected the bug to be open, but it isn't
  • expected the bug to target either version "4.16." or "openshift-4.16.", but it targets "4.13.0" instead
  • expected the bug to be in one of the following states: NEW, ASSIGNED, POST, but it is Closed (Done) instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

In response to this:

Issue:
https://issues.redhat.com/browse/OCPBUGS-12857

Analysis / Root cause:
There is a bug in stacked graphs for Victory charts for react. The bug occurs in their victory-stack package. An issue has been made and can be tracked FormidableLabs/victory#2844.

The root issue is a dataset which has dates in the x field and all null's in the y field. This causes a error to be thrown in the VictoryCharts, and leaves the chart looking like so:
Screenshot 2024-04-01 at 2 45 02 PM

Solution Description:
To get around this, for stacked charts we will be converting any NaN's returned from Prometheus to 0 rather than null. In order to help dashboard creators and power users to debug any problematic queries, we are also adding a console.warn to let them know about this conversion, while still showing the graph otherwise. This bug is being opened both here for the developer tab repo as well as in the monitoring-plugin for the admin tab openshift/monitoring-plugin#111

Screen shots:
Dashboard After Fix:
Screenshot 2024-04-01 at 2 46 46 PM

Test setup:
In order to test this PR, it is necessary to create a chart which responds with NaN values from Prometheus. To accomplish this we recreate one of the original locations that this bug was found, but applying an incomplete resource quota and then adding a dashboard with a stacked graph. After this bug was found, the original location has changed to being a line chart rather than a stacked chart and no longer shows as an empty chart. As such it is necessary to add both the resource quota and dashboard to reproduce the bug and then show the fix.

Resource Quota

Add the following Resource Quota to a namespace:

kind: ResourceQuota
apiVersion: v1
metadata:
 name: staging-workshop-quota
spec:
 hard:
   limits.cpu: '11'
   limits.memory: 15Gi
   pods: '12'
Reproduction Dashboard

Add the folling dashboard to your cluster

kind: ConfigMap
apiVersion: v1
metadata:
 labels:
   console.openshift.io/dashboard: 'true'
   console.openshift.io/odc-dashboard: 'true'
 name: failure-dashboard
 namespace: openshift-config-managed
data:
 etcd.json: |-
   {
     "annotations": {
       "list": [

       ]
     },
     "editable": true,
     "gnetId": null,
     "graphTooltip": 0,
     "hideControls": false,
     "links": [

     ],
     "refresh": "10s",
     "rows": [
         {
             "collapse": false,
             "height": "250px",
             "panels": [
                 {
                     "aliasColors": {

                     },
                     "bars": false,
                     "dashLength": 10,
                     "dashes": false,
                     "datasource": "$datasource",
                     "fill": 10,
                     "id": 3,
                     "interval": "1m",
                     "legend": {
                         "alignAsTable": true,
                         "avg": false,
                         "current": false,
                         "max": false,
                         "min": false,
                         "rightSide": true,
                         "show": true,
                         "total": false,
                         "values": false
                     },
                     "lines": true,
                     "linewidth": 0,
                     "links": [

                     ],
                     "nullPointMode": "null as zero",
                     "percentage": false,
                     "pointradius": 5,
                     "points": false,
                     "renderer": "flot",
                     "seriesOverrides": [
                         {
                             "alias": "quota - requests",
                             "color": "#F2495C",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         },
                         {
                             "alias": "quota - limits",
                             "color": "#FF9830",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         }
                     ],
                     "spaceLength": 10,
                     "span": 12,
                     "stack": true,
                     "steppedLine": false,
                     "targets": [
                         {
                             "expr": "sum(    container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}  * on(namespace,pod)    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "{{workload}} - {{workload_type}}",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - requests",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - limits",
                             "legendLink": null,
                             "step": 10
                         }
                     ],
                     "thresholds": [

                     ],
                     "timeFrom": null,
                     "timeShift": null,
                     "title": "Memory Usage",
                     "tooltip": {
                         "shared": false,
                         "sort": 2,
                         "value_type": "individual"
                     },
                     "type": "graph",
                     "xaxis": {
                         "buckets": null,
                         "mode": "time",
                         "name": null,
                         "show": true,
                         "values": [

                         ]
                     },
                     "yaxes": [
                         {
                             "format": "bytes",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": 0,
                             "show": true
                         },
                         {
                             "format": "short",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": null,
                             "show": false
                         }
                     ]
                 }
             ],
             "repeat": null,
             "repeatIteration": null,
             "repeatRowId": null,
             "showTitle": true,
             "title": "Memory Usage",
             "titleSize": "h6"
         }
     ],
     "schemaVersion": 14,
     "style": "dark",
     "tags": [
         "kubernetes-mixin"
     ],
     "templating": {
         "list": [
             {
                 "current": {
                     "text": "default",
                     "value": "default"
                 },
                 "hide": 0,
                 "label": "Data Source",
                 "name": "datasource",
                 "options": [

                 ],
                 "query": "prometheus",
                 "refresh": 1,
                 "regex": "",
                 "type": "datasource"
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 2,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "cluster",
                 "options": [

                 ],
                 "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "namespace",
                 "options": [

                 ],
                 "query": "label_values(kube_pod_info{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "auto": false,
                 "auto_count": 30,
                 "auto_min": "10s",
                 "current": {
                     "text": "deployment",
                     "value": "deployment"
                 },
                 "datasource": "$datasource",
                 "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "type",
                 "options": [

                 ],
                 "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "refresh": 2,
                 "regex": "",
                 "skipUrlSync": false,
                 "sort": 0,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             }
         ]
     },
     "time": {
         "from": "now-1h",
         "to": "now"
     },
     "timepicker": {
         "refresh_intervals": [
             "30s"
         ],
         "time_options": [
             "1h"
         ]
     },
     "timezone": "UTC",
     "title": "Failure",
     "uid": "a87fb0d919ec0ea5f6543124e16c42a6",
     "version": 0
   }

Tested Browsers

  • Chrome
  • Firefox
  • Safari
  • Edge

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci bot added the component/shared Related to console-shared label Apr 1, 2024
@PeterYurkovich PeterYurkovich changed the title OCPBUGS-12854: Add NaN handling for Stacked Graphs OCPBUGS-12857: Add NaN handling for Stacked Graphs Apr 1, 2024
@openshift-ci-robot openshift-ci-robot removed the jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. label Apr 1, 2024
@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: This pull request references Jira Issue OCPBUGS-12857, which is invalid:

  • expected the bug to target the "4.16.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

In response to this:

Issue:
https://issues.redhat.com/browse/OCPBUGS-12857

Analysis / Root cause:
There is a bug in stacked graphs for Victory charts for react. The bug occurs in their victory-stack package. An issue has been made and can be tracked FormidableLabs/victory#2844.

The root issue is a dataset which has dates in the x field and all null's in the y field. This causes a error to be thrown in the VictoryCharts, and leaves the chart looking like so:
Screenshot 2024-04-01 at 2 45 02 PM

Solution Description:
To get around this, for stacked charts we will be converting any NaN's returned from Prometheus to 0 rather than null. In order to help dashboard creators and power users to debug any problematic queries, we are also adding a console.warn to let them know about this conversion, while still showing the graph otherwise. This bug is being opened both here for the developer tab repo as well as in the monitoring-plugin for the admin tab openshift/monitoring-plugin#111

Screen shots:
Dashboard After Fix:
Screenshot 2024-04-01 at 2 46 46 PM

Test setup:
In order to test this PR, it is necessary to create a chart which responds with NaN values from Prometheus. To accomplish this we recreate one of the original locations that this bug was found, but applying an incomplete resource quota and then adding a dashboard with a stacked graph. After this bug was found, the original location has changed to being a line chart rather than a stacked chart and no longer shows as an empty chart. As such it is necessary to add both the resource quota and dashboard to reproduce the bug and then show the fix.

Resource Quota

Add the following Resource Quota to a namespace:

kind: ResourceQuota
apiVersion: v1
metadata:
 name: staging-workshop-quota
spec:
 hard:
   limits.cpu: '11'
   limits.memory: 15Gi
   pods: '12'
Reproduction Dashboard

Add the following dashboard to your cluster

kind: ConfigMap
apiVersion: v1
metadata:
 labels:
   console.openshift.io/dashboard: 'true'
   console.openshift.io/odc-dashboard: 'true'
 name: failure-dashboard
 namespace: openshift-config-managed
data:
 etcd.json: |-
   {
     "annotations": {
       "list": [

       ]
     },
     "editable": true,
     "gnetId": null,
     "graphTooltip": 0,
     "hideControls": false,
     "links": [

     ],
     "refresh": "10s",
     "rows": [
         {
             "collapse": false,
             "height": "250px",
             "panels": [
                 {
                     "aliasColors": {

                     },
                     "bars": false,
                     "dashLength": 10,
                     "dashes": false,
                     "datasource": "$datasource",
                     "fill": 10,
                     "id": 3,
                     "interval": "1m",
                     "legend": {
                         "alignAsTable": true,
                         "avg": false,
                         "current": false,
                         "max": false,
                         "min": false,
                         "rightSide": true,
                         "show": true,
                         "total": false,
                         "values": false
                     },
                     "lines": true,
                     "linewidth": 0,
                     "links": [

                     ],
                     "nullPointMode": "null as zero",
                     "percentage": false,
                     "pointradius": 5,
                     "points": false,
                     "renderer": "flot",
                     "seriesOverrides": [
                         {
                             "alias": "quota - requests",
                             "color": "#F2495C",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         },
                         {
                             "alias": "quota - limits",
                             "color": "#FF9830",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         }
                     ],
                     "spaceLength": 10,
                     "span": 12,
                     "stack": true,
                     "steppedLine": false,
                     "targets": [
                         {
                             "expr": "sum(    container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}  * on(namespace,pod)    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "{{workload}} - {{workload_type}}",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - requests",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - limits",
                             "legendLink": null,
                             "step": 10
                         }
                     ],
                     "thresholds": [

                     ],
                     "timeFrom": null,
                     "timeShift": null,
                     "title": "Memory Usage",
                     "tooltip": {
                         "shared": false,
                         "sort": 2,
                         "value_type": "individual"
                     },
                     "type": "graph",
                     "xaxis": {
                         "buckets": null,
                         "mode": "time",
                         "name": null,
                         "show": true,
                         "values": [

                         ]
                     },
                     "yaxes": [
                         {
                             "format": "bytes",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": 0,
                             "show": true
                         },
                         {
                             "format": "short",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": null,
                             "show": false
                         }
                     ]
                 }
             ],
             "repeat": null,
             "repeatIteration": null,
             "repeatRowId": null,
             "showTitle": true,
             "title": "Memory Usage",
             "titleSize": "h6"
         }
     ],
     "schemaVersion": 14,
     "style": "dark",
     "tags": [
         "kubernetes-mixin"
     ],
     "templating": {
         "list": [
             {
                 "current": {
                     "text": "default",
                     "value": "default"
                 },
                 "hide": 0,
                 "label": "Data Source",
                 "name": "datasource",
                 "options": [

                 ],
                 "query": "prometheus",
                 "refresh": 1,
                 "regex": "",
                 "type": "datasource"
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 2,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "cluster",
                 "options": [

                 ],
                 "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "namespace",
                 "options": [

                 ],
                 "query": "label_values(kube_pod_info{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "auto": false,
                 "auto_count": 30,
                 "auto_min": "10s",
                 "current": {
                     "text": "deployment",
                     "value": "deployment"
                 },
                 "datasource": "$datasource",
                 "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "type",
                 "options": [

                 ],
                 "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "refresh": 2,
                 "regex": "",
                 "skipUrlSync": false,
                 "sort": 0,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             }
         ]
     },
     "time": {
         "from": "now-1h",
         "to": "now"
     },
     "timepicker": {
         "refresh_intervals": [
             "30s"
         ],
         "time_options": [
             "1h"
         ]
     },
     "timezone": "UTC",
     "title": "Failure",
     "uid": "a87fb0d919ec0ea5f6543124e16c42a6",
     "version": 0
   }

Tested Browsers

  • Chrome
  • Firefox
  • Safari
  • Edge

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@PeterYurkovich
Copy link
Contributor Author

/jira refresh

@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: This pull request references Jira Issue OCPBUGS-12857, which is invalid:

  • expected the bug to target the "4.16.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@PeterYurkovich
Copy link
Contributor Author

/jira refresh

@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: This pull request references Jira Issue OCPBUGS-12857, which is invalid:

  • expected the bug to target the "4.16.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@PeterYurkovich
Copy link
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 1, 2024
@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: This pull request references Jira Issue OCPBUGS-12857, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.16.0) matches configured target version for branch (4.16.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @juzhao

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: This pull request references Jira Issue OCPBUGS-12857, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.16.0) matches configured target version for branch (4.16.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @juzhao

In response to this:

Issue:
https://issues.redhat.com/browse/OCPBUGS-12857

Analysis / Root cause:
There is a bug in stacked graphs for Victory charts for React. The bug occurs in their victory-stack package. An issue has been made and can be tracked FormidableLabs/victory#2844.

The root issue is a dataset which has dates in the x field and all null's in the y field. This causes a error to be thrown in the VictoryCharts, and leaves the chart looking like so:
Screenshot 2024-04-01 at 2 45 02 PM

Solution Description:
To get around this, for stacked charts we will be converting any NaN's returned from Prometheus to 0 rather than null. In order to help dashboard creators and power users to debug any problematic queries, we are also adding a console.warn to let them know about this conversion, while still showing the graph otherwise. This bug is being opened both here for the developer tab repo as well as in the monitoring-plugin for the admin tab openshift/monitoring-plugin#111

Screen shots:
Dashboard After Fix:
Screenshot 2024-04-01 at 2 46 46 PM

Test setup:
In order to test this PR, it is necessary to create a chart which responds with NaN values from Prometheus. To accomplish this we recreate one of the original locations that this bug was found, but applying an incomplete resource quota and then adding a dashboard with a stacked graph. After this bug was found, the original location has changed to being a line chart rather than a stacked chart and no longer shows as an empty chart. As such it is necessary to add both the resource quota and dashboard to reproduce the bug and then show the fix.

Resource Quota

Add the following Resource Quota to a namespace:

kind: ResourceQuota
apiVersion: v1
metadata:
 name: staging-workshop-quota
spec:
 hard:
   limits.cpu: '11'
   limits.memory: 15Gi
   pods: '12'
Reproduction Dashboard

Add the following dashboard to your cluster

kind: ConfigMap
apiVersion: v1
metadata:
 labels:
   console.openshift.io/dashboard: 'true'
   console.openshift.io/odc-dashboard: 'true'
 name: failure-dashboard
 namespace: openshift-config-managed
data:
 etcd.json: |-
   {
     "annotations": {
       "list": [

       ]
     },
     "editable": true,
     "gnetId": null,
     "graphTooltip": 0,
     "hideControls": false,
     "links": [

     ],
     "refresh": "10s",
     "rows": [
         {
             "collapse": false,
             "height": "250px",
             "panels": [
                 {
                     "aliasColors": {

                     },
                     "bars": false,
                     "dashLength": 10,
                     "dashes": false,
                     "datasource": "$datasource",
                     "fill": 10,
                     "id": 3,
                     "interval": "1m",
                     "legend": {
                         "alignAsTable": true,
                         "avg": false,
                         "current": false,
                         "max": false,
                         "min": false,
                         "rightSide": true,
                         "show": true,
                         "total": false,
                         "values": false
                     },
                     "lines": true,
                     "linewidth": 0,
                     "links": [

                     ],
                     "nullPointMode": "null as zero",
                     "percentage": false,
                     "pointradius": 5,
                     "points": false,
                     "renderer": "flot",
                     "seriesOverrides": [
                         {
                             "alias": "quota - requests",
                             "color": "#F2495C",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         },
                         {
                             "alias": "quota - limits",
                             "color": "#FF9830",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         }
                     ],
                     "spaceLength": 10,
                     "span": 12,
                     "stack": true,
                     "steppedLine": false,
                     "targets": [
                         {
                             "expr": "sum(    container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}  * on(namespace,pod)    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "{{workload}} - {{workload_type}}",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - requests",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - limits",
                             "legendLink": null,
                             "step": 10
                         }
                     ],
                     "thresholds": [

                     ],
                     "timeFrom": null,
                     "timeShift": null,
                     "title": "Memory Usage",
                     "tooltip": {
                         "shared": false,
                         "sort": 2,
                         "value_type": "individual"
                     },
                     "type": "graph",
                     "xaxis": {
                         "buckets": null,
                         "mode": "time",
                         "name": null,
                         "show": true,
                         "values": [

                         ]
                     },
                     "yaxes": [
                         {
                             "format": "bytes",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": 0,
                             "show": true
                         },
                         {
                             "format": "short",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": null,
                             "show": false
                         }
                     ]
                 }
             ],
             "repeat": null,
             "repeatIteration": null,
             "repeatRowId": null,
             "showTitle": true,
             "title": "Memory Usage",
             "titleSize": "h6"
         }
     ],
     "schemaVersion": 14,
     "style": "dark",
     "tags": [
         "kubernetes-mixin"
     ],
     "templating": {
         "list": [
             {
                 "current": {
                     "text": "default",
                     "value": "default"
                 },
                 "hide": 0,
                 "label": "Data Source",
                 "name": "datasource",
                 "options": [

                 ],
                 "query": "prometheus",
                 "refresh": 1,
                 "regex": "",
                 "type": "datasource"
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 2,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "cluster",
                 "options": [

                 ],
                 "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "namespace",
                 "options": [

                 ],
                 "query": "label_values(kube_pod_info{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "auto": false,
                 "auto_count": 30,
                 "auto_min": "10s",
                 "current": {
                     "text": "deployment",
                     "value": "deployment"
                 },
                 "datasource": "$datasource",
                 "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "type",
                 "options": [

                 ],
                 "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "refresh": 2,
                 "regex": "",
                 "skipUrlSync": false,
                 "sort": 0,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             }
         ]
     },
     "time": {
         "from": "now-1h",
         "to": "now"
     },
     "timepicker": {
         "refresh_intervals": [
             "30s"
         ],
         "time_options": [
             "1h"
         ]
     },
     "timezone": "UTC",
     "title": "Failure",
     "uid": "a87fb0d919ec0ea5f6543124e16c42a6",
     "version": 0
   }

Tested Browsers

  • Chrome
  • Firefox
  • Safari
  • Edge

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link
Contributor

openshift-ci bot commented Apr 1, 2024

@PeterYurkovich: all tests passed!

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@jgbernalp
Copy link
Contributor

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Apr 9, 2024
@juzhao
Copy link

juzhao commented Apr 11, 2024

test along with along with openshift/monitoring-plugin#111, stacked Graphs is handling NaN well, steps see from https://issues.redhat.com/browse/OCPBUGS-12857

@openshift-ci openshift-ci bot added the qe-approved Signifies that QE has signed off on this PR label Apr 11, 2024
@juzhao
Copy link

juzhao commented Apr 11, 2024

/label qe-approved

@PeterYurkovich
Copy link
Contributor Author

/assign @kyoto

@kyoto
Copy link
Member

kyoto commented Apr 18, 2024

/approve

Copy link
Contributor

openshift-ci bot commented Apr 18, 2024

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jgbernalp, kyoto, PeterYurkovich

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 18, 2024
@openshift-merge-bot openshift-merge-bot bot merged commit bd85036 into openshift:master Apr 18, 2024
6 checks passed
@openshift-ci-robot
Copy link
Contributor

@PeterYurkovich: Jira Issue OCPBUGS-12857: All pull requests linked via external trackers have merged:

Jira Issue OCPBUGS-12857 has been moved to the MODIFIED state.

In response to this:

Issue:
https://issues.redhat.com/browse/OCPBUGS-12857

Analysis / Root cause:
There is a bug in stacked graphs for Victory charts for React. The bug occurs in their victory-stack package. An issue has been made and can be tracked FormidableLabs/victory#2844.

The root issue is a dataset which has dates in the x field and all null's in the y field. This causes a error to be thrown in the VictoryCharts, and leaves the chart looking like so:
Screenshot 2024-04-01 at 2 45 02 PM

Solution Description:
To get around this, for stacked charts we will be converting any NaN's returned from Prometheus to 0 rather than null. In order to help dashboard creators and power users to debug any problematic queries, we are also adding a console.warn to let them know about this conversion, while still showing the graph otherwise. This bug is being opened both here for the developer ta as well as in the monitoring-plugin repo for the admin tab openshift/monitoring-plugin#111

Screen shots:
Dashboard After Fix:
Screenshot 2024-04-01 at 2 46 46 PM

Test setup:
In order to test this PR, it is necessary to create a chart which responds with NaN values from Prometheus. To accomplish this we recreate one of the original locations that this bug was found, by applying an incomplete resource quota and then adding a dashboard with a stacked graph. After this bug was found, the original location has changed to being a line chart rather than a stacked chart. As such it is necessary to add both the resource quota and dashboard to reproduce the bug and then show the fix.

Resource Quota

Add the following Resource Quota to a namespace:

kind: ResourceQuota
apiVersion: v1
metadata:
 name: staging-workshop-quota
spec:
 hard:
   limits.cpu: '11'
   limits.memory: 15Gi
   pods: '12'
Reproduction Dashboard

Add the following dashboard to your cluster

kind: ConfigMap
apiVersion: v1
metadata:
 labels:
   console.openshift.io/dashboard: 'true'
   console.openshift.io/odc-dashboard: 'true'
 name: failure-dashboard
 namespace: openshift-config-managed
data:
 etcd.json: |-
   {
     "annotations": {
       "list": [

       ]
     },
     "editable": true,
     "gnetId": null,
     "graphTooltip": 0,
     "hideControls": false,
     "links": [

     ],
     "refresh": "10s",
     "rows": [
         {
             "collapse": false,
             "height": "250px",
             "panels": [
                 {
                     "aliasColors": {

                     },
                     "bars": false,
                     "dashLength": 10,
                     "dashes": false,
                     "datasource": "$datasource",
                     "fill": 10,
                     "id": 3,
                     "interval": "1m",
                     "legend": {
                         "alignAsTable": true,
                         "avg": false,
                         "current": false,
                         "max": false,
                         "min": false,
                         "rightSide": true,
                         "show": true,
                         "total": false,
                         "values": false
                     },
                     "lines": true,
                     "linewidth": 0,
                     "links": [

                     ],
                     "nullPointMode": "null as zero",
                     "percentage": false,
                     "pointradius": 5,
                     "points": false,
                     "renderer": "flot",
                     "seriesOverrides": [
                         {
                             "alias": "quota - requests",
                             "color": "#F2495C",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         },
                         {
                             "alias": "quota - limits",
                             "color": "#FF9830",
                             "dashes": true,
                             "fill": 0,
                             "hiddenSeries": true,
                             "hideTooltip": true,
                             "legend": true,
                             "linewidth": 2,
                             "stack": false
                         }
                     ],
                     "spaceLength": 10,
                     "span": 12,
                     "stack": true,
                     "steppedLine": false,
                     "targets": [
                         {
                             "expr": "sum(    container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}  * on(namespace,pod)    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "{{workload}} - {{workload_type}}",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - requests",
                             "legendLink": null,
                             "step": 10
                         },
                         {
                             "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})",
                             "format": "time_series",
                             "intervalFactor": 2,
                             "legendFormat": "quota - limits",
                             "legendLink": null,
                             "step": 10
                         }
                     ],
                     "thresholds": [

                     ],
                     "timeFrom": null,
                     "timeShift": null,
                     "title": "Memory Usage",
                     "tooltip": {
                         "shared": false,
                         "sort": 2,
                         "value_type": "individual"
                     },
                     "type": "graph",
                     "xaxis": {
                         "buckets": null,
                         "mode": "time",
                         "name": null,
                         "show": true,
                         "values": [

                         ]
                     },
                     "yaxes": [
                         {
                             "format": "bytes",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": 0,
                             "show": true
                         },
                         {
                             "format": "short",
                             "label": null,
                             "logBase": 1,
                             "max": null,
                             "min": null,
                             "show": false
                         }
                     ]
                 }
             ],
             "repeat": null,
             "repeatIteration": null,
             "repeatRowId": null,
             "showTitle": true,
             "title": "Memory Usage",
             "titleSize": "h6"
         }
     ],
     "schemaVersion": 14,
     "style": "dark",
     "tags": [
         "kubernetes-mixin"
     ],
     "templating": {
         "list": [
             {
                 "current": {
                     "text": "default",
                     "value": "default"
                 },
                 "hide": 0,
                 "label": "Data Source",
                 "name": "datasource",
                 "options": [

                 ],
                 "query": "prometheus",
                 "refresh": 1,
                 "regex": "",
                 "type": "datasource"
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 2,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "cluster",
                 "options": [

                 ],
                 "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "current": {
                     "text": "",
                     "value": ""
                 },
                 "datasource": "$datasource",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "namespace",
                 "options": [

                 ],
                 "query": "label_values(kube_pod_info{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)",
                 "refresh": 2,
                 "regex": "",
                 "sort": 1,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             },
             {
                 "allValue": null,
                 "auto": false,
                 "auto_count": 30,
                 "auto_min": "10s",
                 "current": {
                     "text": "deployment",
                     "value": "deployment"
                 },
                 "datasource": "$datasource",
                 "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "hide": 0,
                 "includeAll": false,
                 "label": null,
                 "multi": false,
                 "name": "type",
                 "options": [

                 ],
                 "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=~\".+\"}, workload_type)",
                 "refresh": 2,
                 "regex": "",
                 "skipUrlSync": false,
                 "sort": 0,
                 "tagValuesQuery": "",
                 "tags": [

                 ],
                 "tagsQuery": "",
                 "type": "query",
                 "useTags": false
             }
         ]
     },
     "time": {
         "from": "now-1h",
         "to": "now"
     },
     "timepicker": {
         "refresh_intervals": [
             "30s"
         ],
         "time_options": [
             "1h"
         ]
     },
     "timezone": "UTC",
     "title": "Failure",
     "uid": "a87fb0d919ec0ea5f6543124e16c42a6",
     "version": 0
   }

Tested Browsers

  • Chrome
  • Firefox
  • Safari
  • Edge

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-bot
Copy link
Contributor

[ART PR BUILD NOTIFIER]

This PR has been included in build openshift-enterprise-console-container-v4.16.0-202404181209.p0.gbd85036.assembly.stream.el9 for distgit openshift-enterprise-console.
All builds following this will include this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. component/shared Related to console-shared jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. qe-approved Signifies that QE has signed off on this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants