Ruler/Rule#

В случае, если Prometheus, работающий с Thanos Sidecar, не имеет достаточного объема памяти, или необходимы оповещения или правила записи, требующие глобального просмотра, у Thanos есть компонент Ruler, который выполняет оценку правил и предупреждений поверх Querier.

Ruler оценивает правила записи и оповещения Prometheus в соответствии с выбранным API запросов с помощью повторного запроса --query. Если передается более одного запроса, выполняется циклическая балансировка.

По умолчанию результаты оценки правил записываются обратно на диск в формате хранилища Prometheus 2.0. Узлы Ruler одновременно участвуют в системе как узлы хранилища исходных данных, что означает, что они предоставляют доступ к StoreAPI и загружают сгенерированные блоки TSDB в хранилище объектов.

Данные каждого узла Ruler могут быть помечены в соответствии со схемой маркировки кластеров. Пары с высокой доступностью могут запускаться параллельно и должны отличаться назначенной меткой реплики, как и обычные серверы Prometheus.

thanos rule \
    --data-dir             "/path/to/data" \
    --eval-interval        "30s" \
    --rule-file            "/path/to/rules/*.rules.yaml" \
    --alert.query-url      "http://0.0.0.0:9090" \ # Показывает, на какой URL ссылаться в пользовательском интерфейсе.
    --alertmanagers.url    "http://alert.thanos.io" \
    --query                "query.example.org" \
    --query                "query2.example.org" \
    --objstore.config-file "bucket.yml" \
    --label                'monitor_cluster="cluster1"' \
    --label                'replica="A"'

Последовательность выполнения#

Файлы Ruler используют YAML, синтаксис файла правил следующий:

groups:
  [ - <rule_group> ]

Простой пример файла правил:

groups:
  - name: example
    rules:
    - record: job:http_inprogress_requests:sum
      expr: sum(http_inprogress_requests) by (job)
<rule_group>

# Имя группы. Должно быть уникальным в пределах файла.
name: <string>

# Как часто оцениваются правила в группе.
[ interval: <duration> | default = global.evaluation_interval ]

rules:
  [ - <rule> ... ]

Thanos поддерживает два типа правил, которые могут быть настроены и затем оцениваться через регулярные интервалы времени: правила записи и правила оповещения.

Результат#

Ruler настроен и готов к использованию.