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)
{
"metric": {
"workload": "zmx"
},
"value": [
1669274927.023,
"0"
]
},{
"metric": {
"workload": "efg"
},
"value": [
1669274927.023,
"0"
]
}
{
"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?
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","(.+)"))