mirror of
				https://github.com/prometheus/prometheus.git
				synced 2025-10-31 16:31:03 +01:00 
			
		
		
		
	The operator changes the meaning of the metric, so the metric name should be dropped. Technically this would be a breaking change, but it's also very obviously a bug and not likely that anyone depends on it. Signed-off-by: Julius Volz <julius.volz@gmail.com>
		
			
				
	
	
		
			490 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			490 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| load 5m
 | |
| 	http_requests{job="api-server", instance="0", group="production"}	0+10x10
 | |
| 	http_requests{job="api-server", instance="1", group="production"}	0+20x10
 | |
| 	http_requests{job="api-server", instance="0", group="canary"}		0+30x10
 | |
| 	http_requests{job="api-server", instance="1", group="canary"}		0+40x10
 | |
| 	http_requests{job="app-server", instance="0", group="production"}	0+50x10
 | |
| 	http_requests{job="app-server", instance="1", group="production"}	0+60x10
 | |
| 	http_requests{job="app-server", instance="0", group="canary"}		0+70x10
 | |
| 	http_requests{job="app-server", instance="1", group="canary"}		0+80x10
 | |
| 
 | |
| load 5m
 | |
| 	vector_matching_a{l="x"} 0+1x100
 | |
| 	vector_matching_a{l="y"} 0+2x50
 | |
| 	vector_matching_b{l="x"} 0+4x25
 | |
| 
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) - COUNT(http_requests) BY (job)
 | |
| 	{job="api-server"} 996
 | |
| 	{job="app-server"} 2596
 | |
| 
 | |
| eval instant at 50m 2 - SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} -998
 | |
| 	{job="app-server"} -2598
 | |
| 
 | |
| eval instant at 50m -http_requests{job="api-server",instance="0",group="production"}
 | |
|   {job="api-server",instance="0",group="production"} -100
 | |
| 
 | |
| eval instant at 50m +http_requests{job="api-server",instance="0",group="production"}
 | |
|   http_requests{job="api-server",instance="0",group="production"} 100
 | |
| 
 | |
| eval instant at 50m - - - SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} -1000
 | |
| 	{job="app-server"} -2600
 | |
| 
 | |
| eval instant at 50m - - - 1
 | |
|   -1
 | |
| 
 | |
| eval instant at 50m -2^---1*3
 | |
|   -1.5
 | |
| 
 | |
| eval instant at 50m 2/-2^---1*3+2
 | |
|   -10
 | |
| 
 | |
| eval instant at 50m -10^3 * - SUM(http_requests) BY (job) ^ -1
 | |
| 	{job="api-server"} 1
 | |
| 	{job="app-server"} 0.38461538461538464
 | |
| 
 | |
| eval instant at 50m 1000 / SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} 1
 | |
| 	{job="app-server"} 0.38461538461538464
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) - 2
 | |
| 	{job="api-server"} 998
 | |
| 	{job="app-server"} 2598
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) % 3
 | |
| 	{job="api-server"} 1
 | |
| 	{job="app-server"} 2
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) % 0.3
 | |
| 	{job="api-server"} 0.1
 | |
| 	{job="app-server"} 0.2
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) ^ 2
 | |
| 	{job="api-server"} 1000000
 | |
| 	{job="app-server"} 6760000
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) % 3 ^ 2
 | |
| 	{job="api-server"} 1
 | |
| 	{job="app-server"} 8
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) % 2 ^ (3 ^ 2)
 | |
| 	{job="api-server"} 488
 | |
| 	{job="app-server"} 40
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) % 2 ^ 3 ^ 2
 | |
| 	{job="api-server"} 488
 | |
| 	{job="app-server"} 40
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) % 2 ^ 3 ^ 2 ^ 2
 | |
| 	{job="api-server"} 1000
 | |
| 	{job="app-server"} 2600
 | |
| 
 | |
| eval instant at 50m COUNT(http_requests) BY (job) ^ COUNT(http_requests) BY (job)
 | |
