Search code examples
prometheuspromql

Is it possible to concatenate the result of two of promql?


The result of two of promql below would have same label.
1.sum by(workload) (label_replace(kube_replicaset_status_replicas{},"workload","$1","replicaset","(.+)")) 2.sum by(workload) (label_replace(kube_statefulset_replicas{},"workload","$1","statefulset","(.+)"))

ex)

  1. sum by(workload) (label_replace(kube_replicaset_status_replicas{},"workload","$1","replicaset","(.+)"))
{
        "metric": {
          "workload": "zmx"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  },{
        "metric": {
          "workload": "efg"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  }  
  1. sum by(workload) (label_replace(kube_statefulset_replicas{},"workload","$1","statefulset","(.+)"))
{
        "metric": {
          "workload": "abc"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  },{
        "metric": {
          "workload": "efg"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  }  

The concatenation would look like below

{
        "metric": {
          "workload": "abc"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  },{
        "metric": {
          "workload": "efg"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  },{
        "metric": {
          "workload": "zmx"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  },{
        "metric": {
          "workload": "efg"
        },
        "value": [
          1669274927.023,
          "0"
        ]
  }  


Can I get the result above directly from a single promql?


Solution

  • Try to use the "or" operator:

    sum by(workload) (label_replace(kube_replicaset_status_replicas{},"workload","$1","replicaset","(.+)")) or sum by(workload) (label_replace(kube_statefulset_replicas{},"workload","$1","statefulset","(.+)"))