
Sergey
21.12.2017
10:56:23
т.е. как бы все правильно, но неоптимально

Vladimir
21.12.2017
10:56:37
чтобы писать на шаблонизаторе, а потом компилировать в босуновский конфиг
и он разворачивал это дело в простыню

Sergey
21.12.2017
10:56:56

Google

Vladimir
21.12.2017
10:57:05

Sergey
21.12.2017
10:57:08
почему не сделана передача уже определенного хоста обратно в запрос - нипанятна

Vladimir
21.12.2017
10:57:11
впрочем оба варианта будет лучше

Mike
21.12.2017
10:57:15
а, таки график один

Sergey
21.12.2017
10:57:22
та

Mike
21.12.2017
10:58:11
тогда by design, читаем исходинки тут: https://github.com/bosun-monitor/bosun/blob/63ebb1920616cbe178f6918d2a0c2a2ab10cbd3f/cmd/bosun/sched/template.go#L339
сначала делается запрос as is, по результатам делается Filter(Group)

Sergey
21.12.2017
10:59:04
вооот
и это пипец как не быстро если есть вот такие... запросы :)
которые по площадям бъют
это плохие триггеры... но у меня миграция... и надо не сломать то что работает
в смысле логику
т.е. когда алерт описывает систему из 10 серверов и там куча всякой математики - это норм и все работает норм... а когда у тебя есть триггер который придумали... короче придумали и придумали :) и он фигачит всю инфраструктуру... то воть

Google

Sergey
21.12.2017
11:05:42
я кстати правильно понял что пока не сделан вызов .Graph то что ей передается это просто строка?

Mike
21.12.2017
11:06:25
да

Sergey
21.12.2017
11:07:38
спасибо! попробую поколдунствовать, ну или на крайняк почитаю код bosun на предмет можно ли его поправить чтобы обратно переменные в запрос вставлять

Mike
21.12.2017
11:07:44
правда есть вот такая тема: https://github.com/bosun-monitor/bosun/blob/63ebb1920616cbe178f6918d2a0c2a2ab10cbd3f/opentsdb/tsdb.go#L662
покажи plz полный тест запроса в графит


Sergey
21.12.2017
11:11:40
alert cpu.busy {
template = default
unknownIsNormal = true
unjoinedOk = true
$expr = "averageAbove(*.linux.*.cpu.busy, 33)"
$busy_last_5_min = graphite($expr, "6m", "1m", "contur..host")
$busy_last_1_min = graphite($expr, "2m", "1m", "contur..host")
$busy_last_1_hour = graphite($expr, "1h", "", "contur..host")
$avg_busy_last_1_min = avg($busy_last_1_min)
$avg_busy_last_5_min = avg($busy_last_5_min)
warn = ($avg_busy_last_1_min > 75) || ($avg_busy_last_5_min > 50)
crit = ($avg_busy_last_1_min > 95) && ($avg_busy_last_5_min > 33)
}
template default {
subject = {{.Last.Status}}: {{.Alert.Name}} in {{.Group.contur}} on {{.Group.host}}
body = `
<p>Alert: {{.Alert.Name}} triggered on {{.Group.host}}
<hr>
<table>
{{range $k, $v := .Group}}
<tr><td>{{$k}}: </td><td>{{$v}}</td></tr>
{{end}}
</table>
<br>
{{.Graph .Alert.Vars.busy_last_1_hour}}
`
}
вот сам алерт отрабатывает 1 сек, а заполнение темплейта с графиком - секунд 40
зависит от количества выстрелов ессна
без графика - 500мс


Mike
21.12.2017
11:13:44
ндаа ... видимо тот кусок про подстановку фильтра - он про opentsdb

Sergey
21.12.2017
11:14:21
почитаю код, спасибо за наводки
это кстати уже 5 итерация оптимизаций :) в первой версии я делал не $expr = "averageAbove(*.linux.*.cpu.busy, 33)" а $expr = "*.linux.*.cpu.busy" и уже математику считал в бозоне - алерт отрабатывал секунд 5 а хистори - минуты 4 :)

Artem
21.12.2017
11:34:45
че-то как-то не могу победить https://stackoverflow.com/questions/17045549/graphite-render-precision-lower-than-1-minute
кто может подсказать? ?

Sergey
21.12.2017
11:35:23
ты же на карбоне :)

Artem
21.12.2017
11:37:01
ну раз карбон юзает storage-schemas.conf то это одно и тоже же

Sergey
21.12.2017
11:37:24
и он секундные метрики не сохраняет?

Artem
21.12.2017
11:41:39
может сохраняет, но выдает не по секундно, а поминутно
короче, проблема что графики рисуются раз в 1 минуту
то есть по логике, если я запросил график он должен показаться от 01 минуты до 03, но показывается он от 01 до 02, так как третий минуты еще нет.
реньше он выдавал посекундно то есть запросив от 01 до 03 и получал от 01 до 02 + прошедшие секунды

Konstantin
21.12.2017
11:41:50
парни, привет. подскажите как в прометее правильно сделать relabel чтобы убрать :port из instance, чтобы осталось только одно имя хоста
цель - чтобы графана нормально имена хостов показывала, без порта

Google

Единорожа
21.12.2017
11:43:51
В графане при помощи template vars вытягивать
https://grafana.com/dashboards/1860 вот в этом дашборде рабочий пример есть

Sergey
21.12.2017
11:45:46

Алексей
21.12.2017
11:46:17

Konstantin
21.12.2017
11:46:30
ок, спасибо. я понял.