| 	{job="api-server"} 256
 | |
| 	{job="app-server"} 256
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) / 0
 | |
| 	{job="api-server"} +Inf
 | |
| 	{job="app-server"} +Inf
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary", instance="0", job="api-server"} / 0
 | |
| 	{group="canary", instance="0", job="api-server"} +Inf
 | |
| 
 | |
| eval instant at 50m -1 * http_requests{group="canary", instance="0", job="api-server"} / 0
 | |
| 	{group="canary", instance="0", job="api-server"} -Inf
 | |
| 
 | |
| eval instant at 50m 0 * http_requests{group="canary", instance="0", job="api-server"} / 0
 | |
| 	{group="canary", instance="0", job="api-server"} NaN
 | |
| 
 | |
| eval instant at 50m 0 * http_requests{group="canary", instance="0", job="api-server"} % 0
 | |
| 	{group="canary", instance="0", job="api-server"} NaN
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) + SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} 2000
 | |
| 	{job="app-server"} 5200
 | |
| 
 | |
| eval instant at 50m (SUM((http_requests)) BY (job)) + SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} 2000
 | |
| 	{job="app-server"} 5200
 | |
| 
 | |
| eval instant at 50m http_requests{job="api-server", group="canary"}
 | |
| 	http_requests{group="canary", instance="0", job="api-server"} 300
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 
 | |
| eval instant at 50m http_requests{job="api-server", group="canary"} + rate(http_requests{job="api-server"}[5m]) * 5 * 60
 | |
| 	{group="canary", instance="0", job="api-server"} 330
 | |
| 	{group="canary", instance="1", job="api-server"} 440
 | |
| 
 | |
| eval instant at 50m rate(http_requests[25m]) * 25 * 60
 | |
|   {group="canary", instance="0", job="api-server"} 150
 | |
|   {group="canary", instance="0", job="app-server"} 350
 | |
|   {group="canary", instance="1", job="api-server"} 200
 | |
|   {group="canary", instance="1", job="app-server"} 400
 | |
|   {group="production", instance="0", job="api-server"} 50
 | |
|   {group="production", instance="0", job="app-server"} 249.99999999999997
 | |
|   {group="production", instance="1", job="api-server"} 100
 | |
|   {group="production", instance="1", job="app-server"} 300
 | |
| 
 | |
| eval instant at 50m (rate((http_requests[25m])) * 25) * 60
 | |
|   {group="canary", instance="0", job="api-server"} 150
 | |
|   {group="canary", instance="0", job="app-server"} 350
 | |
|   {group="canary", instance="1", job="api-server"} 200
 | |
|   {group="canary", instance="1", job="app-server"} 400
 | |
|   {group="production", instance="0", job="api-server"} 50
 | |
|   {group="production", instance="0", job="app-server"} 249.99999999999997
 | |
|   {group="production", instance="1", job="api-server"} 100
 | |
|   {group="production", instance="1", job="app-server"} 300
 | |
| 
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} and http_requests{instance="0"}
 | |
| 	http_requests{group="canary", instance="0", job="api-server"} 300
 | |
| 	http_requests{group="canary", instance="0", job="app-server"} 700
 | |
| 
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) and http_requests{instance="0"}
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) and on(instance, job) http_requests{instance="0", group="production"}
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) and on(instance) http_requests{instance="0", group="production"}
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) and ignoring(group) http_requests{instance="0", group="production"}
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) and ignoring(group, job) http_requests{instance="0", group="production"}
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} or http_requests{group="production"}
 | |
| 	http_requests{group="canary", instance="0", job="api-server"} 300
 | |
| 	http_requests{group="canary", instance="0", job="app-server"} 700
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 	http_requests{group="canary", instance="1", job="app-server"} 800
 | |
| 	http_requests{group="production", instance="0", job="api-server"} 100
 | |
| 	http_requests{group="production", instance="0", job="app-server"} 500
 | |
| 	http_requests{group="production", instance="1", job="api-server"} 200
 | |
