Prometheus Docker не удается запустить с `Template: (dynamic): parse: template: :10: неопределенная переменная «$ labels»`

#prometheus #prometheus-alertmanager

#prometheus #prometheus-alertmanager

Вопрос:

Я пытаюсь запустить Prometheus на Nomad. Все выглядит нормально, но когда я добавляю правило оповещения с шаблоном в annotations , происходит сбой.

вот простое правило предупреждения:

 groups:
- name: alertmanager.rules
  rules:
  - alert: AlertmanagerDown
    expr: up{job="alertmanager"} == 0
    for: 1s
    labels:
      severity: critical
    annotations:
      description: 'Alertmanager on {{ $labels.role }} instance {{ $labels.node }} has not produced any metrics for 5 minutes'
      summary: 'Alertmanager is down on {{ $labels.role }} instance {{ $labels.node }}'
  

Контейнер завершается ошибкой с Template: (dynamic): parse: template: :10: undefined variable "$labels"

Если я удалю annotations раздел, он запустится без каких-либо проблем.

Ответ №1:

Пришлось установить для left_delimiter and right_delimiter значение, отличное от {{ and }}
https://www.nomadproject.io/docs/job-specification/template.html#left_delimiter

Комментарии:

1. Не могли бы вы отправить изменение, которое вы указали, я получил ту же ошибку?

Ответ №2:

Я столкнулся с той же проблемой при развертывании Prometheus. При развертывании Prometheus через диаграмму helm возникнет проблема, поскольку одни и те же разделители ({{ и }}) используются как шаблонами helm, так и шаблонами оповещения в Prometheus.

В моем случае решение таково:

   recordType: ALARM
  managedObjectInstance: "Namespace={{ "{{" }} $labels.app_kubernetes_io_instance }},Instance={{ "{{" }} $labels.instance }}"
  

Еще один пример можно найти здесь.