github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/configs/legacy_promql/testdata/operators.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  	vector_matching_a{l="x"} 0+1x100
    13  	vector_matching_a{l="y"} 0+2x50
    14  	vector_matching_b{l="x"} 0+4x25
    15  
    16  
    17  eval instant at 50m SUM(http_requests) BY (job) - COUNT(http_requests) BY (job)
    18  	{job="api-server"} 996
    19  	{job="app-server"} 2596
    20  
    21  eval instant at 50m 2 - SUM(http_requests) BY (job)
    22  	{job="api-server"} -998
    23  	{job="app-server"} -2598
    24  
    25  eval instant at 50m -http_requests{job="api-server",instance="0",group="production"}
    26    {job="api-server",instance="0",group="production"} -100
    27  
    28  eval instant at 50m +http_requests{job="api-server",instance="0",group="production"}
    29    http_requests{job="api-server",instance="0",group="production"} 100
    30  
    31  eval instant at 50m - - - SUM(http_requests) BY (job)
    32  	{job="api-server"} -1000
    33  	{job="app-server"} -2600
    34  
    35  eval instant at 50m - - - 1
    36    -1
    37  
    38  eval instant at 50m 1000 / SUM(http_requests) BY (job)
    39  	{job="api-server"} 1
    40  	{job="app-server"} 0.38461538461538464
    41  
    42  eval instant at 50m SUM(http_requests) BY (job) - 2
    43  	{job="api-server"} 998
    44  	{job="app-server"} 2598
    45  
    46  eval instant at 50m SUM(http_requests) BY (job) % 3
    47  	{job="api-server"} 1
    48  	{job="app-server"} 2
    49  
    50  eval instant at 50m SUM(http_requests) BY (job) % 0.3
    51  	{job="api-server"} 0.1
    52  	{job="app-server"} 0.2
    53  
    54  eval instant at 50m SUM(http_requests) BY (job) ^ 2
    55  	{job="api-server"} 1000000
    56  	{job="app-server"} 6760000
    57  
    58  eval instant at 50m SUM(http_requests) BY (job) % 3 ^ 2
    59  	{job="api-server"} 1
    60  	{job="app-server"} 8
    61  
    62  eval instant at 50m SUM(http_requests) BY (job) % 2 ^ (3 ^ 2)
    63  	{job="api-server"} 488
    64  	{job="app-server"} 40
    65  
    66  eval instant at 50m SUM(http_requests) BY (job) % 2 ^ 3 ^ 2
    67  	{job="api-server"} 488
    68  	{job="app-server"} 40
    69  
    70  eval instant at 50m SUM(http_requests) BY (job) % 2 ^ 3 ^ 2 ^ 2
    71  	{job="api-server"} 1000
    72  	{job="app-server"} 2600
    73  
    74  eval instant at 50m COUNT(http_requests) BY (job) ^ COUNT(http_requests) BY (job)
    75  	{job="api-server"} 256
    76  	{job="app-server"} 256
    77  
    78  eval instant at 50m SUM(http_requests) BY (job) / 0
    79  	{job="api-server"} +Inf
    80  	{job="app-server"} +Inf
    81  
    82  eval instant at 50m SUM(http_requests) BY (job) + SUM(http_requests) BY (job)
    83  	{job="api-server"} 2000
    84  	{job="app-server"} 5200
    85  
    86  
    87  eval instant at 50m http_requests{job="api-server", group="canary"}
    88  	http_requests{group="canary", instance="0", job="api-server"} 300
    89  	http_requests{group="canary", instance="1", job="api-server"} 400
    90  
    91  eval instant at 50m http_requests{job="api-server", group="canary"} + rate(http_requests{job="api-server"}[5m]) * 5 * 60
    92  	{group="canary", instance="0", job="api-server"} 330
    93  	{group="canary", instance="1", job="api-server"} 440
    94  
    95  eval instant at 50m rate(http_requests[25m]) * 25 * 60
    96    {group="canary", instance="0", job="api-server"} 150
    97    {group="canary", instance="0", job="app-server"} 350
    98    {group="canary", instance="1", job="api-server"} 200
    99    {group="canary", instance="1", job="app-server"} 400
   100    {group="production", instance="0", job="api-server"} 50
   101    {group="production", instance="0", job="app-server"} 249.99999999999997
   102    {group="production", instance="1", job="api-server"} 100
   103    {group="production", instance="1", job="app-server"} 300
   104  
   105  
   106  eval instant at 50m http_requests{group="canary"} and http_requests{instance="0"}
   107  	http_requests{group="canary", instance="0", job="api-server"} 300
   108  	http_requests{group="canary", instance="0", job="app-server"} 700
   109  
   110  eval instant at 50m (http_requests{group="canary"} + 1) and http_requests{instance="0"}
   111  	{group="canary", instance="0", job="api-server"} 301
   112  	{group="canary", instance="0", job="app-server"} 701
   113  
   114  eval instant at 50m (http_requests{group="canary"} + 1) and on(instance, job) http_requests{instance="0", group="production"}
   115  	{group="canary", instance="0", job="api-server"} 301
   116  	{group="canary", instance="0", job="app-server"} 701
   117  
   118  eval instant at 50m (http_requests{group="canary"} + 1) and on(instance) http_requests{instance="0", group="production"}
   119  	{group="canary", instance="0", job="api-server"} 301
   120  	{group="canary", instance="0", job="app-server"} 701
   121  
   122  eval instant at 50m (http_requests{group="canary"} + 1) and ignoring(group) http_requests{instance="0", group="production"}
   123  	{group="canary", instance="0", job="api-server"} 301
   124  	{group="canary", instance="0", job="app-server"} 701
   125  
   126  eval instant at 50m (http_requests{group="canary"} + 1) and ignoring(group, job) http_requests{instance="0", group="production"}
   127  	{group="canary", instance="0", job="api-server"} 301
   128  	{group="canary", instance="0", job="app-server"} 701
   129  
   130  eval instant at 50m http_requests{group="canary"} or http_requests{group="production"}
   131  	http_requests{group="canary", instance="0", job="api-server"} 300
   132  	http_requests{group="canary", instance="0", job="app-server"} 700
   133  	http_requests{group="canary", instance="1", job="api-server"} 400
   134  	http_requests{group="canary", instance="1", job="app-server"} 800
   135  	http_requests{group="production", instance="0", job="api-server"} 100
   136  	http_requests{group="production", instance="0", job="app-server"} 500
   137  	http_requests{group="production", instance="1", job="api-server"} 200
   138  	http_requests{group="production", instance="1", job="app-server"} 600
   139  
   140  # On overlap the rhs samples must be dropped.
   141  eval instant at 50m (http_requests{group="canary"} + 1) or http_requests{instance="1"}
   142  	{group="canary", instance="0", job="api-server"} 301
   143  	{group="canary", instance="0", job="app-server"} 701
   144  	{group="canary", instance="1", job="api-server"} 401
   145  	{group="canary", instance="1", job="app-server"} 801
   146  	http_requests{group="production", instance="1", job="api-server"} 200
   147  	http_requests{group="production", instance="1", job="app-server"} 600
   148  
   149  
   150  # Matching only on instance excludes everything that has instance=0/1 but includes
   151  # entries without the instance label.
   152  eval instant at 50m (http_requests{group="canary"} + 1) or on(instance) (http_requests or cpu_count or vector_matching_a)
   153  	{group="canary", instance="0", job="api-server"} 301
   154  	{group="canary", instance="0", job="app-server"} 701
   155  	{group="canary", instance="1", job="api-server"} 401
   156  	{group="canary", instance="1", job="app-server"} 801
   157  	vector_matching_a{l="x"} 10
   158  	vector_matching_a{l="y"} 20
   159  
   160  eval instant at 50m (http_requests{group="canary"} + 1) or ignoring(l, group, job) (http_requests or cpu_count or vector_matching_a)
   161  	{group="canary", instance="0", job="api-server"} 301
   162  	{group="canary", instance="0", job="app-server"} 701
   163  	{group="canary", instance="1", job="api-server"} 401
   164  	{group="canary", instance="1", job="app-server"} 801
   165  	vector_matching_a{l="x"} 10
   166  	vector_matching_a{l="y"} 20
   167  
   168  eval instant at 50m http_requests{group="canary"} unless http_requests{instance="0"}
   169  	http_requests{group="canary", instance="1", job="api-server"} 400
   170  	http_requests{group="canary", instance="1", job="app-server"} 800
   171  
   172  eval instant at 50m http_requests{group="canary"} unless on(job) http_requests{instance="0"}
   173  
   174  eval instant at 50m http_requests{group="canary"} unless on(job, instance) http_requests{instance="0"}
   175  	http_requests{group="canary", instance="1", job="api-server"} 400
   176  	http_requests{group="canary", instance="1", job="app-server"} 800
   177  
   178  eval instant at 50m http_requests{group="canary"} / on(instance,job) http_requests{group="production"}
   179  	{instance="0", job="api-server"} 3
   180  	{instance="0", job="app-server"} 1.4
   181  	{instance="1", job="api-server"} 2
   182  	{instance="1", job="app-server"} 1.3333333333333333
   183  
   184  eval instant at 50m http_requests{group="canary"} unless ignoring(group, instance) http_requests{instance="0"}
   185  
   186  eval instant at 50m http_requests{group="canary"} unless ignoring(group) http_requests{instance="0"}
   187  	http_requests{group="canary", instance="1", job="api-server"} 400
   188  	http_requests{group="canary", instance="1", job="app-server"} 800
   189  
   190  eval instant at 50m http_requests{group="canary"} / ignoring(group) http_requests{group="production"}
   191  	{instance="0", job="api-server"} 3
   192  	{instance="0", job="app-server"} 1.4
   193  	{instance="1", job="api-server"} 2
   194  	{instance="1", job="app-server"} 1.3333333333333333
   195  
   196  # https://github.com/prometheus/prometheus/issues/1489
   197  eval instant at 50m http_requests AND ON (dummy) vector(1)
   198  	http_requests{group="canary", instance="0", job="api-server"} 300
   199  	http_requests{group="canary", instance="0", job="app-server"} 700
   200  	http_requests{group="canary", instance="1", job="api-server"} 400
   201  	http_requests{group="canary", instance="1", job="app-server"} 800
   202  	http_requests{group="production", instance="0", job="api-server"} 100
   203  	http_requests{group="production", instance="0", job="app-server"} 500
   204  	http_requests{group="production", instance="1", job="api-server"} 200
   205  	http_requests{group="production", instance="1", job="app-server"} 600
   206  
   207  eval instant at 50m http_requests AND IGNORING (group, instance, job) vector(1)
   208  	http_requests{group="canary", instance="0", job="api-server"} 300
   209  	http_requests{group="canary", instance="0", job="app-server"} 700
   210  	http_requests{group="canary", instance="1", job="api-server"} 400
   211  	http_requests{group="canary", instance="1", job="app-server"} 800
   212  	http_requests{group="production", instance="0", job="api-server"} 100
   213  	http_requests{group="production", instance="0", job="app-server"} 500
   214  	http_requests{group="production", instance="1", job="api-server"} 200
   215  	http_requests{group="production", instance="1", job="app-server"} 600
   216  
   217  
   218  # Comparisons.
   219  eval instant at 50m SUM(http_requests) BY (job) > 1000
   220  	{job="app-server"} 2600
   221  
   222  eval instant at 50m 1000 < SUM(http_requests) BY (job)
   223  	{job="app-server"} 1000
   224  
   225  eval instant at 50m SUM(http_requests) BY (job) <= 1000
   226  	{job="api-server"} 1000
   227  
   228  eval instant at 50m SUM(http_requests) BY (job) != 1000
   229  	{job="app-server"} 2600
   230  
   231  eval instant at 50m SUM(http_requests) BY (job) == 1000
   232  	{job="api-server"} 1000
   233  
   234  eval instant at 50m SUM(http_requests) BY (job) == bool 1000
   235  	{job="api-server"} 1
   236  	{job="app-server"} 0
   237  
   238  eval instant at 50m SUM(http_requests) BY (job) == bool SUM(http_requests) BY (job)
   239  	{job="api-server"} 1
   240  	{job="app-server"} 1
   241  
   242  eval instant at 50m SUM(http_requests) BY (job) != bool SUM(http_requests) BY (job)
   243  	{job="api-server"} 0
   244  	{job="app-server"} 0
   245  
   246  eval instant at 50m 0 == bool 1
   247  	0
   248  
   249  eval instant at 50m 1 == bool 1
   250  	1
   251  
   252  eval instant at 50m http_requests{job="api-server", instance="0", group="production"} == bool 100
   253  	{job="api-server", instance="0", group="production"} 1
   254  
   255  # group_left/group_right.
   256  
   257  clear
   258  
   259  load 5m
   260    node_var{instance="abc",job="node"} 2
   261    node_role{instance="abc",job="node",role="prometheus"} 1
   262  
   263  load 5m
   264    node_cpu{instance="abc",job="node",mode="idle"} 3
   265    node_cpu{instance="abc",job="node",mode="user"} 1
   266    node_cpu{instance="def",job="node",mode="idle"} 8
   267    node_cpu{instance="def",job="node",mode="user"} 2
   268  
   269  load 5m
   270    random{foo="bar"} 1
   271  
   272  load 5m
   273    threshold{instance="abc",job="node",target="a@b.com"} 0
   274  
   275  # Copy machine role to node variable.
   276  eval instant at 5m node_role * on (instance) group_right (role) node_var
   277    {instance="abc",job="node",role="prometheus"} 2
   278  
   279  eval instant at 5m node_var * on (instance) group_left (role) node_role
   280    {instance="abc",job="node",role="prometheus"} 2
   281  
   282  eval instant at 5m node_var * ignoring (role) group_left (role) node_role
   283    {instance="abc",job="node",role="prometheus"} 2
   284  
   285  eval instant at 5m node_role * ignoring (role) group_right (role) node_var
   286    {instance="abc",job="node",role="prometheus"} 2
   287  
   288  # Copy machine role to node variable with instrumentation labels.
   289  eval instant at 5m node_cpu * ignoring (role, mode) group_left (role) node_role
   290    {instance="abc",job="node",mode="idle",role="prometheus"} 3
   291    {instance="abc",job="node",mode="user",role="prometheus"} 1
   292  
   293  eval instant at 5m node_cpu * on (instance) group_left (role) node_role
   294    {instance="abc",job="node",mode="idle",role="prometheus"} 3
   295    {instance="abc",job="node",mode="user",role="prometheus"} 1
   296  
   297  
   298  # Ratio of total.
   299  eval instant at 5m node_cpu / on (instance) group_left sum by (instance,job)(node_cpu)
   300    {instance="abc",job="node",mode="idle"} .75
   301    {instance="abc",job="node",mode="user"} .25
   302    {instance="def",job="node",mode="idle"} .80
   303    {instance="def",job="node",mode="user"} .20
   304  
   305  eval instant at 5m sum by (mode, job)(node_cpu) / on (job) group_left sum by (job)(node_cpu)
   306    {job="node",mode="idle"} 0.7857142857142857
   307    {job="node",mode="user"} 0.21428571428571427
   308  
   309  eval instant at 5m sum(sum by (mode, job)(node_cpu) / on (job) group_left sum by (job)(node_cpu))
   310    {} 1.0
   311  
   312  
   313  eval instant at 5m node_cpu / ignoring (mode) group_left sum without (mode)(node_cpu)
   314    {instance="abc",job="node",mode="idle"} .75
   315    {instance="abc",job="node",mode="user"} .25
   316    {instance="def",job="node",mode="idle"} .80
   317    {instance="def",job="node",mode="user"} .20
   318  
   319  eval instant at 5m node_cpu / ignoring (mode) group_left(dummy) sum without (mode)(node_cpu)
   320    {instance="abc",job="node",mode="idle"} .75
   321    {instance="abc",job="node",mode="user"} .25
   322    {instance="def",job="node",mode="idle"} .80
   323    {instance="def",job="node",mode="user"} .20
   324  
   325  eval instant at 5m sum without (instance)(node_cpu) / ignoring (mode) group_left sum without (instance, mode)(node_cpu)
   326    {job="node",mode="idle"} 0.7857142857142857
   327    {job="node",mode="user"} 0.21428571428571427
   328  
   329  eval instant at 5m sum(sum without (instance)(node_cpu) / ignoring (mode) group_left sum without (instance, mode)(node_cpu))
   330    {} 1.0
   331  
   332  
   333  # Copy over label from metric with no matching labels, without having to list cross-job target labels ('job' here).
   334  eval instant at 5m node_cpu + on(dummy) group_left(foo) random*0
   335    {instance="abc",job="node",mode="idle",foo="bar"} 3
   336    {instance="abc",job="node",mode="user",foo="bar"} 1
   337    {instance="def",job="node",mode="idle",foo="bar"} 8
   338    {instance="def",job="node",mode="user",foo="bar"} 2
   339  
   340  
   341  # Use threshold from metric, and copy over target.
   342  eval instant at 5m node_cpu > on(job, instance) group_left(target) threshold
   343    node_cpu{instance="abc",job="node",mode="idle",target="a@b.com"} 3
   344    node_cpu{instance="abc",job="node",mode="user",target="a@b.com"} 1
   345  
   346  # Use threshold from metric, and a default (1) if it's not present.
   347  eval instant at 5m node_cpu > on(job, instance) group_left(target) (threshold or on (job, instance) (sum by (job, instance)(node_cpu) * 0 + 1))
   348    node_cpu{instance="abc",job="node",mode="idle",target="a@b.com"} 3
   349    node_cpu{instance="abc",job="node",mode="user",target="a@b.com"} 1
   350    node_cpu{instance="def",job="node",mode="idle"} 8
   351    node_cpu{instance="def",job="node",mode="user"} 2
   352  
   353  clear
   354  
   355  load 5m
   356    random{foo="bar"} 2
   357    metricA{baz="meh"} 3
   358    metricB{baz="meh"} 4
   359  
   360  # On with no labels, for metrics with no common labels.
   361  eval instant at 5m random + on() metricA
   362    {} 5
   363  
   364  # Ignoring with no labels is the same as no ignoring.
   365  eval instant at 5m metricA + ignoring() metricB
   366    {baz="meh"} 7
   367  
   368  eval instant at 5m metricA + metricB
   369    {baz="meh"} 7