1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
{{/* vim: set ft=gotmpl: */}}
{{ define "s6_rc_services_count" }}
{{ $instance := .arg0 }}{{ $bundle := .arg1 }}
{{ template "prom_query_drilldown" (args (printf "s6_rc_services_count{instance='%s',bundle='%s',service=~'.*-srv'}" $instance $bundle)) }}
{{ end }}
{{ template "head" . }}
{{ template "prom_content_head" . }}
<div class="prom_content_div">
<div>
<h2>Overview</h2>
<code>IZ: {{ template "s6_rc_services_count" (args "inazuma" "default") }}</code>
<code>SK: {{ template "s6_rc_services_count" (args "shimakaze" "default") }}</code>
</div>
<div>
<h4>Traefik Latency</h4>
<div id="traefikLatencyGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#traefikLatencyGraph"),
expr: [
`histogram_quantile(0.99, sum(rate(traefik_entrypoint_request_duration_seconds_bucket{entrypoint=~"https?"}[10m])) by (le, instance))`,
],
name: '[[instance]]',
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yTitle: "Latency (p99)",
yUnits: "s",
})
</script>
</div>
<div>
<h4>Node CPU Utilisation</h4>
<div id="cpuUtilGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#cpuUtilGraph"),
expr: [
`(1 - avg(rate(node_cpu_seconds_total{mode="idle"}[1m]))) * 100.0`,
],
name: '[[instance]]',
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yUnits: "%",
min: 0,
max: 100,
})
</script>
</div>
<div>
<h4>Node CPU Saturation</h4>
<div id="cpuSatGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#cpuSatGraph"),
expr: [
`sum by (instance) (node_load15) / count by (instance) (sum by (instance, cpu) (node_cpu_seconds_total))`,
],
name: '[[instance]]',
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
})
</script>
</div>
<div>
<h4>Node Memory Utilisation</h4>
<div id="memUtilGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#memUtilGraph"),
expr: [
`(1 - sum by (instance) (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / sum by (instance) (node_memory_MemTotal_bytes)) * 100.0`,
],
name: '[[instance]]',
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yUnits: "%",
min: 0,
max: 100,
})
</script>
</div>
<div>
<h4>Node Memory Saturation</h4>
<div id="memSatGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#memSatGraph"),
expr: [
`1e3 * sum by (instance) (rate(node_vmstat_pgpgin[2m]) + rate(node_vmstat_pgpgout[2m]))`,
],
name: '[[instance]]',
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
})
</script>
</div>
</div>
{{ template "prom_content_tail" . }}
{{ template "tail" . }}
|