apiVersion: 1 groups: - orgId: 1 name: trails.cool alerts folder: trails.cool interval: 1m rules: - uid: disk-usage-high title: Disk usage > 80% condition: B data: - refId: A relativeTimeRange: { from: 600, to: 0 } datasourceUid: prometheus model: expr: (1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 instant: true - refId: B datasourceUid: __expr__ model: type: threshold expression: A conditions: - evaluator: { params: [80], type: gt } operator: { type: and } reducer: { type: last } for: 15m annotations: summary: "Disk usage is above 80%" - uid: app-health-failing title: App health check failing condition: B data: - refId: A relativeTimeRange: { from: 300, to: 0 } datasourceUid: prometheus model: expr: up{job=~"journal|planner"} instant: true - refId: B datasourceUid: __expr__ model: type: threshold expression: A conditions: - evaluator: { params: [1], type: lt } operator: { type: and } reducer: { type: last } for: 2m annotations: summary: "{{ $labels.job }} is down" - uid: error-rate-high title: Error rate > 5% condition: B noDataState: OK data: - refId: A relativeTimeRange: { from: 600, to: 0 } datasourceUid: prometheus model: expr: (sum(rate(http_request_duration_seconds_count{status=~"5.."}[5m])) or vector(0)) / clamp_min(sum(rate(http_request_duration_seconds_count[5m])), 0.001) * 100 instant: true - refId: B datasourceUid: __expr__ model: type: threshold expression: A conditions: - evaluator: { params: [5], type: gt } operator: { type: and } reducer: { type: last } for: 5m annotations: summary: "Error rate is above 5%" contactPoints: - orgId: 1 name: email receivers: - uid: email-default type: email settings: addresses: admin@trails.cool policies: - orgId: 1 receiver: email