Как предупредить об использовании памяти JVM в Prometheus с помощью Micrometer и Alertmanager - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в Prometheus и Micrometer. Я пытаюсь предупредить, когда использование динамической памяти JVM превышает определенный порог.

- alert: P1 - Percentage of heap memory usage on environment more than 3% for 5 minutes.
    expr: sum(jvm_memory_used_bytes{application="x", area="heap"})*100/sum(jvm_memory_max_bytes{application="x", area="heap"}) by (instance) > 3
    for: 5m
    labels:
      priority: P1
      tags: infrastructure, jvm, memory
    annotations:
      summary: "Percentage of heap memory is more than threshold"
      description: "Percentage of heap memory for instance '{{ $labels.instance }}' has been more than 3% ({{ $value }}) for 5 minutes."

Теперь это выражение работает, когда я использую это на Графане:

Grafana example

Но у Прометея это выглядит так:

Query in Prometheus

Как заставить мои оповещения предупреждать, когда использование памяти превышает определенный лимит?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вы хотите усреднить использование кучи с течением времени. Я придумал следующее:

- name: jvm
  rules:
    - alert: jvm_heap_warning
      expr: sum(avg_over_time(jvm_memory_used_bytes{area="heap"}[1m]))by(application,instance)*100/sum(avg_over_time(jvm_memory_max_bytes{area="heap"}[1m]))by(application,instance) >= 80
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "JVM heap warning"
          description: "JVM heap of instance `{{$labels.instance}}` from application `{{$labels.application}}` is above 80% for one minute. (current=`{{$value}}%`)"
0 голосов
/ 26 октября 2018

Ваше оповещение правильно настроено на оповещение, только если результат запроса выше 3 в течение 5 минут подряд.Основываясь на графике в запросе Прометея, он не сделал этого за последний час, поэтому оповещение не генерируется.

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

...