Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ContainerSolutions/helm-monitor
Monitor K8S Helm release, rollback on metrics behavior (Prometheus, Elasticsearch, Sentry)
https://github.com/ContainerSolutions/helm-monitor
elasticsearch helm helm-plugin kubernetes prometheus sentry
Last synced: about 1 month ago
JSON representation
Monitor K8S Helm release, rollback on metrics behavior (Prometheus, Elasticsearch, Sentry)
- Host: GitHub
- URL: https://github.com/ContainerSolutions/helm-monitor
- Owner: ContainerSolutions
- License: mit
- Created: 2018-01-16T15:13:57.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-09-05T10:42:21.000Z (over 1 year ago)
- Last Synced: 2024-08-01T13:27:55.144Z (4 months ago)
- Topics: elasticsearch, helm, helm-plugin, kubernetes, prometheus, sentry
- Language: Go
- Homepage:
- Size: 675 KB
- Stars: 409
- Watchers: 20
- Forks: 60
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Helm Monitor plugin
===================> Monitor a release, rollback to a previous version depending on the result of
a PromQL (Prometheus), events (Sentry), Lucene or DSL query (Elasticsearch).![Helm monitor failure](helm-monitor-failure.png)
## Demo
[![asciicast](https://asciinema.org/a/231906.svg)](https://asciinema.org/a/231906)
## Install
```bash
$ helm plugin install https://github.com/ContainerSolutions/helm-monitor
```## Usage
![Helm monitor diagram](helm-monitor-diagram.jpg)
A rollback happen only if the number of result from the query is greater than 0.
You can find a step-by-step example in the `./examples` directory.
### Prometheus
Monitor the **peeking-bunny** release against a Prometheus server, a rollback
is initiated if the 5xx error rate is over 0 as measured over the last 5
minutes.```bash
$ helm monitor prometheus peeking-bunny 'rate(http_requests_total{code=~"^5.*$"}[5m]) > 0'
```You can connect to a given Prometheus instance, by default it will connect to
*http://localhost:9090*.```bash
$ helm monitor prometheus --prometheus=http://prometheus:9090 \
peeking-bunny \
'rate(http_requests_total{code=~"^5.*$"}[5m]) > 0'
```### Elasticsearch
Monitor the **peeking-bunny** release against an Elasticsearch server, a
rollback is initiated if the 5xx error rate is over 0 for the last minute.Using a Lucene query:
```bash
$ helm monitor elasticsearch peeking-bunny 'status:500 AND kubernetes.labels.app:app AND version:2.0.0'
```Using a query DSL file:
```bash
$ helm monitor elasticsearch peeking-bunny ./query.json
```You can connect to a given Elasticsearch instance, by default it will connect to
*http://localhost:9200*.```bash
$ helm monitor elasticsearch --elasticsearch=http://elasticsearch:9200 \
peeking-bunny \
'status:500 AND kubernetes.labels.app:app AND version:2.0.0'
```### Sentry
Monitor the **peeking-bunny** release against a Sentry server, a rollback is
initiated if the number of events is over 0 for the release 2.0.0:```bash
$ helm monitor sentry my-app \
--api-key \
--organization sentry \
--project my-project \
--sentry http://sentry:9000 \
--tag release=2.0.0 \
--regexp
'Error with database connection.*'
```## Docker
You can also use the Helm monitor backed Docker image to monitor:
```bash
$ docker run -ti -v $HOME/.kube:/root/.kube containersol/helm-monitor \
monitor prometheus --prometheus=http://prometheus:9090 my-release \
'rate(http_requests_total{code=~"^5.*$"}[5m]) > 0'
```## Development
Require Go >= 1.11.
```bash
# Clone the repo, then add a symlink to the Helm plugin directory:
$ ln -s $GOPATH/src/github.com/ContainerSolutions/helm-monitor ~/.helm/plugins/helm-monitor# Build:
$ GOPATH="" GO111MODULE=on go build -o helm-monitor ./cmd/...# Run:
$ helm monitor elasticsearch my-release ./examples/elasticsearch-query.json
```## Alternatives
- [Kuberbs](https://github.com/doitintl/kuberbs) - Kubernetes Automatic Rollback
System