Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to...

30
Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Transcript of Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to...

Page 1: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Prometheus Monitoring MixinsUsing Jsonnet to Package Together

Dashboards and Alerts

Tom Wilkie @tom_wilkie August 2018

Page 2: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 3: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 4: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

sum(container_memory_working_set_bytes{ id=“/“, kubernetes_io_hostname=~”^$Node$” }) /

sum(machine_memory_bytes{ kubernetes_io_hostname=~”^$Node$” })

Page 5: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Dashboards and alerts should not be opinionated about labels -

this should be configuration.

Page 6: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 7: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 8: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Want: - configurable - extensible - reusable

Page 9: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Configurable & Extensible

Page 10: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

• YAML & JSON• envsubst, m4, jinja etc• Go, Python

Page 11: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

from grafanalib.core import *

dashboard = Dashboard( title="Frontend Stats", rows=[ Row(panels=[ Graph( title="Frontend QPS", dataSource='My Prometheus', targets=[ Target( expr='sum(irate(nginx_http_requests_total{job="default/frontend",status=~"1.."}[1m]))', legendFormat="1xx", refId='A', ), ...

https://github.com/weaveworks/grafanalib

Page 12: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

jsonnetA data templating language for app and tool developers.

A simple extension of JSON.

http://jsonnet.org/ @sparkprime

Page 13: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 14: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Jsonnet Demo

Page 15: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Configurable & Extensible (II)

Page 16: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

{  _config+:: {...},

 grafanaDashboards+:: {    “dashboard-name.json”: {...},  },

 prometheusAlerts+:: [...],

 prometheusRules+:: [...], }

Page 17: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

{ _config+:: { // Selectors are inserted between {} in Prometheus queries. kubeStateMetricsSelector:

'job="default/kube-state-metrics"', ... }, }

Page 18: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

{ prometheusAlerts+:: { groups+: [{ name: 'kubernetes-apps', rules: [{ alert: 'KubePodCrashLooping', 'for': '1h', expr: ||| rate(kube_pod_container_status_restarts_total {%(kubeStateMetricsSelector)s}[15m]) > 0 ||| % $._config, ...

Page 19: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

groups: - name: kubernetes-apps rules: - alert: KubePodCrashLooping expr: | rate(kube_pod_container_status_restarts_total {job=“default/kube-state-metrics”}[15m]) > 0 for: 1h ...

Page 20: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Reusable

Page 21: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 22: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

jsonnet-bundlerA jsonnet package manager.

https://github.com/jsonnet-bundler/jsonnet-bundler

Page 23: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

$ go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb

$ jb init

$ jb install github.com/kubernetes-monitoring/kubernetes-mixin Cloning into 'vendor'...

$ $ tree vendor vendor ├── grafonnet │   └── ... └── kubernetes-mixin └── ...

Page 24: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

https://goo.gl/JMxwC3

https://goo.gl/JocRm6

Page 25: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

…since KubeCon

Page 26: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Application Mixin

CoreOS Etcd github.com/coreos/etcd/pull/9640

Hashicorp Consul github.com/kausalco/public/consul-mixin

Hashicorp Vault github.com/grapeshot/vault_exporter/vault-mixin

Kubernetes github.com/kubernetes-monitoring/kubernetes-mixin

Page 27: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Now up to 9 contributors.

@metalmatze became a committer.

Contributions from Google, MongoDB, San Diego Supercomputer Centre.

Used in all future versions of OpenShift.

Page 28: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

But wait! We have new mixins…

Prometheus mixin:https://github.com/prometheus/prometheus/pull/4474

node_exporter mixin:https://github.com/prometheus/node_exporter/pull/941

And…

Page 29: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018
Page 30: Prometheus Monitoring Mixins - PromCon NA 2020 · Prometheus Monitoring Mixins Using Jsonnet to Package Together Dashboards and Alerts Tom Wilkie @tom_wilkie August 2018

Thanks for listening. Questions?Tom Wilkie @tom_wilkie May 2018

Photo credits: https://unsplash.com/photos/dmkmrNptMpw https://unsplash.com/photos/nlMYrApFE7s