@leverege/build-tools 2.66.0 → 2.66.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/package.json +2 -2
  2. package/src/bash-funcs +1 -0
  3. package/src/helm-charts/cnpg-db-pgbench/cluster.yaml.ovh +2 -0
  4. package/src/helm-charts/cnpg-db-tsdb-basic/cluster.yaml.ovh +3 -1
  5. package/src/helm-charts/cnpg-db-tsdb-dense/cluster.yaml.ovh +2 -0
  6. package/src/helm-charts/elasticsearch8/helmup.plugin +1 -1
  7. package/src/helm-charts/prom-operator/prometheus-stack.yaml.ovh +2 -2
  8. package/src/helm-charts/prom-operator/rules/awesome-base/elasticsearch-rules.yaml +219 -0
  9. package/src/helm-charts/prom-operator/rules/awesome-base/google-cadvisor.yaml +108 -0
  10. package/src/helm-charts/prom-operator/rules/{new-awesome.yaml → awesome-base/kubestate-exporter.yaml} +2 -1
  11. package/src/helm-charts/prom-operator/rules/awesome-base/prometheus-rules.yaml +318 -0
  12. package/src/helm-charts/prom-operator/rules/awesome-base/redis-rules.yaml +142 -0
  13. package/src/helm-charts/prom-operator/rules/awesome-base/traefik-rules.yaml +43 -0
  14. package/src/helm-charts/prom-operator/rules/cadvisor-rules.yaml +109 -0
  15. package/src/helm-charts/prom-operator/rules/cnpg-rules.yaml +3 -2
  16. package/src/helm-charts/prom-operator/rules/elasticsearch-rules.yaml +212 -94
  17. package/src/helm-charts/prom-operator/rules/gcp-rules.yaml +2 -2
  18. package/src/helm-charts/prom-operator/rules/kubestate-rules.yaml +412 -0
  19. package/src/helm-charts/prom-operator/rules/po-k8s-selective.yaml +23 -0
  20. package/src/helm-charts/prom-operator/rules/prometheus-rules.yaml +312 -73
  21. package/src/helm-charts/prom-operator/rules/redis-rules.yaml +135 -74
  22. package/src/helm-charts/prom-operator/rules/traefik-rules.yaml +47 -20
  23. package/src/helm-charts/prom-operator/update-rules.sh +32 -0
  24. package/src/helm-charts/redis/helmup.plugin +1 -1
  25. package/src/helm-charts/velero/helmup.plugin +1 -1
  26. package/src/helmup.sh +2 -2
  27. package/src/awesome-fetch.mjs +0 -44
  28. package/src/helm-charts/prom-operator/apply-rules +0 -15
  29. package/src/helm-charts/prom-operator/gitignore +0 -2
  30. package/src/helm-charts/prom-operator/rules/awesome-k8s.yaml +0 -326
  31. package/src/helm-charts/prom-operator/rules/kubernetes-rules.yaml +0 -109
  32. /package/src/helm-charts/prom-operator/rules/{postgres-rules.yaml → postgres-rules.yaml.disabled} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leverege/build-tools",
3
- "version": "2.66.0",
3
+ "version": "2.66.2",
4
4
  "description": "A collection of build / support tools for Leverege developers",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -83,7 +83,7 @@
83
83
  "semver": "^7.7.1",
84
84
  "simple-git": "^3.27.0",
85
85
  "toml": "^3.0.0",
86
- "zx": "^8.5.2"
86
+ "zx": "^8.5.3"
87
87
  },
