Зачем инициализировать Prometheus Counter явно?
На практике при работе с метриками часто забывается, что только counters без labels инициализируются сразу же при их объявлении (по сути выставляются в 0).
Если же counter содержит хотя бы одну label,
он будет проинициализирован только при первом инкременте c этой label.
И все бы ничего, но в таком случае написание alerts такого вида становятся некорректными:
sum(rate(validated_tokens_total[15m])) < 0.01
Потому что в случае отсутствия траффика на наш сервис (о чем собственно мы и хотим узнать, написав данный alert), мы получим
no data, но никак не число, которое Prometheus потом сможет сравнить.
В таком случае, мы можем упустить инцидент: пользователям не отвечает наше приложение, а мы об этом даже не знаем!
Решений здесь 2:
1. Обязательно добавлять второе условие c
absent в подобные alerts: OR absent(rate(validated_tokens_total[15m]))
2. Просто
инициализировать все возможные labels сразу же (как на картинке в static block)
Лично я предпочитаю второй вариант, потому что не могу надеяться, что все разработчики знают и помнят такие нюансы при написании alerts
PS. Более подробно можно почитать здесь