CamundaCanaryEsIngestionFailed
Что означает алерт
Алерт срабатывает, если канарейка Camunda больше 10 минут не подтверждает появление созданного process instance в индексах zeebe-record_process-instance* в Elasticsearch.
Это означает, что Zeebe может создавать процессы, но экспорт/запись в ES деградировали.
Быстрый чек
NS=camunda # для prod при необходимости: camunda-prod
- Проверить состояние кластера ES:
kubectl -n "$NS" port-forward svc/camunda-elasticsearch 9200:9200
curl -s localhost:9200/_cluster/health?pretty
- Проверить метрики канарейки:
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)'
- Проверить лимит шардов и загрузку:
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))"
Диагностика вручную
- Получить
processInstanceKeyпоследнего запуска канарейки:
KEY=$(curl -s localhost:18080/metrics | awk '/camunda_canary_last_instance_key/{print $2}' | tail -1)
echo "$KEY"
- Проверить, что 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 не доходит.
Что делать
- Если кластер близко к shard limit:
- удалить/сжать старые операционные индексы;
- сократить retention;
-
как временная мера поднять
cluster.max_shards_per_node. -
Проверить Zeebe exporter и ошибки записи:
kubectl -n "$NS" logs -l app.kubernetes.io/component=zeebe-broker --tail=200 | rg -i 'elasticsearch|export|failed|error'
- Проверить доступность 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
Критерий закрытия
- Канарейка стабильно показывает
camunda_canary_stage_success{stage="es"} = 1. CamundaCanaryEsIngestionFailedперешел вresolved.- Новые бизнес-процессы подтверждаются в Operate.