88
88
  "devDependencies": {
89
89
  "@leverege/eslint-config-leverege": "^5.0.1",
package/src/bash-funcs CHANGED
@@ -11,6 +11,7 @@
11
11
  DEVNULL="/dev/null"
12
12
  [ ! -z "$BUILD_TOOLS_DEBUG" ] && DEVNULL="/dev/stdout" && printf "\n***BUILD_TOOLS_DEBUG DEVNULL=>$DEVNULL\n"
13
13
 
14
+ GITTOP=`git rev-parse --show-toplevel`
14
15
  DTS="`date +\"%Y%m%d-%H%M%S\"`"
15
16
 
16
17
  # Simple ANSI color coded string generator.
@@ -14,6 +14,7 @@ spec:
14
14
  postInitTemplateSQL:
15
15
  - CREATE EXTENSION timescaledb;
16
16
  - CREATE EXTENSION jsquery;
17
+ - CREATE EXTENSION pg_stat_statements;
17
18
  database: imagine
18
19
  owner: imagine
19
20
  secret:
@@ -38,6 +39,7 @@ spec:
38
39
  shared_preload_libraries:
39
40
  - timescaledb
40
41
  - jsquery
42
+ - pg_stat_statements
41
43
  parameters:
42
44
  # max_worker_processes: "60"
43
45
  max_worker_processes: "8"
@@ -18,7 +18,8 @@ spec:
18
18
  postInitTemplateSQL:
19
19
  - CREATE EXTENSION timescaledb;
20
20
  - CREATE EXTENSION jsquery;
21
- - CREATE DATABASE imagine
21
+ - CREATE DATABASE pg_stat_statements;
22
+ - CREATE DATABASE imagine;
22
23
  # - CREATE DATABASE app; # for the operator restores
23
24
  # - CREATE ROLE app; # same
24
25
  # owner: imagine
@@ -52,6 +53,7 @@ spec:
52
53
  shared_preload_libraries:
53
54
  - timescaledb
54
55
  - jsquery
56
+ - pg_stat_statements
55
57
  parameters:
56
58
  # max_connections: "100"
57
59
  # max_worker_processes: "60"
@@ -17,6 +17,7 @@ spec:
17
17
  postInitTemplateSQL:
18
18
  - CREATE EXTENSION timescaledb;
19
19
  - CREATE EXTENSION jsquery;
20
+ - CREATE EXTENSION pg_stat_statements;
20
21
  - CREATE DATABASE imagine; # leverege tsdb db
21
22
  # secret:
22
23
  # name: cnpg-db-tsdb-dense-imagine-pw # imagine db pw
@@ -48,6 +49,7 @@ spec:
48
49
  shared_preload_libraries:
49
50
  - timescaledb
50
51
  - jsquery
52
+ - pg_stat_statements
51
53
  parameters:
52
54
  # max_worker_processes: "60"
53
55
  max_worker_processes: "8"
@@ -2,7 +2,7 @@
2
2
  #
3
3
  showInstalling "Elastic Search 8"
4
4
 
5
- [ -z "$ELASTIC_CHART_VERSION" ] && ELASTIC_CHART_VERSION="21.5.0"
5
+ [ -z "$ELASTIC_CHART_VERSION" ] && ELASTIC_CHART_VERSION="21.6.0"
6
6
 
7
7
  OCI_CHART="oci://registry-1.docker.io/bitnamicharts/elasticsearch"
8
8
 
@@ -10,7 +10,7 @@ defaultRules:
10
10
  etcd: false
11
11
  configReloaders: false
12
12
  general: true
13
- k8s: true
13
+ k8s: false # GPT see po-k8s-selective
14
14
  kubeApiserver: true # GPT Keep an eye on API server availability
15
15
  kubeApiserverAvailability: false
16
16
  kubeApiserverSlos: false
@@ -19,7 +19,7 @@ defaultRules:
19
19
  kubePrometheusGeneral: false
20
20
  kubePrometheusNodeRecording: false
21
21
  kubernetesApps: false
22
- kubernetesResources: false
22
+ kubernetesResources: true
23
23
  kubernetesStorage: false
24
24
  kubernetesSystem: false
25
25
  kubeScheduler: false
@@ -0,0 +1,219 @@
1
+ # https://samber.github.io/awesome-prometheus-alerts/rules#elasticsearch
2
+ apiVersion: monitoring.coreos.com/v1
3
+ kind: PrometheusRule
4
+ metadata:
5
+ name: prometheus-community-elasticsearch-exporter
6
+ namespace: prometheus
7
+ spec:
8
+ groups:
9
+ - name: Elasticsearch (awesome) # PrometheusCommunityElasticsearchExporter-rules
10
+ rules:
11
+ - alert: ElasticsearchHeapUsageTooHigh
12
+ expr: (elasticsearch_jvm_memory_used_bytes{area="heap"} / elasticsearch_jvm_memory_max_bytes{area="heap"}) * 100 > 90
13
+ for: 2m
14
+ labels:
15
+ severity: critical
16
+ annotations:
17
+ summary: Elasticsearch Heap Usage Too High (instance {{ $labels.instance }})
18
+ description: |-
19
+ The heap usage is over 90%
20
+ VALUE = {{ $value }}
21
+ LABELS = {{ $labels }}
22
+ - alert: ElasticsearchHeapUsageWarning
23
+ expr: (elasticsearch_jvm_memory_used_bytes{area="heap"} / elasticsearch_jvm_memory_max_bytes{area="heap"}) * 100 > 80
24
+ for: 2m
25
+ labels:
26
+ severity: warning
27
+ annotations:
28
+ summary: Elasticsearch Heap Usage warning (instance {{ $labels.instance }})
29
+ description: |-
30
+ The heap usage is over 80%
31
+ VALUE = {{ $value }}
32
+ LABELS = {{ $labels }}
33
+ - alert: ElasticsearchDiskOutOfSpace
34
+ expr: elasticsearch_filesystem_data_available_bytes / elasticsearch_filesystem_data_size_bytes * 100 < 10
35
+ for: 0m
36
+ labels:
37
+ severity: critical
38
+ annotations:
39
+ summary: Elasticsearch disk out of space (instance {{ $labels.instance }})
40
+ description: |-
41
+ The disk usage is over 90%
42
+ VALUE = {{ $value }}
43
+ LABELS = {{ $labels }}
44
+ - alert: ElasticsearchDiskSpaceLow
45
+ expr: elasticsearch_filesystem_data_available_bytes / elasticsearch_filesystem_data_size_bytes * 100 < 20
46
+ for: 2m
47
+ labels:
48
+ severity: warning
49
+ annotations:
50
+ summary: Elasticsearch disk space low (instance {{ $labels.instance }})
51
+ description: |-
52
+ The disk usage is over 80%
53
+ VALUE = {{ $value }}
54
+ LABELS = {{ $labels }}
55
+ - alert: ElasticsearchClusterRed
56
+ expr: elasticsearch_cluster_health_status{color="red"} == 1
57
+ for: 0m
58
+ labels:
59
+ severity: critical
60
+ annotations:
61
+ summary: Elasticsearch Cluster Red (instance {{ $labels.instance }})
62
+ description: |-
63
+ Elastic Cluster Red status
64
+ VALUE = {{ $value }}
65
+ LABELS = {{ $labels }}
66
+ - alert: ElasticsearchClusterYellow
67
+ expr: elasticsearch_cluster_health_status{color="yellow"} == 1
68
+ for: 0m
69
+ labels:
70
+ severity: warning
71
+ annotations:
72
+ summary: Elasticsearch Cluster Yellow (instance {{ $labels.instance }})
73
+ description: |-
74
+ Elastic Cluster Yellow status
75
+ VALUE = {{ $value }}
76
+ LABELS = {{ $labels }}
77
+ - alert: ElasticsearchHealthyNodes
78
+ expr: elasticsearch_cluster_health_number_of_nodes < 3
79
+ for: 0m
80
+ labels:
81
+ severity: critical
82
+ annotations:
83
+ summary: Elasticsearch Healthy Nodes (instance {{ $labels.instance }})
84
+ description: |-
85
+ Missing node in Elasticsearch cluster
86
+ VALUE = {{ $value }}
87
+ LABELS = {{ $labels }}
88
+ - alert: ElasticsearchHealthyDataNodes
89
+ expr: elasticsearch_cluster_health_number_of_data_nodes < 3
90
+ for: 0m
91
+ labels:
92
+ severity: critical
93
+ annotations:
94
+ summary: Elasticsearch Healthy Data Nodes (instance {{ $labels.instance }})
95
+ description: |-
96
+ Missing data node in Elasticsearch cluster
97
+ VALUE = {{ $value }}
98
+ LABELS = {{ $labels }}
99
+ - alert: ElasticsearchRelocatingShards
100
+ expr: elasticsearch_cluster_health_relocating_shards > 0
101
+ for: 0m
102
+ labels:
103
+ severity: info
104
+ annotations:
105
+ summary: Elasticsearch relocating shards (instance {{ $labels.instance }})
106
+ description: |-
107
+ Elasticsearch is relocating shards
108
+ VALUE = {{ $value }}
109
+ LABELS = {{ $labels }}
110
+ - alert: ElasticsearchRelocatingShardsTooLong
111
+ expr: elasticsearch_cluster_health_relocating_shards > 0
112
+ for: 15m
113
+ labels:
114
+ severity: warning
115
+ annotations:
116
+ summary: Elasticsearch relocating shards too long (instance {{ $labels.instance }})
117
+ description: |-
118
+ Elasticsearch has been relocating shards for 15min
119
+ VALUE = {{ $value }}
120
+ LABELS = {{ $labels }}
121
+ - alert: ElasticsearchInitializingShards
122
+ expr: elasticsearch_cluster_health_initializing_shards > 0
123
+ for: 0m
124
+ labels:
125
+ severity: info
126
+ annotations:
127
+ summary: Elasticsearch initializing shards (instance {{ $labels.instance }})
128
+ description: |-
129
+ Elasticsearch is initializing shards
130
+ VALUE = {{ $value }}
131
+ LABELS = {{ $labels }}
132
+ - alert: ElasticsearchInitializingShardsTooLong
133
+ expr: elasticsearch_cluster_health_initializing_shards > 0
134
+ for: 15m
135
+ labels:
136
+ severity: warning
137
+ annotations:
138
+ summary: Elasticsearch initializing shards too long (instance {{ $labels.instance }})
139
+ description: |-
140
+ Elasticsearch has been initializing shards for 15 min
141
+ VALUE = {{ $value }}
142
+ LABELS = {{ $labels }}
143
+ - alert: ElasticsearchUnassignedShards
144
+ expr: elasticsearch_cluster_health_unassigned_shards > 0
145
+ for: 0m
146
+ labels:
147
+ severity: critical
148
+ annotations:
149
+ summary: Elasticsearch unassigned shards (instance {{ $labels.instance }})
150
+ description: |-
151
+ Elasticsearch has unassigned shards
152
+ VALUE = {{ $value }}
153
+ LABELS = {{ $labels }}
154
+ - alert: ElasticsearchPendingTasks
155
+ expr: elasticsearch_cluster_health_number_of_pending_tasks > 0
156
+ for: 15m
157
+ labels:
158
+ severity: warning
159
+ annotations:
160
+ summary: Elasticsearch pending tasks (instance {{ $labels.instance }})
161
+ description: |-
162
+ Elasticsearch has pending tasks. Cluster works slowly.
163
+ VALUE = {{ $value }}
164
+ LABELS = {{ $labels }}
165
+ - alert: ElasticsearchNoNewDocuments
166
+ expr: increase(elasticsearch_indices_indexing_index_total{es_data_node="true"}[10m]) < 1
167
+ for: 0m
168
+ labels:
169
+ severity: warning
170
+ annotations:
171
+ summary: Elasticsearch no new documents (instance {{ $labels.instance }})
172
+ description: |-
173
+ No new documents for 10 min!
174
+ VALUE = {{ $value }}
175
+ LABELS = {{ $labels }}
176
+ - alert: ElasticsearchHighIndexingLatency
177
+ expr: elasticsearch_indices_indexing_index_time_seconds_total / elasticsearch_indices_indexing_index_total > 0.0005
178
+ for: 10m
179
+ labels:
180
+ severity: warning
181
+ annotations:
182
+ summary: Elasticsearch High Indexing Latency (instance {{ $labels.instance }})
183
+ description: |-
184
+ The indexing latency on Elasticsearch cluster is higher than the threshold.
185
+ VALUE = {{ $value }}
186
+ LABELS = {{ $labels }}
187
+ - alert: ElasticsearchHighIndexingRate
188
+ expr: sum(rate(elasticsearch_indices_indexing_index_total[1m]))> 10000
189
+ for: 5m
190
+ labels:
191
+ severity: warning
192
+ annotations:
193
+ summary: Elasticsearch High Indexing Rate (instance {{ $labels.instance }})
194
+ description: |-
195
+ The indexing rate on Elasticsearch cluster is higher than the threshold.
196
+ VALUE = {{ $value }}
197
+ LABELS = {{ $labels }}
198
+ - alert: ElasticsearchHighQueryRate
199
+ expr: sum(rate(elasticsearch_indices_search_query_total[1m])) > 100
200
+ for: 5m
201
+ labels:
202
+ severity: warning
203
+ annotations:
204
+ summary: Elasticsearch High Query Rate (instance {{ $labels.instance }})
205
+ description: |-
206
+ The query rate on Elasticsearch cluster is higher than the threshold.
207
+ VALUE = {{ $value }}
208
+ LABELS = {{ $labels }}
209
+ - alert: ElasticsearchHighQueryLatency
210
+ expr: elasticsearch_indices_search_fetch_time_seconds / elasticsearch_indices_search_fetch_total > 1
211
+ for: 5m
212
+ labels:
213
+ severity: warning
214
+ annotations:
215
+ summary: Elasticsearch High Query Latency (instance {{ $labels.instance }})
216
+ description: |-
217
+ The query latency on Elasticsearch cluster is higher than the threshold.
218
+ VALUE = {{ $value }}
219
+ LABELS = {{ $labels }}
@@ -0,0 +1,108 @@
1
+ # https://samber.github.io/awesome-prometheus-alerts/rules#docker-containers
2
+ apiVersion: monitoring.coreos.com/v1
3
+ kind: PrometheusRule
4
+ metadata:
5
+ name: google-cadvisor
6
+ spec:
7
+ groups:
8
+ - name: Google Cadvisor (awesome) # GoogleCadvisor-rules
9
+ rules:
10
+ - alert: ContainerKilled
11
+ expr: time() - container_last_seen > 60
12
+ for: 0m
13
+ labels:
14
+ severity: warning
15
+ annotations:
16
+ summary: Container killed (instance {{ $labels.instance }})
17
+ description: |-
18
+ A container has disappeared
19
+ VALUE = {{ $value }}
20
+ LABELS = {{ $labels }}
21
+ - alert: ContainerAbsent
22
+ expr: absent(container_last_seen)
23
+ for: 5m
24
+ labels:
25
+ severity: warning
26
+ annotations:
27
+ summary: Container absent (instance {{ $labels.instance }})
28
+ description: |-
29
+ A container is absent for 5 min
30
+ VALUE = {{ $value }}
31
+ LABELS = {{ $labels }}
32
+ - alert: ContainerHighCpuUtilization
33
+ expr: (sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (pod, container) / sum(container_spec_cpu_quota{container!=""}/container_spec_cpu_period{container!=""}) by (pod, container) * 100) > 80
34
+ for: 2m
35
+ labels:
36
+ severity: warning
37
+ annotations:
38
+ summary: Container High CPU utilization (instance {{ $labels.instance }})
39
+ description: |-
40
+ Container CPU utilization is above 80%
41
+ VALUE = {{ $value }}
42
+ LABELS = {{ $labels }}
43
+ - alert: ContainerHighMemoryUsage
44
+ expr: (sum(container_memory_working_set_bytes{name!=""}) BY (instance, name) / sum(container_spec_memory_limit_bytes > 0) BY (instance, name) * 100) > 80
45
+ for: 2m
46
+ labels:
47
+ severity: warning
48
+ annotations:
49
+ summary: Container High Memory usage (instance {{ $labels.instance }})
50
+ description: |-
51
+ Container Memory usage is above 80%
52
+ VALUE = {{ $value }}
53
+ LABELS = {{ $labels }}
54
+ - alert: ContainerVolumeUsage
55
+ expr: (1 - (sum(container_fs_inodes_free{name!=""}) BY (instance) / sum(container_fs_inodes_total) BY (instance))) * 100 > 80
56
+ for: 2m
57
+ labels:
58
+ severity: warning
59
+ annotations:
60
+ summary: Container Volume usage (instance {{ $labels.instance }})
61
+ description: |-
62
+ Container Volume usage is above 80%
63
+ VALUE = {{ $value }}
64
+ LABELS = {{ $labels }}
65
+ - alert: ContainerHighThrottleRate
66
+ expr: sum(increase(container_cpu_cfs_throttled_periods_total{container!=""}[5m])) by (container, pod, namespace) / sum(increase(container_cpu_cfs_periods_total[5m])) by (container, pod, namespace) > ( 25 / 100 )
67
+ for: 5m
68
+ labels:
69
+ severity: warning
70
+ annotations:
71
+ summary: Container high throttle rate (instance {{ $labels.instance }})
72
+ description: |-
73
+ Container is being throttled
74
+ VALUE = {{ $value }}
75
+ LABELS = {{ $labels }}
76
+ - alert: ContainerHighLowChangeCpuUsage
77
+ expr: (abs((sum by (instance, name) (rate(container_cpu_usage_seconds_total{name!=""}[1m])) * 100) - (sum by (instance, name) (rate(container_cpu_usage_seconds_total{name!=""}[1m] offset 1m)) * 100)) or abs((sum by (instance, name) (rate(container_cpu_usage_seconds_total{name!=""}[1m])) * 100) - (sum by (instance, name) (rate(container_cpu_usage_seconds_total{name!=""}[5m] offset 1m)) * 100))) > 25
78
+ for: 0m
79
+ labels:
80
+ severity: info
81
+ annotations:
82
+ summary: Container high low change CPU usage (instance {{ $labels.instance }})
83
+ description: |-
84
+ This alert rule monitors the absolute change in CPU usage within a time window and triggers an alert when the change exceeds 25%.
85
+ VALUE = {{ $value }}
86
+ LABELS = {{ $labels }}
87
+ - alert: ContainerLowCpuUtilization
88
+ expr: (sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (pod, container) / sum(container_spec_cpu_quota{container!=""}/container_spec_cpu_period{container!=""}) by (pod, container) * 100) < 20
89
+ for: 7d
90
+ labels:
91
+ severity: info
92
+ annotations:
93
+ summary: Container Low CPU utilization (instance {{ $labels.instance }})
94
+ description: |-
95
+ Container CPU utilization is under 20% for 1 week. Consider reducing the allocated CPU.
96
+ VALUE = {{ $value }}
97
+ LABELS = {{ $labels }}
98
+ - alert: ContainerLowMemoryUsage
99
+ expr: (sum(container_memory_working_set_bytes{name!=""}) BY (instance, name) / sum(container_spec_memory_limit_bytes > 0) BY (instance, name) * 100) < 20
100
+ for: 7d
101
+ labels:
102
+ severity: info
103
+ annotations:
104
+ summary: Container Low Memory usage (instance {{ $labels.instance }})
105
+ description: |-
106
+ Container Memory usage is under 20% for 1 week. Consider reducing the allocated memory.
107
+ VALUE = {{ $value }}
108
+ LABELS = {{ $labels }}
@@ -1,10 +1,11 @@
1
+ # https://samber.github.io/awesome-prometheus-alerts/rules#kubernetes
1
2
  apiVersion: monitoring.coreos.com/v1
2
3
  kind: PrometheusRule
3
4
  metadata:
4
5
  name: kubestate-exporter
5
6
  spec:
6
7
  groups:
7
- - name: KubestateExporter-rules
8
+ - name: Kubestate (awesome) # KubestateExporter-rules
8
9
  rules:
9
10
  - alert: KubernetesNodeNotReady
10
11
  expr: kube_node_status_condition{condition="Ready",status="true"} == 0