mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
contrib/mixin: Generate rules, fix tests
* Add Makefile * Make tests runnable * Add generated rule manifest file Signed-off-by: Manuel Rüger <manuel@rueg.eu>
This commit is contained in:
parent
986a2b51f4
commit
72c33d8b05
11
.github/workflows/contrib.yaml
vendored
Normal file
11
.github/workflows/contrib.yaml
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
name: Test contrib/mixin
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-go@v2
|
||||||
|
with:
|
||||||
|
go-version: "1.17.6"
|
||||||
|
- run: make -C contrib/mixin tools test
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,6 +14,7 @@
|
|||||||
*.test
|
*.test
|
||||||
hack/tls-setup/certs
|
hack/tls-setup/certs
|
||||||
.idea
|
.idea
|
||||||
|
/contrib/mixin/manifests
|
||||||
/contrib/raftexample/raftexample
|
/contrib/raftexample/raftexample
|
||||||
/contrib/raftexample/raftexample-*
|
/contrib/raftexample/raftexample-*
|
||||||
/vendor
|
/vendor
|
||||||
|
23
contrib/mixin/Makefile
Normal file
23
contrib/mixin/Makefile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.PHONY: tools manifests test clean
|
||||||
|
|
||||||
|
OS := linux
|
||||||
|
ARCH ?= amd64
|
||||||
|
PROMETHEUS_VERSION := 2.33.1
|
||||||
|
|
||||||
|
tools:
|
||||||
|
go install github.com/google/go-jsonnet/cmd/jsonnet@latest
|
||||||
|
go install github.com/brancz/gojsontoyaml@latest
|
||||||
|
wget -qO- "https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.${OS}-${ARCH}.tar.gz" |\
|
||||||
|
tar xvz --strip-components=1 -C "$$(go env GOPATH)/bin" prometheus-${PROMETHEUS_VERSION}.${OS}-${ARCH}/promtool
|
||||||
|
|
||||||
|
manifests: manifests/etcd-prometheusRules.yaml
|
||||||
|
|
||||||
|
manifests/etcd-prometheusRules.yaml:
|
||||||
|
mkdir -p manifests
|
||||||
|
jsonnet -e '(import "mixin.libsonnet").prometheusAlerts' | gojsontoyaml > manifests/etcd-prometheusRules.yaml
|
||||||
|
|
||||||
|
test: manifests/etcd-prometheusRules.yaml
|
||||||
|
promtool test rules test.yaml
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf manifests/*.yaml
|
@ -12,11 +12,15 @@ Instructions for use are the same as the [kubernetes-mixin](https://github.com/k
|
|||||||
|
|
||||||
## Testing alerts
|
## Testing alerts
|
||||||
|
|
||||||
Make sure to have [jsonnet](https://jsonnet.org/) and [gojsontoyaml](https://github.com/brancz/gojsontoyaml) installed.
|
Make sure to have [jsonnet](https://jsonnet.org/) and [gojsontoyaml](https://github.com/brancz/gojsontoyaml) installed. You can fetch it via
|
||||||
|
|
||||||
|
```
|
||||||
|
make tools
|
||||||
|
```
|
||||||
|
|
||||||
First compile the mixin to a YAML file, which the promtool will read:
|
First compile the mixin to a YAML file, which the promtool will read:
|
||||||
```
|
```
|
||||||
jsonnet -e '(import "mixin.libsonnet").prometheusAlerts' | gojsontoyaml > mixin.yaml
|
make manifests
|
||||||
```
|
```
|
||||||
|
|
||||||
Then run the unit test:
|
Then run the unit test:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
rule_files:
|
rule_files:
|
||||||
- mixin.yaml
|
- manifests/etcd-prometheusRules.yaml
|
||||||
|
|
||||||
evaluation_interval: 1m
|
evaluation_interval: 1m
|
||||||
|
|
||||||
@ -86,14 +86,15 @@ tests:
|
|||||||
exp_annotations:
|
exp_annotations:
|
||||||
description: 'etcd cluster "etcd": members are down (1).'
|
description: 'etcd cluster "etcd": members are down (1).'
|
||||||
summary: 'etcd cluster members are down.'
|
summary: 'etcd cluster members are down.'
|
||||||
|
|
||||||
- interval: 1m
|
- interval: 1m
|
||||||
input_series:
|
input_series:
|
||||||
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.0"}'
|
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.0"}'
|
||||||
values: '0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0'
|
values: '0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0'
|
||||||
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.1"}'
|
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.1"}'
|
||||||
values: '0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
values: '0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0'
|
||||||
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.2"}'
|
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.2"}'
|
||||||
values: '0 0 0 0 0 0 0 0'
|
values: '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
||||||
alert_rule_test:
|
alert_rule_test:
|
||||||
- eval_time: 10m
|
- eval_time: 10m
|
||||||
alertname: etcdHighNumberOfLeaderChanges
|
alertname: etcdHighNumberOfLeaderChanges
|
||||||
@ -111,25 +112,34 @@ tests:
|
|||||||
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.1"}'
|
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.1"}'
|
||||||
values: '0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
values: '0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
||||||
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.2"}'
|
- series: 'etcd_server_leader_changes_seen_total{job="etcd",instance="10.10.10.2"}'
|
||||||
values: '0 0 0 0 0 0 0 0'
|
values: '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
||||||
alert_rule_test:
|
alert_rule_test:
|
||||||
- eval_time: 10m
|
- eval_time: 10m
|
||||||
alertname: etcdHighNumberOfLeaderChanges
|
alertname: etcdHighNumberOfLeaderChanges
|
||||||
exp_alerts:
|
exp_alerts:
|
||||||
|
|
||||||
- interval: 1m
|
- interval: 1m
|
||||||
input_series:
|
input_series:
|
||||||
- series: '((etcd_mvcc_db_total_size_in_bytes/etcd_server_quota_backend_bytes)*100){job="etcd",instance="10.10.10.0"}'
|
- series: 'etcd_mvcc_db_total_size_in_bytes{job="etcd",instance="10.10.10.0"}'
|
||||||
values: '0 10 20 0 0 10 0 0 30 0 0 0 0 0 0 0'
|
values: '0 1 2 0 0 1 0 3 0 0 0 0 0 0 0 0'
|
||||||
- series: '((etcd_mvcc_db_total_size_in_bytes/etcd_server_quota_backend_bytes)*100){job="etcd",instance="10.10.10.1"}'
|
- series: 'etcd_server_quota_backend_bytes{job="etcd",instance="10.10.10.0"}'
|
||||||
values: '0 0 10 0 20 0 0 0 0 0 0 0 0 0 0 0'
|
values: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'
|
||||||
- series: '((etcd_mvcc_db_total_size_in_bytes/etcd_server_quota_backend_bytes)*100){job="etcd",instance="10.10.10.2"}'
|
- series: 'etcd_mvcc_db_total_size_in_bytes{job="etcd",instance="10.10.10.1"}'
|
||||||
values: '0 0 0 0 0 0 0 0'
|
values: '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
||||||
|
- series: 'etcd_server_quota_backend_bytes{job="etcd",instance="10.10.10.1"}'
|
||||||
|
values: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'
|
||||||
|
- series: 'etcd_mvcc_db_total_size_in_bytes{job="etcd",instance="10.10.10.2"}'
|
||||||
|
values: '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'
|
||||||
|
- series: 'etcd_server_quota_backend_bytes{job="etcd",instance="10.10.10.2"}'
|
||||||
|
values: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1'
|
||||||
alert_rule_test:
|
alert_rule_test:
|
||||||
- eval_time: 10m
|
- eval_time: 11m
|
||||||
alertname: etcdExcessiveDatabaseGrowth
|
alertname: etcdExcessiveDatabaseGrowth
|
||||||
exp_alerts:
|
exp_alerts:
|
||||||
- exp_labels:
|
- exp_labels:
|
||||||
|
instance: '10.10.10.0'
|
||||||
job: etcd
|
job: etcd
|
||||||
severity: warning
|
severity: warning
|
||||||
exp_annotations:
|
exp_annotations:
|
||||||
message: 'etcd cluster "etcd": Observed surge in etcd writes leading to 50% increase in database size over the past four hours, please check as it might be disruptive.'
|
description: 'etcd cluster "etcd": Observed surge in etcd writes leading to 50% increase in database size over the past four hours on etcd instance 10.10.10.0, please check as it might be disruptive.'
|
||||||
|
summary: 'etcd cluster database growing very fast.'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user