Как использовать Прометей, чтобы предупредить конкретное сообщение об ошибке? - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь собрать статус работающего приложения, если произошла ошибка, тогда используйте alertmanager для оповещения.

Я читаю документы о типах метрик, кажется, калибровочный vec - единственный подходящий тип. В настоящее время мое определение метрики похоже (это на Go, но вы можете понять):

errored = prometheus.NewGaugeVec(
    prometheus.GaugeOpts{
        Name: "validate_errored"
    },
    []string{"module"},
)

1 будет сообщено, когда произошла ошибка. А alertmanager настроен на оповещение, когда validate_errored становится 1.

Но теперь мне нужно знать точную ошибку в предупреждающем сообщении, поэтому я решил добавить новую метку:

errored = prometheus.NewGaugeVec(
    prometheus.GaugeOpts{
        Name: "validate_errored"
    },
    []string{"module", "error"},
)

Об ошибках будут оповещаться успешно, но проблема с этим способом в том, что Прометей, кажется, агрегирует по каждой уникальной метке при запросе, каждое отдельное сообщение об ошибке становится линией на диаграмме.

Я также читал, что это может быть проблемой, если я использую метки для хранения переменных данных, которые я сейчас забыл об источнике.

Так, каков идиоматический способ предупредить определенную ошибку?

1 Ответ

0 голосов
/ 15 сентября 2018

Читая ваш вопрос, я предполагаю, что при возникновении ошибки показатели будут равны «1», пока приложение не будет перезапущено.Или состояние может быть сброшено после того, как условие было очищено пользователем.

Если это состояние, которое будет позже очищено, то будет использоваться Датчик.Если вы хотите сообщить / предупредить о том, сколько ошибок (какого типа) произошло, счетчик может быть более подходящим.

Prometheus - хороший инструмент для записи и оповещения о показателях (и состоянии) информации,

Если вы хотите предупреждать о событиях (факт, что произошла ошибка), может подойти что-то вроде решения для управления журналами.Журнал также может предоставить более подробную информацию о том, что произошло.

Вы можете добавить ошибку в качестве метки, если нет «взрыва метрик».Если количество типов ошибок достаточно мало, вы можете сделать это как метку.Нечто вроде идентификатора пользователя (с неограниченным количеством значений) не должно использоваться в качестве метки, так как это может привести к взрыву метрик. Об этом также говорится в документах Prometheus.

Добавление метки, которая должна быть более точной, когда отправлять оповещения, обычно является хорошей вещью.Добавление метки для ее отображения в предупреждающем сообщении технически возможно, но это не лучшая причина для добавления метки, поскольку она создает дополнительные временные ряды для каждого значения метки (IMHO).

...