| 	http_requests{group="production", instance="1", job="app-server"} 600
 | |
| 
 | |
| # On overlap the rhs samples must be dropped.
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) or http_requests{instance="1"}
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 	{group="canary", instance="1", job="api-server"} 401
 | |
| 	{group="canary", instance="1", job="app-server"} 801
 | |
| 	http_requests{group="production", instance="1", job="api-server"} 200
 | |
| 	http_requests{group="production", instance="1", job="app-server"} 600
 | |
| 
 | |
| 
 | |
| # Matching only on instance excludes everything that has instance=0/1 but includes
 | |
| # entries without the instance label.
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) or on(instance) (http_requests or cpu_count or vector_matching_a)
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 	{group="canary", instance="1", job="api-server"} 401
 | |
| 	{group="canary", instance="1", job="app-server"} 801
 | |
| 	vector_matching_a{l="x"} 10
 | |
| 	vector_matching_a{l="y"} 20
 | |
| 
 | |
| eval instant at 50m (http_requests{group="canary"} + 1) or ignoring(l, group, job) (http_requests or cpu_count or vector_matching_a)
 | |
| 	{group="canary", instance="0", job="api-server"} 301
 | |
| 	{group="canary", instance="0", job="app-server"} 701
 | |
| 	{group="canary", instance="1", job="api-server"} 401
 | |
| 	{group="canary", instance="1", job="app-server"} 801
 | |
| 	vector_matching_a{l="x"} 10
 | |
| 	vector_matching_a{l="y"} 20
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} unless http_requests{instance="0"}
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 	http_requests{group="canary", instance="1", job="app-server"} 800
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} unless on(job) http_requests{instance="0"}
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} unless on(job, instance) http_requests{instance="0"}
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 	http_requests{group="canary", instance="1", job="app-server"} 800
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} / on(instance,job) http_requests{group="production"}
 | |
| 	{instance="0", job="api-server"} 3
 | |
| 	{instance="0", job="app-server"} 1.4
 | |
| 	{instance="1", job="api-server"} 2
 | |
| 	{instance="1", job="app-server"} 1.3333333333333333
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} unless ignoring(group, instance) http_requests{instance="0"}
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} unless ignoring(group) http_requests{instance="0"}
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 	http_requests{group="canary", instance="1", job="app-server"} 800
 | |
| 
 | |
| eval instant at 50m http_requests{group="canary"} / ignoring(group) http_requests{group="production"}
 | |
| 	{instance="0", job="api-server"} 3
 | |
| 	{instance="0", job="app-server"} 1.4
 | |
| 	{instance="1", job="api-server"} 2
 | |
| 	{instance="1", job="app-server"} 1.3333333333333333
 | |
| 
 | |
| # https://github.com/prometheus/prometheus/issues/1489
 | |
| eval instant at 50m http_requests AND ON (dummy) vector(1)
 | |
| 	http_requests{group="canary", instance="0", job="api-server"} 300
 | |
| 	http_requests{group="canary", instance="0", job="app-server"} 700
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 	http_requests{group="canary", instance="1", job="app-server"} 800
 | |
| 	http_requests{group="production", instance="0", job="api-server"} 100
 | |
| 	http_requests{group="production", instance="0", job="app-server"} 500
 | |
| 	http_requests{group="production", instance="1", job="api-server"} 200
 | |
| 	http_requests{group="production", instance="1", job="app-server"} 600
 | |
| 
 | |
| eval instant at 50m http_requests AND IGNORING (group, instance, job) vector(1)
 | |
| 	http_requests{group="canary", instance="0", job="api-server"} 300
 | |
| 	http_requests{group="canary", instance="0", job="app-server"} 700
 | |
| 	http_requests{group="canary", instance="1", job="api-server"} 400
 | |
| 	http_requests{group="canary", instance="1", job="app-server"} 800
 | |
| 	http_requests{group="production", instance="0", job="api-server"} 100
 | |
