groups:
- name: ticdc
  rules:
  - alert: ChangefeedCreationFailed
    annotations:
      summary: Changefeed creation failed due to a system error
      message: Changefeed {{ $labels.changefeed_id }} on cluster {{ $labels.cluster_id }} failed to create (err_type={{ $labels.err_type }}).
    expr: |
      increase(dataflow_ticdc_changefeed_create_result_total{result="failed",err_type="SystemError",provider_type="dedicate"}[5m]) > 0
    for: 0m
    labels:
      severity: critical
      response_class: page
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  - alert: ChangefeedCreationFailedUserError
    annotations:
      summary: Changefeed creation failed due to user configuration error
      message: Changefeed {{ $labels.changefeed_id }} on cluster {{ $labels.cluster_id }} failed to create due to user error (err_type={{ $labels.err_type }}).
    expr: |
      increase(dataflow_ticdc_changefeed_create_result_total{result="failed",err_type!="SystemError",provider_type="dedicate"}[5m]) > 0
    for: 0m
    labels:
      severity: major
      response_class: ticket
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  - alert: TiDBClusterChangefeedCreatingDurationTooLong
    annotations:
      message: The TiDB Cluster {{ $labels.cluster_id }}/{{ $labels.changefeed_id }} changefeed in creating status more than 30m.
    expr: |
      avg by (cluster_id, changefeed_id)(dataflow_changefeed_status{job="dataflow-worker"}) == 0
    for: 30m
    labels:
      severity: major
      response_class: ticket
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  - alert: TiDBClusterChangefeedCreatingDurationTooLongCritical
    annotations:
      message: The TiDB Cluster {{ $labels.cluster_id }}/{{ $labels.changefeed_id }} changefeed in creating status more than 50m.
    expr: |
      avg by (cluster_id, changefeed_id)(dataflow_changefeed_status{job="dataflow-worker"}) == 0
    for: 50m
    labels:
      severity: critical
      response_class: page
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  - alert: TiDBClusterChangefeedScalingDurationTooLong
    annotations:
      message: The TiDB Cluster {{ $labels.cluster_id }}/{{ $labels.changefeed_id }} changefeed in scaling status more than 30m.
    expr: |
      avg by (cluster_id, changefeed_id)(dataflow_changefeed_status{job="dataflow-worker"}) == 9
    for: 30m
    labels:
      severity: major
      response_class: ticket
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  - alert: TiDBClusterChangefeedScalingDurationTooLongCritical
    annotations:
      message: The TiDB Cluster {{ $labels.cluster_id }}/{{ $labels.changefeed_id }} changefeed in scaling status more than 50m.
    expr: |
      avg by (cluster_id, changefeed_id)(dataflow_changefeed_status{job="dataflow-worker"}) == 9
    for: 50m
    labels:
      severity: critical
      response_class: page
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  # Deleting-too-long: mirrors the creating-too-long pattern
  - alert: TiDBClusterChangefeedDeletingDurationTooLong
    annotations:
      message: The TiDB Cluster {{ $labels.cluster_id }}/{{ $labels.changefeed_id }} changefeed in deleting status more than 60m.
    expr: |
      avg by (cluster_id, changefeed_id)(dataflow_changefeed_status{job="dataflow-worker"}) == 2
    for: 60m
    labels:
      severity: major
      response_class: ticket
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated
  - alert: TiDBClusterChangefeedDeletingDurationTooLongCritical
    annotations:
      message: The TiDB Cluster {{ $labels.cluster_id }}/{{ $labels.changefeed_id }} changefeed in deleting status more than 1d.
    expr: |
      avg by (cluster_id, changefeed_id)(dataflow_changefeed_status{job="dataflow-worker"}) == 2
    for: 1d
    labels:
      severity: critical
      response_class: page
      component: ticdc
      oncall_team: tidb_x_tools
      tier: dedicated



