104 lines
2.5 KiB
YAML
104 lines
2.5 KiB
YAML
name: grafana
|
|
rules:
|
|
- 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
|
|
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: production
|
|
|
|
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
|
|
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
|
|
|
|
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 |