- name: Alertas do Celery
rules:
# Um alerta para o quantil 0,9 da duração da tarefa, avisa que as análises estão sendo executadas lentamente
- alert: Análise de qualidade está lenta!
expr: histogram_quantile(0.9, sum without (handler) (rate(flower_task_runtime_seconds_bucket{task="oz_core.tasks.tfss.process_analyse_quality"}[5m]))) > 5
for: 10m
labels:
severity: warning
annotations:
summary: "Duração muito longa do worker do celery para a tarefa TFSS"
description: "A duração de 90% das análises de qualidade é maior que {{ $value }} segundos nos últimos 10 minutos. NAMESPACE: {{ $labels.namespace }} POD: {{ $labels.pod }} TASK: {{ $labels.task }} WORKER: {{ $labels.worker }}"
# Um alerta para tarefas com falha; se o número estiver crescendo, algo está errado
- alert: Tarefas do Celery falharam!
expr: sum by(type,task) (rate(flower_events_total{type="task-failed", task!=""}[1m])) > 0
for: 1m
labels:
severity: warning
annotations:
summary: "Tarefas do Celery {{ $labels.task }} falharam"
description: 'Taxa de tarefas do celery com falha: {{ printf "%.2f" $value }} rps'
# Um alerta crítico que avisa que todas as tarefas falharam; isso significa que o sistema parou de processar solicitações
- alert: Celery sem tarefas bem-sucedidas!
expr: sum by(type,task) (rate(flower_events_total{type="task-succeeded", task!=""}[1m])) == 0 and on (task) sum by(type,task) (rate(flower_events_total{type="task-received", task!=""}[1m])) > 0
for: 5m
labels:
severity: critical
annotations:
summary: "Celery não tem tarefas bem-sucedidas: {{ $labels.task }}!"
description: "Crítico! Verifique se o bio está ativo!"
- name: Alertas do Redis
rules:
# Um alerta crítico que avisa que o Redis está indisponível
- alert: Redis está indisponível
expr: redis_up != 1
for: 30s
labels:
severity: critical
annotations:
summary: "O Redis está indisponível há mais de 30 segundos!"
description: "Crítico: o serviço REDIS está indisponível no namespace: {{ $labels.namespace }}\nPod: {{ $labels.pod }}!"
# Exibe se o Redis rejeita conexões
- alert: Redis rejeita conexões
expr: rate(redis_rejected_connections_total[1m]) > 0
for: 1m
labels:
severity: warning
annotations:
summary: "O Redis rejeita conexões há mais de 1 minuto no namespace: {{ $labels.namespace }}!"
description: "Algumas conexões com o Redis foram rejeitadas!\nPod: {{ $labels.pod }}\nValue = {{ $value }}"
# Exibe que os comandos do Redis estão sendo executados muito lentamente
- alert: Duração dos comandos do Redis está lenta!
expr: max by(namespace) (rate(redis_commands_duration_seconds_total[1m])) > 0.0004
for: 1m
labels:
severity: warning
annotations:
summary: "A duração máxima dos comandos do Redis está muito alta há mais de 1 minuto no namespace: {{ $labels.namespace }}!"
description: "A duração máxima dos comandos é maior que a média!\nValue = {{ $value }} seconds"
# Avisa que a fila do Redis está muito longa
- alert: Comprimento da fila do Redis
expr: sum by (instance)(redis_key_size) > 50
for: 1m
labels:
severity: warning
annotations:
summary: "O tamanho da fila do Redis está muito grande!"
description: "Aviso: tamanho da fila do Redis: {{ $value }} nos últimos 1 min!"
# Avisa que há mais de 10 mensagens em processamento (unacked) na fila do Redis
- alert: Redis com mensagens unacked
expr: sum by (key)(redis_key_size{key="unacked"}) > 10
for: 1m
labels:
severity: warning
annotations:
summary: "O Redis tem mensagens unacked!"
description: "Aviso: o Redis tem {{ $value }} mensagens unacked!"
- name: Alertas do TFSS
rules:
# Alerta crítico que avisa sobre o blackbox detectar comportamento incorreto do modelo
- alert: Alerta do serviço de verificação dos modelos do TFSS!
expr: probe_success{job="blackbox-tfss-service"} != 1
for: 3m
labels:
severity: critical
annotations:
summary: "O modelo TFSS no namespace {{ $labels.namespace }} está indisponível!"
description: "!!!ALERTA!!! O modelo ou servidor do TFSS não funciona:\nMODEL:{{ $labels.model }}\nA verificação do modelo tem retornado estado FAILED por 3 min!"
- alert: Alerta do pod de verificação dos modelos do TFSS!
expr: probe_success{job="blackbox-tfss-models"} != 1
for: 3m
labels:
severity: critical
annotations:
summary: "O modelo TFSS no namespace {{ $labels.namespace }} está indisponível!"
description: "O TFSS no pod {{ $labels.pod }} não funciona:\nMODEL:{{ $labels.model }}\nA verificação do modelo tem retornado estado FAILED por 3 min!"
- alert: Alerta do pod de verificação de predição do TFSS!
expr: probe_success{job="blackbox-tfss-probe"} != 1
for: 3m
labels:
severity: critical
annotations:
summary: "A predição do modelo TFSS no namespace {{ $labels.namespace }} está indisponível!"
description: "O TFSS no pod {{ $labels.pod }} não funciona:\nMODEL:{{ $labels.model }}\nA verificação de predição tem retornado estado FAILED por 3 min!"
# Alerta crítico que avisa sobre o TFSS não processar requisições
- alert: Taxa de requisições vazia do TFSS!
expr: absent(:tensorflow:serving:request_count{namespace="api-prod"}) == 1
for: 1m
labels:
severity: critical
annotations:
summary: "A taxa de requisições do TFSS está vazia!!!"
description: "Crítico! As requisições não estão sendo processadas, verifique o bio!!!"
groups:
- name: Alertas do NGINX
rules:
# Um alerta crítico que exibe que o nginx não tratou algumas das conexões aceitas
- alert: o nginx não está tratando todas as conexões
expr: rate (nginx_connections_handled[5m]) / rate (nginx_connections_accepted[5m]) <1
for: 2m
labels:
severity: critical
annotations:
summary: "Problema do nginx ao tratar conexões"
description: "Crítico: o nginx não trata algumas conexões aceitas no host {{ $labels.instance }} há mais de 3 minutos!"
groups:
- name: Alertas da API
rules:
# Um alerta crítico que avisa que não há contêineres da API prontos, então as requisições não estão sendo processadas
- alert: Contêineres da API prontos ausentes!
expr: absent(kube_pod_container_status_ready{container="oz-api", namespace="api-prod"} == 1)
for: 1m
labels:
severity: critical
annotations:
summary: "Contêineres da API prontos ausentes!!!"
description: "Crítico! Verifique os contêineres da API!!!"