| 	http_requests{group="production", instance="0", job="app-server"} 500
 | |
| 	http_requests{group="production", instance="1", job="api-server"} 200
 | |
| 	http_requests{group="production", instance="1", job="app-server"} 600
 | |
| 
 | |
| 
 | |
| # Comparisons.
 | |
| eval instant at 50m SUM(http_requests) BY (job) > 1000
 | |
| 	{job="app-server"} 2600
 | |
| 
 | |
| eval instant at 50m 1000 < SUM(http_requests) BY (job)
 | |
| 	{job="app-server"} 2600
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) <= 1000
 | |
| 	{job="api-server"} 1000
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) != 1000
 | |
| 	{job="app-server"} 2600
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) == 1000
 | |
| 	{job="api-server"} 1000
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) == bool 1000
 | |
| 	{job="api-server"} 1
 | |
| 	{job="app-server"} 0
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) == bool SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} 1
 | |
| 	{job="app-server"} 1
 | |
| 
 | |
| eval instant at 50m SUM(http_requests) BY (job) != bool SUM(http_requests) BY (job)
 | |
| 	{job="api-server"} 0
 | |
| 	{job="app-server"} 0
 | |
| 
 | |
| eval instant at 50m 0 == bool 1
 | |
| 	0
 | |
| 
 | |
| eval instant at 50m 1 == bool 1
 | |
| 	1
 | |
| 
 | |
| eval instant at 50m http_requests{job="api-server", instance="0", group="production"} == bool 100
 | |
| 	{job="api-server", instance="0", group="production"} 1
 | |
| 
 | |
| # group_left/group_right.
 | |
| 
 | |
| clear
 | |
| 
 | |
| load 5m
 | |
|   node_var{instance="abc",job="node"} 2
 | |
|   node_role{instance="abc",job="node",role="prometheus"} 1
 | |
| 
 | |
| load 5m
 | |
|   node_cpu{instance="abc",job="node",mode="idle"} 3
 | |
|   node_cpu{instance="abc",job="node",mode="user"} 1
 | |
|   node_cpu{instance="def",job="node",mode="idle"} 8
 | |
|   node_cpu{instance="def",job="node",mode="user"} 2
 | |
| 
 | |
| load 5m
 | |
|   random{foo="bar"} 1
 | |
| 
 | |
| load 5m
 | |
|   threshold{instance="abc",job="node",target="a@b.com"} 0
 | |
| 
 | |
| # Copy machine role to node variable.
 | |
| eval instant at 5m node_role * on (instance) group_right (role) node_var
 | |
|   {instance="abc",job="node",role="prometheus"} 2
 | |
| 
 | |
| eval instant at 5m node_var * on (instance) group_left (role) node_role
 | |
|   {instance="abc",job="node",role="prometheus"} 2
 | |
| 
 | |
| eval instant at 5m node_var * ignoring (role) group_left (role) node_role
 | |
|   {instance="abc",job="node",role="prometheus"} 2
 | |
| 
 | |
| eval instant at 5m node_role * ignoring (role) group_right (role) node_var
 | |
|   {instance="abc",job="node",role="prometheus"} 2
 | |
| 
 | |
| # Copy machine role to node variable with instrumentation labels.
 | |
| eval instant at 5m node_cpu * ignoring (role, mode) group_left (role) node_role
 | |
|   {instance="abc",job="node",mode="idle",role="prometheus"} 3
 | |
|   {instance="abc",job="node",mode="user",role="prometheus"} 1
 | |
| 
 | |
| eval instant at 5m node_cpu * on (instance) group_left (role) node_role
 | |
|   {instance="abc",job="node",mode="idle",role="prometheus"} 3
 | |
|   {instance="abc",job="node",mode="user",role="prometheus"} 1
 | |
| 
 | |
| 
 | |
| # Ratio of total.
 | |
| eval instant at 5m node_cpu / on (instance) group_left sum by (instance,job)(node_cpu)
 | |
