Коллеги, всем привет!)
#Рубрика - по горячим следам
Пятница, новый год, что еще может быть лучше?=)
В очередной раз побили рекорд по трейсам и все бы ничего, но пришлось нашему Grafana Tempo немного полежать. Ingester не пережил пиковой нагрузки, отвалился по OOM, а потом не смог стартануть. С OOM все более менее понятно, выросла нагрузка - подкинь ресурсы, но приключения только начались.
Основная ошибка у нас была следующая:
found an existing instance(s) with a problem in the ring, this instance cannot become ready until this problem is resolved. The /ring http endpoint on the distributor (or single binary) provides visibility into the ring
О чем она - Ingester и Distributor при помощи протокола Gossip Ring собираются в кластера для синхронизации, обмена информацией и балансировки нагрузки. И для Ingester кластер развалился. Ну развалился и развалился, можно все почистить и собрать заново, данные то не критичные. А как это сделать?
1 - перезапустить поды Ingester`а (ууупс, ошибка на месте =))
2 - почистить PV (Ошибка снова на месте =))
3 - пойти почитать документацию (Надо было сделать это сразу)
Оказалось что у Distibutor есть свой api через который вы сможете посмотреть “что-где-куда” и посмотреть что с Ring Status. Доступен api по следующем эндпоинтам:
#localhost в данном случае "форвартнутый" сервис k8s distibutor
http://localhost:3200/status #общий статус
http://localhost:3200/ingester/ring #Ingester Gossip Ring Status
Благодаря этому мы сможем увидеть общее состояние кластера Ingester и в случае если в кластере есть проблемные ноды Ingester`а удалить их. После этого кластер благополучно соберется снова =)
ЗЫ - на скриншоте в пике 1.33kk трейсов в секунду =)
