1
0
Fork 0

feat(rules/grafana): add rule to ensure single env, add staging alert rule

This commit is contained in:
ssube 2019-06-30 20:31:02 -05:00 committed by Sean Sube
parent f5c5e9d664
commit 229a0c8304
1 changed files with 66 additions and 3 deletions

View File

@ -1,6 +1,26 @@
name: grafana name: grafana
rules: rules:
- name: production dashboards should have production alerts - name: single-env
desc: dashboards must have a single environment tag
level: info
tags:
- grafana
- dashboard
- env
select: '$.dashboard'
check:
type: object
properties:
tags:
type: array
oneOf:
- contains:
const: production
- contains:
const: staging
- name: production-alerts
desc: dashboards with the production tag must use notification channels with production in the name desc: dashboards with the production tag must use notification channels with production in the name
level: info level: info
tags: tags:
@ -19,7 +39,7 @@ rules:
items: items:
type: string type: string
contains: contains:
pattern: production const: production
check: check:
type: object type: object
@ -41,3 +61,46 @@ rules:
uid: uid:
type: string type: string
pattern: production pattern: production
- name: staging-alerts
desc: dashboards with the staging tag must not use notification channels with production in the name
level: info
tags:
- grafana
- dashboard
# this is not the ideal selector for this rule, but tags are located at $.dashboard.tags, while notification
# channels are nested under $.dashboard.panels[*].alert.notifications[*].uid
select: '$.dashboard'
filter:
type: object
properties:
tags:
type: array
items:
type: string
contains:
const: staging
check:
type: object
properties:
panels:
type: array
items:
type: object
properties:
alert:
type: object
properties:
notifications:
type: array
items:
type: object
required: [uid]
properties:
uid:
type: string
not:
pattern: production