|   {instance="abc",job="node",mode="idle"} .75
 | |
|   {instance="abc",job="node",mode="user"} .25
 | |
|   {instance="def",job="node",mode="idle"} .80
 | |
|   {instance="def",job="node",mode="user"} .20
 | |
| 
 | |
| eval instant at 5m sum by (mode, job)(node_cpu) / on (job) group_left sum by (job)(node_cpu)
 | |
|   {job="node",mode="idle"} 0.7857142857142857
 | |
|   {job="node",mode="user"} 0.21428571428571427
 | |
| 
 | |
| eval instant at 5m sum(sum by (mode, job)(node_cpu) / on (job) group_left sum by (job)(node_cpu))
 | |
|   {} 1.0
 | |
| 
 | |
| 
 | |
| eval instant at 5m node_cpu / ignoring (mode) group_left sum without (mode)(node_cpu)
 | |
|   {instance="abc",job="node",mode="idle"} .75
 | |
|   {instance="abc",job="node",mode="user"} .25
 | |
|   {instance="def",job="node",mode="idle"} .80
 | |
|   {instance="def",job="node",mode="user"} .20
 | |
| 
 | |
| eval instant at 5m node_cpu / ignoring (mode) group_left(dummy) sum without (mode)(node_cpu)
 | |
|   {instance="abc",job="node",mode="idle"} .75
 | |
|   {instance="abc",job="node",mode="user"} .25
 | |
|   {instance="def",job="node",mode="idle"} .80
 | |
|   {instance="def",job="node",mode="user"} .20
 | |
| 
 | |
| eval instant at 5m sum without (instance)(node_cpu) / ignoring (mode) group_left sum without (instance, mode)(node_cpu)
 | |
|   {job="node",mode="idle"} 0.7857142857142857
 | |
|   {job="node",mode="user"} 0.21428571428571427
 | |
| 
 | |
| eval instant at 5m sum(sum without (instance)(node_cpu) / ignoring (mode) group_left sum without (instance, mode)(node_cpu))
 | |
|   {} 1.0
 | |
| 
 | |
| 
 | |
| # Copy over label from metric with no matching labels, without having to list cross-job target labels ('job' here).
 | |
| eval instant at 5m node_cpu + on(dummy) group_left(foo) random*0
 | |
|   {instance="abc",job="node",mode="idle",foo="bar"} 3
 | |
|   {instance="abc",job="node",mode="user",foo="bar"} 1
 | |
|   {instance="def",job="node",mode="idle",foo="bar"} 8
 | |
|   {instance="def",job="node",mode="user",foo="bar"} 2
 | |
| 
 | |
| 
 | |
| # Use threshold from metric, and copy over target.
 | |
| eval instant at 5m node_cpu > on(job, instance) group_left(target) threshold
 | |
|   node_cpu{instance="abc",job="node",mode="idle",target="a@b.com"} 3
 | |
|   node_cpu{instance="abc",job="node",mode="user",target="a@b.com"} 1
 | |
| 
 | |
| # Use threshold from metric, and a default (1) if it's not present.
 | |
| 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))
 | |
|   node_cpu{instance="abc",job="node",mode="idle",target="a@b.com"} 3
 | |
|   node_cpu{instance="abc",job="node",mode="user",target="a@b.com"} 1
 | |
|   node_cpu{instance="def",job="node",mode="idle"} 8
 | |
|   node_cpu{instance="def",job="node",mode="user"} 2
 | |
| 
 | |
| 
 | |
| # Check that binops drop the metric name.
 | |
| eval instant at 5m node_cpu + 2
 | |
|   {instance="abc",job="node",mode="idle"} 5
 | |
|   {instance="abc",job="node",mode="user"} 3
 | |
|   {instance="def",job="node",mode="idle"} 10
 | |
|   {instance="def",job="node",mode="user"} 4
 | |
| 
 | |
| eval instant at 5m node_cpu - 2
 | |
|   {instance="abc",job="node",mode="idle"} 1
 | |
