feat(rules/grafana): add rule to ensure single env, add staging alert rule
This commit is contained in:
parent
f5c5e9d664
commit
229a0c8304
|
@ -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
|
Loading…
Reference in New Issue