Единорожа
21.12.2017
11:46:37

Алексей
21.12.2017
11:46:49

Artem
21.12.2017
11:46:53

Sergey
21.12.2017
11:47:28
по умолчанию если там пусто то 60 сек кеширование самой графаной

Alexey
21.12.2017
11:49:57

Artem
21.12.2017
11:50:33

Artem
21.12.2017
11:50:50
ага, датасурс же новый

Alexey
21.12.2017
11:51:14

Artem
21.12.2017
11:51:55
cache:
# Type of caching. Valid: "mem", "memcache", "none"
type: "mem"
# Cache limit in megabytes
size_mb: 0
# Only used by memcache type of cache. List of memcache servers.
memcachedServers:
- "127.0.0.1:1234"
- "127.0.0.2:1235"
В carbonapi

Sergey
21.12.2017
11:52:12
в каждом компоненте этого стека можно с кешами играться

Artem
21.12.2017
11:52:20

Sergey
21.12.2017
11:52:36
я просто тоже на это натыкался :)

Artem
21.12.2017
11:52:55
плавали, знаем за 300 ©

Alexey
21.12.2017
11:53:35
всегда можно запросить json из carbonapi/render?target=foo.bar&format=json&noCache=1

Google

Artem
21.12.2017
11:53:44

Sergey
21.12.2017
11:53:49
если у тебя дофига пользователей графаны то этой штукой можно чуть облегчить жизнь бекенда
особенно на графиках с медленными метриками

Artem
21.12.2017
11:54:12
та не, 3 колеки

Sergey
21.12.2017
11:54:22
ну я про то зачем это сделали

Artem
21.12.2017
11:54:38
ага, оч круто, на самом деле
graphite:
# Host:port where to send internal metrics
# Empty = disabled
host: ""
interval: "5s"
prefix: "carbon.api"
а эта фишка из carbonapi - типа сама свои метрики слать умеет?

Sergey
21.12.2017
12:00:12
та
и графана тоже :)

Admin
ERROR: S client not available

Artem
21.12.2017
12:07:30
можно в рекурсию впасть ?

Sergey
21.12.2017
12:10:59
не... спасают префиксы :)

yuyu
21.12.2017
12:36:06
А кто нибудь пробовал живьём https://facette.io/ ?
По описанию - так аля графана, только в профильи вроде как RRD из коробки умеет. В остальном пока жидковато с плагинами и датасорсами.
Непонятно зачем каждый свой велосипед хочет...

Sergey
21.12.2017
12:37:10
потому что могут
тут вот в соседний чат человек сегодня (вроде) приходил с задачей запилить полный стек мониторинга (лайтовенький такой)... при этом о том что есть уже вагон готовых велосипедов он в курсе... но как они работают - нет... такой классический разработчик :)

Paul
21.12.2017
12:41:10

Andrey
21.12.2017
12:43:02
нуу... оно похоже совсем тупенькое, в демке даже пары y-осей нет, что графана всего пару их может и то её тот ещё родовой косяк, но меньше то уж совсем свинство

Paul
21.12.2017
12:45:17
мы точно про двухмерное пространство говорим?

Sergey
21.12.2017
12:45:39
лехко... даже плагин был в графане :)

Google

Sergey
21.12.2017
12:45:50
он прорывал пространство и время
так то коммент был что все умеют 2Y а эта новая штука только 1

Andrey
21.12.2017
12:48:28
ну как отобразить более 2-х это не однозначный вопрос, но не разрешимый, всякие математики, статистики и экономисты, чего только не творят

Sergey
21.12.2017
12:49:04
хотя про плагин я немножко приврал - там просто 3д визуализация запилена была

Aleksandr
21.12.2017
12:49:09
Товарищи, подскажите где графана хранит настройки дашбордов?

Sergey
21.12.2017
12:49:17
в базе
по умолчанию склайт

Andrey
21.12.2017
12:49:35
нно таска кажется открыта, чуть ли не с начала

Aleksandr
21.12.2017
12:50:58

Sergey
21.12.2017
12:53:41
спасибо, поищу
если в grafana.ini дашь ей настройки "нормальной" БД - там будет хранить

Aleksandr
21.12.2017
12:54:39
у меня это все дело в докере (взял отсюда - https://github.com/kamon-io/docker-grafana-graphite) и вот стал вопрос в бэкапе всего этого

Алексей
21.12.2017
13:07:50
;)

Alexander
21.12.2017
13:32:28

Andrey
21.12.2017
14:07:22
https://github.com/grafana/grafana/issues/736 причина закрытия конечно огонь, и чего больше ни одной пооткрытой не осталось, дикость

Alexander
21.12.2017
14:16:06
Я, например, не очень понимаю, как можно адекватно сделать более 2х осей, чтобы их можно было прочитать.

Andrey
21.12.2017
14:18:25
это конечно отдельный вопрос, но тупо закрывать поэтому задачу, ну как то...

Paul
21.12.2017
14:19:21

Alexander
21.12.2017
14:20:08

Andrey
21.12.2017
14:20:55
https://www.google.ru/search?q=multi+y+axis+matlab для примера, юзабельная вещь

Alexander
21.12.2017
14:23:32
Я что-то пока только 2 оси максимум вижу

Sergey
21.12.2017
14:24:31
там 2 х и две y

Andrey
21.12.2017
14:24:44
https://www.mathworks.com/matlabcentral/fileexchange/4425-ploty4-m?requestedDomain=www.mathworks.com