|   {instance="abc",job="node",mode="user"} -1
 | |
|   {instance="def",job="node",mode="idle"} 6
 | |
|   {instance="def",job="node",mode="user"} 0
 | |
| 
 | |
| eval instant at 5m node_cpu / 2
 | |
|   {instance="abc",job="node",mode="idle"} 1.5
 | |
|   {instance="abc",job="node",mode="user"} 0.5
 | |
|   {instance="def",job="node",mode="idle"} 4
 | |
|   {instance="def",job="node",mode="user"} 1
 | |
| 
 | |
| eval instant at 5m node_cpu * 2
 | |
|   {instance="abc",job="node",mode="idle"} 6
 | |
|   {instance="abc",job="node",mode="user"} 2
 | |
|   {instance="def",job="node",mode="idle"} 16
 | |
|   {instance="def",job="node",mode="user"} 4
 | |
| 
 | |
| eval instant at 5m node_cpu ^ 2
 | |
|   {instance="abc",job="node",mode="idle"} 9
 | |
|   {instance="abc",job="node",mode="user"} 1
 | |
|   {instance="def",job="node",mode="idle"} 64
 | |
|   {instance="def",job="node",mode="user"} 4
 | |
| 
 | |
| eval instant at 5m node_cpu % 2
 | |
|   {instance="abc",job="node",mode="idle"} 1
 | |
|   {instance="abc",job="node",mode="user"} 1
 | |
|   {instance="def",job="node",mode="idle"} 0
 | |
|   {instance="def",job="node",mode="user"} 0
 | |
| 
 | |
| 
 | |
| clear
 | |
| 
 | |
| load 5m
 | |
|   random{foo="bar"} 2
 | |
|   metricA{baz="meh"} 3
 | |
|   metricB{baz="meh"} 4
 | |
| 
 | |
| # On with no labels, for metrics with no common labels.
 | |
| eval instant at 5m random + on() metricA
 | |
|   {} 5
 | |
| 
 | |
| # Ignoring with no labels is the same as no ignoring.
 | |
| eval instant at 5m metricA + ignoring() metricB
 | |
|   {baz="meh"} 7
 | |
| 
 | |
| eval instant at 5m metricA + metricB
 | |
|   {baz="meh"} 7
 | |
| 
 | |
| clear
 | |
| 
 | |
| # Test duplicate labelset in promql output.
 | |
| load 5m
 | |
|   testmetric1{src="a",dst="b"} 0
 | |
|   testmetric2{src="a",dst="b"} 1
 | |
| 
 | |
| eval_fail instant at 0m -{__name__=~'testmetric1|testmetric2'}
 | |
| 
 | |
| clear
 | |
| 
 | |
| load 5m
 | |
|     test_total{instance="localhost"} 50
 | |
|     test_smaller{instance="localhost"} 10
 | |
| 
 | |
| eval instant at 5m test_total > bool test_smaller
 | |
|     {instance="localhost"} 1
 | |
| 
 | |
| eval instant at 5m test_total > test_smaller
 | |
|     test_total{instance="localhost"} 50
 | |
| 
 | |
| eval instant at 5m test_total < bool test_smaller
 | |
|     {instance="localhost"} 0
 | |
| 
 | |
| eval instant at 5m test_total < test_smaller
 | |
| 
 | |
| clear
 | |
| 
 | |
| # Testing atan2.
 | |
| load 5m
 | |
|     trigy{} 10
 | |
|     trigx{} 20
 | |
|     trigNaN{} NaN
 | |
| 
 | |
| eval instant at 5m trigy atan2 trigx
 | |
|     {} 0.4636476090008061
 | |
| 
 | |
| eval instant at 5m trigy atan2 trigNaN
 | |
|     {} NaN
 | |
| 
 | |
| eval instant at 5m 10 atan2 20
 | |
|     0.4636476090008061
 | |
| 
 | |
| eval instant at 5m 10 atan2 NaN
 | |
|     NaN
 |