# MongoDB alert rules — https://n9e.github.io/alert-rules/mongodb
# Generated from the Nightingale integration templates: https://github.com/ccfos/nightingale/tree/main/integrations
# Thresholds are starting points: review them before enabling.
groups:
  - name: "mongodb-exporter"
    rules:
      - alert: "MongoDB average operation latency exceeds 250ms - exporter"
        expr: |-
          rate(mongodb_mongod_op_latencies_latency_total[5m]) / rate(mongodb_mongod_op_latencies_ops_total[5m]) > 250000
        for: 10m
        labels:
          severity: warning
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo connection number has exceeded 80% - exporter"
        expr: |-
          avg by (instance) (mongodb_connections{state="current"}) / (avg by (instance) (mongodb_connections{state="current"}) + avg by (instance) (mongodb_connections{state="available"})) * 100 > 80
        for: 2m
        labels:
          severity: warning
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo has encountered an Assert error - exporter"
        expr: |-
          rate(mongodb_asserts_total{type=~"regular|message"}[5m]) > 0
        for: 30m
        labels:
          severity: info
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo has encountered cursor timeout - exporter"
        expr: |-
          rate(mongodb_mongod_metrics_cursor_timed_out_total[5m]) > 0
        for: 30m
        labels:
          severity: warning
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo has encountered page fault interrupt - exporter"
        expr: |-
          rate(mongodb_extra_info_page_faults_total[5m]) > 0
        for: 30m
        labels:
          severity: warning
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo has just restarted, please pay attention - exporter"
        expr: |-
          mongodb_instance_uptime_seconds < 60
        labels:
          severity: info
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo instance has crashed - exporter"
        expr: |-
          mongodb_up == 0
        labels:
          severity: critical
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
      - alert: "Mongo replica set master-slave delay exceeds 30 seconds - exporter"
        expr: |-
          (max by (rs_nm) (mongodb_rs_members_optimeDate) - min by (rs_nm) (mongodb_rs_members_optimeDate)) / 1000 > 30
        for: 1m
        labels:
          severity: critical
        annotations:
          runbook_url: "https://n9e.github.io/alert-rules/mongodb"
