LINUX.ORG.RU

prometheus, whitelisting всего

 


0

1

Хочу начать освоение прометеуса с малого.

К примеру есть адрес someserver.com/metrics

Он выплёвывает кучу всего. Мне из всего этого нужно только одна метрика:

base_gc_time_total_seconds{name="G1 Old Generation"} 0.0
base_gc_time_total_seconds{name="G1 Young Generation"} 0.303

Причём вот этот label мне не нужен, я хочу его убрать. Чтобы в базе лежало только одно значение - сумма этих двух значений.

Как убирать лишние метрики я вроде понял:

    metric_relabel_configs:
      - source_labels: [ __name__ ]
        regex: base_gc_time_total_seconds
        action: keep

А вот как убрать лишние label-ы - я не понял. Можно использовать labeldrop, но кажется это не то, он не будет комбинировать получившиеся метрики, а получится какая-то смесь.

То, что можно сумму посчитать в запросе потом это понятно, я в принципе не хочу хранить эту метрику в двух экземплярах.

Также важно, чтобы эта конфигурация применялась локально к конкретной метрике.

В общем по сути хочу включать метрики потихоньку добавляя нужные мне метрики и label-ы, а не всё скопом. Типа добавил base_gc_time_total_seconds, а все label-ы у него убрал. Потом разобрался - что мне нужна более тонкая статистика и добавил этот name конкретно к этой метрике.

★★★★

Последнее исправление: vbr (всего исправлений: 1)

А по какому конкретному алгоритму он должен эти метрики объединять? Это ведь две разных метрики, а не одна.

Если ты просто дропнешь лейблы через labeldrop то у тебя получится две точки данных в один момент времени с одинаковым набором лейблов, что будет undefined behaviour. Возможно, ты хочешь как-то эти метрики аггрегировать в одну? Если так, то тебе в recording rules: https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/

AnDoR ★★★★★
()
Последнее исправление: AnDoR (всего исправлений: 1)
Ответ на: комментарий от AnDoR

А по какому конкретному алгоритму он должен эти метрики объединять?

В описываемом варианте просуммировать. Могут ли быть другие варианты - не знаю, я прометеус пока не понимаю.

Возможно, ты хочешь как-то эти метрики аггрегировать в одну?

Я не знаю, что я хочу. Undefined behaviour (что это значит на практике?) точно не хочу. Я только начал настраивать сбор метрик на практически пустом кластере из двух серверов и там уже кардиналити за 30 000 была. Я так понял, это очень много. Ну у меня прометеус на таких объёмах сразу 200 МБ отожрал. Что будет, когда там будет больше серверов и сервисов. Так не пойдёт. Поэтому решил дропать всё кроме того, что я понимаю.

Пока такой конфиг у меня


  - job_name: cadvisors
    scheme: https
    metrics_path: /metrics/cadvisor
    authorization:
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    tls_config:
      ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    kubernetes_sd_configs:
      - role: node
    metric_relabel_configs:
      - source_labels:
          - __name__
        regex: "container_cpu_usage_seconds_total|\
                container_fs_reads_bytes_total|\
                container_fs_writes_bytes_total|\
                container_memory_working_set_bytes"
        action: keep
      - source_labels:
          - __name__
          - container
        regex: "container_cpu_usage_seconds_total;"
        action: drop
      - source_labels:
          - __name__
          - container
        regex: "container_fs_reads_bytes_total;"
        action: drop
      - source_labels:
          - __name__
          - container
        regex: "container_fs_writes_bytes_total;"
        action: drop
      - source_labels:
          - __name__
          - container
        regex: "container_memory_working_set_bytes;"
        action: drop

Тут я сначала делаю whitelist метрик и потом дополнительно дропаю некоторые метрики, которые не понимаю что означают.

vbr ★★★★
() автор топика
Последнее исправление: vbr (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.