
Maxim
03.09.2016
18:00:30
ща пример покажу

Алексей
03.09.2016
18:00:34
давай

Maxim
03.09.2016
18:01:14
$ cat /etc/prometheus/rules/service_is_unreachable.rules
ALERT service_is_unreachable
IF sum by (node, service)(consul_catalog_service_node_healthy == 0 and (consul_catalog_service_node_healthy{node !~ ".*beta.+"} or consul_catalog_service_node_healthy{service = "blackbox-exporter"}))
FOR 3m
LABELS { severity = "critical" }
ANNOTATIONS {
summary = "ALARM! service \"{{ $labels.service }}\" on node {{ $labels.node }} is unreachable",
description = "Wake up and shine"
}

Алексей
03.09.2016
18:02:21
так и ?

Google

Maxim
03.09.2016
18:02:35
если node !~ ".*beta.+" или service = "blackbox-exporter", то колотить в рынду
у тебя вместо node !~ ".*beta.+" будет $labels.env == "prod"
или я не так понял твой вопрос?

Алексей
03.09.2016
18:04:19
видимо да, не понял
я могу сделать это так вот
ALERT disk_usage_percent_critical
IF disk_used_percent{env="infrastructure",fstype!="rootfs"} > 95
LABELS {
service = "disk",
severity = "minor",
value = "{{$value}}",
environment = "infrastructure"
}
ANNOTATIONS {
summary = "Disk alert triggered",
description = "{{$labels.host}}:{{$labels.path}} have {{$value}}",
}
ALERT disk_usage_percent_critical
IF disk_used_percent{env="prod",fstype!="rootfs"} > 85
LABELS {
service = "disk",
severity = "minor",
value = "{{$value}}",
environment = "Production"
}
ANNOTATIONS {
summary = "Disk alert triggered",
description = "{{$labels.host}}:{{$labels.path}} have {{$value}}",
}
но это жесткое дублирование кода


Maxim
03.09.2016
18:07:31
ALERT disk_usage_percent_critical
IF disk_used_percent{env="infrastructure",fstype!="rootfs"} > 95 or disk_used_percent{env="prod",fstype!="rootfs"} > 85
LABELS {
service = "disk",
severity = "minor",
value = "{{$value}}",
}
ANNOTATIONS {
summary = "Disk alert triggered",
description = "In environment {{$labels.env}} {{$labels.host}}:{{$labels.path}} have {{$value}}"
}
не?
IF prod_case or infra_case
а дальше все одинаковое вроде
абля, ты там еще env длинно пишешь
пропустил
вообще можно убрать

Google

Maxim
03.09.2016
18:10:11
там будет в дескрипшне

Алексей
03.09.2016
18:11:19
ну тоесть логику понял да
усложняем If

Maxim
03.09.2016
18:11:35
ну зато не дублируем остальное

Алексей
03.09.2016
18:27:07
логично да. спасибо.

Maxim
03.09.2016
21:59:11
https://github.com/prometheus/prometheus/releases/tag/v1.1.0

Алексей
03.09.2016
22:08:15
прекрасная новость
не понимаю поведение функции rate
она мне для counter rate(net_bytes_recv{host="$host"}[25s]) отдает в 10 раз ментшгие значения чем реальность

Maxim
03.09.2016
23:06:50
сумму забыл небось

Алексей
03.09.2016
23:07:05
хм
а при чем тут сумма ?
у меня ровно одна метрика

Maxim
03.09.2016
23:07:20
ну ты описание к рейту читал?
https://prometheus.io/docs/querying/functions/#rate

Алексей
03.09.2016
23:07:49
Note that when combining rate() with an aggregation operator (e.g. sum()) or a function aggregating over time (any function ending in _over_time), always take a rate() first, then aggregate. Otherwise rate() cannot detect counter resets when your target restarts.

Maxim
03.09.2016
23:08:11
не, я не об этом
выше
> rate(v range-vector) calculates the per-second average rate of increase of the time series in the range vector.
per-second average rate

Google

Maxim
03.09.2016
23:08:56
теперь сложи их

Алексей
03.09.2016
23:08:59
эм
не понимаю логики
у меня есть каунтер
он растет

Maxim
03.09.2016
23:09:16
он изменяется
иногда

Алексей
03.09.2016
23:09:19
ну да
нет он все время ростет

Maxim
03.09.2016
23:09:37
ну он не монотонно меняется
я понимаю, что уменьшаться он не может
он же каунтер
ну так вот
он иногда подрастает
а rate монотонно регистрирует его изменение раз в секунду за заданный интервал
ну короче
вот держи пример
sum (rate (container_network_receive_bytes_total{kubernetes_io_hostname=~"^$Node$"}[10m])) by (kubernetes_pod_name)

Алексей
03.09.2016
23:11:41
sum(rate(net_bytes_recv{host="XXX"}[25s]))

Maxim
03.09.2016
23:11:47
вооот

Google

Maxim
03.09.2016
23:11:53
you get the idea
теперь должно стать правильно

Алексей
03.09.2016
23:12:09
но в результате я получаю тот же самый график
ну чуть более сглаженный
отличия от реального положения дел ровно в 10 раз

Maxim
03.09.2016
23:16:33
абля
а с каким интервалом ты эту метрику снимаешь-то?

Алексей
03.09.2016
23:16:57
10s

Maxim
03.09.2016
23:17:22
я про scrape_interval

Алексей
03.09.2016
23:17:27
да
10s

Maxim
03.09.2016
23:18:37
поставь у рейта отрезок побольше
минут десять

Алексей
03.09.2016
23:19:32
так же

Maxim
03.09.2016
23:20:19
а с чем сравниваешь?

Алексей
03.09.2016
23:21:11
сравниваю с nload на интерфейсе
nload говорит у тя есть 20мегабит, чувак

Maxim
03.09.2016
23:22:26
нене
погоди

Алексей
03.09.2016
23:22:29
а prom говорит что 2,8

Google

Maxim
03.09.2016
23:22:38
вот у тебя есть net_bytes_recv

Алексей
03.09.2016
23:22:49
да

Maxim
03.09.2016
23:22:56
без сумм, рейтов и всего говна

Алексей
03.09.2016
23:23:07
там цифра получена хорошая
и ее порядок верный

Maxim
03.09.2016
23:23:49
если ты руками возьмешь показатели несколько раз с примерно равными интервалами, ты получишь примерно верный рейт?

Алексей
03.09.2016
23:24:10
уверен что да.

Maxim
03.09.2016
23:24:18
а я не уверен

Алексей
03.09.2016
23:24:30
ибо эти же цифры кладутся тем же телеграфом в influxdb
и там рисуются верно

Maxim
03.09.2016
23:35:35
ну ты попробуй засечь
эксперимент же интереснее, чем тупняк
https://www.youtube.com/playlist?list=PLoz-W_CUquUlCq-Q0hy53TolAhaED9vmU

ptchol
04.09.2016
13:52:01
пронкон ))

Алексей
04.09.2016
20:15:12
ну ты попробуй засечь
попробовал
1457483011240-1457510637082
1457510637082-1457537699861
1457537699861-1457566716138
1457566716138-1457596700841
1457596700841-1457596700841
1457625703386-1457657536805
нормально растет
как раз ~27000000

Maxim
04.09.2016
20:15:42
нормально растет - это запредельная точность
как оно с реальностью-то пересекается?

Алексей
04.09.2016
20:16:00
да