# apiVersion: monitoring.coreos.com/v1
# kind: PrometheusRule
# metadata:
#   labels:
#     release: self-monitoring
#   name: metrics-integration-k8s-alert
#   namespace: self-monitoring
# spec:
#   groups:
#     - name: metrics-integration.rules
#       rules:
#         - alert: KubePodCrashLooping
#           annotations:
#             message: Pod {{ $labels.namespace }}/{{ $labels.pod }} is restarting {{ printf "%.2f" $value }} times in 1 hours.
#             runbook_url: https://github.com/tidbcloud/runbooks/wiki/KubePodCrashLooping
#           expr: |
#             increase(kube_pod_container_status_restarts_total{namespace=~"pipeline-.*"}[1h]) > 5
#           for: 1m
#           labels:
#             component: metrics-integration
#             severity: critical
#         - alert: KubePodNotReady
#           annotations:
#             message: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready state for longer than 15 minutes.
#             runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodnotready
#           expr: |
#             sum by (namespace, pod) (max by(namespace, pod) (kube_pod_status_phase{phase=~"Pending|Unknown", namespace=~"pipeline-.*"}) * on(namespace, pod) group_left(owner_kind) max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})) > 0
#           for: 15m
#           labels:
#             severity: warning
#             component: metrics-integration
#         - alert: UnhealthyPod
#           annotations:
#             summary: The pod {{ $labels.pod }} is not ready
#             message: Pod {{ $labels.namespace }}/{{ $labels.pod }} in {{ $labels.cluster }} has been in a non-ready state for longer than 2 minutes.
#           expr: |
#             kube_pod_status_phase{phase=~"Pending|Unknown|Failed",namespace=~"pipeline-.*"} == 1
#           for: 2m
#           labels:
#             severity: critical
#             component: metrics-integration
