github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/configs/legacy_promql/testdata/aggregators.test (about) 1 load 5m 2 http_requests{job="api-server", instance="0", group="production"} 0+10x10 3 http_requests{job="api-server", instance="1", group="production"} 0+20x10 4 http_requests{job="api-server", instance="0", group="canary"} 0+30x10 5 http_requests{job="api-server", instance="1", group="canary"} 0+40x10 6 http_requests{job="app-server", instance="0", group="production"} 0+50x10 7 http_requests{job="app-server", instance="1", group="production"} 0+60x10 8 http_requests{job="app-server", instance="0", group="canary"} 0+70x10 9 http_requests{job="app-server", instance="1", group="canary"} 0+80x10 10 11 load 5m 12 foo{job="api-server", instance="0", region="europe"} 0+90x10 13 foo{job="api-server"} 0+100x10 14 15 # Simple sum. 16 eval instant at 50m SUM BY (group) (http_requests{job="api-server"}) 17 {group="canary"} 700 18 {group="production"} 300 19 20 # Test alternative "by"-clause order. 21 eval instant at 50m sum by (group) (http_requests{job="api-server"}) 22 {group="canary"} 700 23 {group="production"} 300 24 25 # Simple average. 26 eval instant at 50m avg by (group) (http_requests{job="api-server"}) 27 {group="canary"} 350 28 {group="production"} 150 29 30 # Simple count. 31 eval instant at 50m count by (group) (http_requests{job="api-server"}) 32 {group="canary"} 2 33 {group="production"} 2 34 35 # Simple without. 36 eval instant at 50m sum without (instance) (http_requests{job="api-server"}) 37 {group="canary",job="api-server"} 700 38 {group="production",job="api-server"} 300 39 40 # Empty by. 41 eval instant at 50m sum by () (http_requests{job="api-server"}) 42 {} 1000 43 44 # No by/without. 45 eval instant at 50m sum(http_requests{job="api-server"}) 46 {} 1000 47 48 # Empty without. 49 eval instant at 50m sum without () (http_requests{job="api-server",group="production"}) 50 {group="production",job="api-server",instance="0"} 100 51 {group="production",job="api-server",instance="1"} 200 52 53 # Without with mismatched and missing labels. Do not do this. 54 eval instant at 50m sum without (instance) (http_requests{job="api-server"} or foo) 55 {group="canary",job="api-server"} 700 56 {group="production",job="api-server"} 300 57 {region="europe",job="api-server"} 900 58 {job="api-server"} 1000 59 60 # Lower-cased aggregation operators should work too. 61 eval instant at 50m sum(http_requests) by (job) + min(http_requests) by (job) + max(http_requests) by (job) + avg(http_requests) by (job) 62 {job="app-server"} 4550 63 {job="api-server"} 1750 64 65 # Test alternative "by"-clause order. 66 eval instant at 50m sum by (group) (http_requests{job="api-server"}) 67 {group="canary"} 700 68 {group="production"} 300 69 70 # Test both alternative "by"-clause orders in one expression. 71 # Public health warning: stick to one form within an expression (or even 72 # in an organization), or risk serious user confusion. 73 eval instant at 50m sum(sum by (group) (http_requests{job="api-server"})) by (job) 74 {} 1000 75 76 77 78 # Standard deviation and variance. 79 eval instant at 50m stddev(http_requests) 80 {} 229.12878474779 81 82 eval instant at 50m stddev by (instance)(http_requests) 83 {instance="0"} 223.60679774998 84 {instance="1"} 223.60679774998 85 86 eval instant at 50m stdvar(http_requests) 87 {} 52500 88 89 eval instant at 50m stdvar by (instance)(http_requests) 90 {instance="0"} 50000 91 {instance="1"} 50000 92 93 94 95 # Regression test for missing separator byte in labelsToGroupingKey. 96 clear 97 load 5m 98 label_grouping_test{a="aa", b="bb"} 0+10x10 99 label_grouping_test{a="a", b="abb"} 0+20x10 100 101 eval instant at 50m sum(label_grouping_test) by (a, b) 102 {a="a", b="abb"} 200 103 {a="aa", b="bb"} 100 104 105 106 107 # Tests for min/max. 108 clear 109 load 5m 110 http_requests{job="api-server", instance="0", group="production"} 1 111 http_requests{job="api-server", instance="1", group="production"} 2 112 http_requests{job="api-server", instance="0", group="canary"} NaN 113 http_requests{job="api-server", instance="1", group="canary"} 3 114 http_requests{job="api-server", instance="2", group="canary"} 4 115 116 eval instant at 0m max(http_requests) 117 {} 4 118 119 eval instant at 0m min(http_requests) 120 {} 1 121 122 eval instant at 0m max by (group) (http_requests) 123 {group="production"} 2 124 {group="canary"} 4 125 126 eval instant at 0m min by (group) (http_requests) 127 {group="production"} 1 128 {group="canary"} 3 129 130 clear 131 132 # Tests for topk/bottomk. 133 load 5m 134 http_requests{job="api-server", instance="0", group="production"} 0+10x10 135 http_requests{job="api-server", instance="1", group="production"} 0+20x10 136 http_requests{job="api-server", instance="2", group="production"} NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 137 http_requests{job="api-server", instance="0", group="canary"} 0+30x10 138 http_requests{job="api-server", instance="1", group="canary"} 0+40x10 139 http_requests{job="app-server", instance="0", group="production"} 0+50x10 140 http_requests{job="app-server", instance="1", group="production"} 0+60x10 141 http_requests{job="app-server", instance="0", group="canary"} 0+70x10 142 http_requests{job="app-server", instance="1", group="canary"} 0+80x10 143 144 eval_ordered instant at 50m topk(3, http_requests) 145 http_requests{group="canary", instance="1", job="app-server"} 800 146 http_requests{group="canary", instance="0", job="app-server"} 700 147 http_requests{group="production", instance="1", job="app-server"} 600 148 149 eval_ordered instant at 50m topk(5, http_requests{group="canary",job="app-server"}) 150 http_requests{group="canary", instance="1", job="app-server"} 800 151 http_requests{group="canary", instance="0", job="app-server"} 700 152 153 eval_ordered instant at 50m bottomk(3, http_requests) 154 http_requests{group="production", instance="0", job="api-server"} 100 155 http_requests{group="production", instance="1", job="api-server"} 200 156 http_requests{group="canary", instance="0", job="api-server"} 300 157 158 eval_ordered instant at 50m bottomk(5, http_requests{group="canary",job="app-server"}) 159 http_requests{group="canary", instance="0", job="app-server"} 700 160 http_requests{group="canary", instance="1", job="app-server"} 800 161 162 eval instant at 50m topk by (group) (1, http_requests) 163 http_requests{group="production", instance="1", job="app-server"} 600 164 http_requests{group="canary", instance="1", job="app-server"} 800 165 166 eval instant at 50m bottomk by (group) (2, http_requests) 167 http_requests{group="canary", instance="0", job="api-server"} 300 168 http_requests{group="canary", instance="1", job="api-server"} 400 169 http_requests{group="production", instance="0", job="api-server"} 100 170 http_requests{group="production", instance="1", job="api-server"} 200 171 172 eval_ordered instant at 50m bottomk by (group) (2, http_requests{group="production"}) 173 http_requests{group="production", instance="0", job="api-server"} 100 174 http_requests{group="production", instance="1", job="api-server"} 200 175 176 # Test NaN is sorted away from the top/bottom. 177 eval_ordered instant at 50m topk(3, http_requests{job="api-server",group="production"}) 178 http_requests{job="api-server", instance="1", group="production"} 200 179 http_requests{job="api-server", instance="0", group="production"} 100 180 http_requests{job="api-server", instance="2", group="production"} NaN 181 182 eval_ordered instant at 50m bottomk(3, http_requests{job="api-server",group="production"}) 183 http_requests{job="api-server", instance="0", group="production"} 100 184 http_requests{job="api-server", instance="1", group="production"} 200 185 http_requests{job="api-server", instance="2", group="production"} NaN 186 187 # Test topk and bottomk allocate min(k, input_vector) for results vector 188 eval_ordered instant at 50m bottomk(9999999999, http_requests{job="app-server",group="canary"}) 189 http_requests{group="canary", instance="0", job="app-server"} 700 190 http_requests{group="canary", instance="1", job="app-server"} 800 191 192 eval_ordered instant at 50m topk(9999999999, http_requests{job="api-server",group="production"}) 193 http_requests{job="api-server", instance="1", group="production"} 200 194 http_requests{job="api-server", instance="0", group="production"} 100 195 http_requests{job="api-server", instance="2", group="production"} NaN 196 197 clear 198 199 # Tests for count_values. 200 load 5m 201 version{job="api-server", instance="0", group="production"} 6 202 version{job="api-server", instance="1", group="production"} 6 203 version{job="api-server", instance="2", group="production"} 6 204 version{job="api-server", instance="0", group="canary"} 8 205 version{job="api-server", instance="1", group="canary"} 8 206 version{job="app-server", instance="0", group="production"} 6 207 version{job="app-server", instance="1", group="production"} 6 208 version{job="app-server", instance="0", group="canary"} 7 209 version{job="app-server", instance="1", group="canary"} 7 210 211 eval instant at 5m count_values("version", version) 212 {version="6"} 5 213 {version="7"} 2 214 {version="8"} 2 215 216 eval instant at 5m count_values without (instance)("version", version) 217 {job="api-server", group="production", version="6"} 3 218 {job="api-server", group="canary", version="8"} 2 219 {job="app-server", group="production", version="6"} 2 220 {job="app-server", group="canary", version="7"} 2 221 222 # Overwrite label with output. Don't do this. 223 eval instant at 5m count_values without (instance)("job", version) 224 {job="6", group="production"} 5 225 {job="8", group="canary"} 2 226 {job="7", group="canary"} 2 227 228 # Overwrite label with output. Don't do this. 229 eval instant at 5m count_values by (job, group)("job", version) 230 {job="6", group="production"} 5 231 {job="8", group="canary"} 2 232 {job="7", group="canary"} 2 233 234 235 # Tests for quantile. 236 clear 237 238 load 10s 239 data{test="two samples",point="a"} 0 240 data{test="two samples",point="b"} 1 241 data{test="three samples",point="a"} 0 242 data{test="three samples",point="b"} 1 243 data{test="three samples",point="c"} 2 244 data{test="uneven samples",point="a"} 0 245 data{test="uneven samples",point="b"} 1 246 data{test="uneven samples",point="c"} 4 247 248 eval instant at 1m quantile without(point)(0.8, data) 249 {test="two samples"} 0.8 250 {test="three samples"} 1.6 251 {test="uneven samples"} 2.8