Перейти к содержанию

CamundaCanaryEsIngestionFailed

Что означает алерт

Алерт срабатывает, если канарейка Camunda больше 10 минут не подтверждает появление созданного process instance в индексах zeebe-record_process-instance* в Elasticsearch.

Это означает, что Zeebe может создавать процессы, но экспорт/запись в ES деградировали.

Быстрый чек

NS=camunda   # для prod при необходимости: camunda-prod
  1. Проверить состояние кластера ES:
kubectl -n "$NS" port-forward svc/camunda-elasticsearch 9200:9200
curl -s localhost:9200/_cluster/health?pretty
  1. Проверить метрики канарейки:
CANARY_DEPLOY=$(kubectl -n "$NS" get deploy -l app.kubernetes.io/component=es-operate-canary -o jsonpath='{.items[0].metadata.name}')
kubectl -n "$NS" port-forward deploy/"$CANARY_DEPLOY" 18080:8080
curl -s localhost:18080/metrics | rg 'camunda_canary_(last|run|stage|failures)'
  1. Проверить лимит шардов и загрузку:
MAX=$(curl -s localhost:9200/_cluster/settings?flat_settings=true\&include_defaults=true | jq -r '.persistent["cluster.max_shards_per_node"] // .transient["cluster.max_shards_per_node"] // .defaults["cluster.max_shards_per_node"] // "1000"')
NODES=$(curl -s localhost:9200/_cluster/health | jq -r '.number_of_data_nodes')
ACTIVE=$(curl -s localhost:9200/_cluster/health | jq -r '.active_shards')
echo "active=$ACTIVE limit=$((MAX * NODES))"

Диагностика вручную

  1. Получить processInstanceKey последнего запуска канарейки:
KEY=$(curl -s localhost:18080/metrics | awk '/camunda_canary_last_instance_key/{print $2}' | tail -1)
echo "$KEY"
  1. Проверить, что instance есть в zeebe-record индексах:
curl -s -X POST localhost:9200/zeebe-record_process-instance*/_search \
  -H 'Content-Type: application/json' \
  -d "{\"size\":1,\"query\":{\"bool\":{\"should\":[{\"term\":{\"value.processInstanceKey\":$KEY}},{\"term\":{\"processInstanceKey\":$KEY}}],\"minimum_should_match\":1}}}" | jq '.hits.total'

Если value=0, запись в ES не доходит.

Что делать

  1. Если кластер близко к shard limit:
  2. удалить/сжать старые операционные индексы;
  3. сократить retention;
  4. как временная мера поднять cluster.max_shards_per_node.

  5. Проверить Zeebe exporter и ошибки записи:

kubectl -n "$NS" logs -l app.kubernetes.io/component=zeebe-broker --tail=200 | rg -i 'elasticsearch|export|failed|error'
  1. Проверить доступность ES из namespace Camunda:
kubectl -n "$NS" exec deploy/"$CANARY_DEPLOY" -- \
  curl -sS -o /dev/null -w '%{http_code}\n' http://camunda-elasticsearch:9200/_cluster/health

Критерий закрытия

  1. Канарейка стабильно показывает camunda_canary_stage_success{stage="es"} = 1.
  2. CamundaCanaryEsIngestionFailed перешел в resolved.
  3. Новые бизнес-процессы подтверждаются в Operate.