
Sergey
07.08.2017
13:55:27

Alex
07.08.2017
13:56:22
с каким это ещё протрояненным сайтом?

Sergey
07.08.2017
14:38:45
ну вот точно не было никакого флэша никогда

Alexander
07.08.2017
19:27:46
Флэш на графане. Забавно

Google

Alexander
07.08.2017
19:31:47
А кто прометея пользует? Там есть типа визарда для ямла?
Или все руками?

Алексей
07.08.2017
19:38:39
там столько делов что визард будет сложнее

Alexander
07.08.2017
19:44:25

Andor
07.08.2017
19:44:32
Какой ещё визард? Бери да генерируй конфиг своим любимым языком
Я генерю пупетом

Alexander
07.08.2017
19:46:32
Я генерю пупетом
Нет у нас паппета насколько я знаю. По артефактам на серваке кто-то баловался ансибл

Paul
07.08.2017
20:44:56
главное - понять концепцию

Alexander
07.08.2017
20:47:29

Paul
07.08.2017
20:48:09
тут еще проще. Есть текстовый файл и все сразу понятно. Единственное, что было для меня неочевидно - правила алертинга (там документация сильно хромает)

Alexander
07.08.2017
20:51:57

Google

Paul
07.08.2017
20:53:42
у прометея на сайте есть тулза для отладки
она весьма кривая, но лучше, чем ничего

Alexander
07.08.2017
20:54:41
Причем оповещалки по сложным диапазонам и с проверкой на предыдущий стейт метрики. В доках нехрена не нашел

.
07.08.2017
21:00:37
Кто-нибудь с питона отправлял кастомные метрики?
Создаю вот так
metric = prometheus_client.Gauge(
'ansible_manager_template_last_task_success_{}'.format(template.pk),
'Status last task',
)
metric.set(metric_value)
prometheus_client.generate_latest()При первом подключении все ок, а вот при последующих ловлю такую ошибку
ValueError: Timeseries already present in CollectorRegistry: ansible_manager_template_last_task_success_1

Alexander
07.08.2017
21:10:22

.
07.08.2017
21:15:27

Alexander
07.08.2017
21:17:45
Не угадал. Осталось две попытки )

Виталий
08.08.2017
06:58:56
https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#output-configuration-examples можно телеграфом в разные базы писать с разными rp

Andor
08.08.2017
07:31:18

.
08.08.2017
07:51:49

Andor
08.08.2017
07:55:13
Как это?

.
08.08.2017
08:00:47
Я метрики отправляю по состоянию моих объектов в бд, в теории каждый раз оно может меняться, на практике очевидно, это будет происходить не столь часто. По запросу я создавал метрики, вносил нужные значения и регистрировал их. Я предполагаю, что на самом деле я не так отправляю метрики, как нужно. Помимо моего создания метрик в цикле
registry = prometheus_client.CollectorRegistry()
metric = prometheus_client.Gauge(
'ansible_manager_template_last_task_success_{}'.format(template.pk),
'Status last task',
registry=registry
)
metric.set(metric_value)Я еще юзаю django-prometheus, который тоже отправляет свои метрики
https://github.com/korfuri/django-prometheus
Указание registry это по факту и есть отправка?

Евгений
08.08.2017
08:05:21
@Andorka в чём суть проблемы? Ты пишешь свой экспортёр на питоне для какой-то БД, правильно?

Andor
08.08.2017
08:05:40
не я

Евгений
08.08.2017
08:05:57
Ооокеееей

.
08.08.2017
08:06:16
Проблема в том, что мой способ не работает)

Евгений
08.08.2017
08:06:48
Я пишу
Гениально сделать ник '.'
Чтобы ничего непонятно было
Я пишу
Так ну хорошо, ты понимаешь как работает экспортёр?

Google

Евгений
08.08.2017
08:07:35
Принцип

.
08.08.2017
08:07:57

Евгений
08.08.2017
08:09:00
Стартует http сервер, в нём любое кол-во метрики, могут появляться новые, значение обновляется опять таки асинхронно (только когда тебе надо у конкретной)

Zhenia
08.08.2017
08:09:09
https://github.com/prometheus/client_python
вот либа готовая

Евгений
08.08.2017
08:09:47
Да, ты сложно начал решать, возьми выше простой пример и быстро поймёшь о чём речь.

.
08.08.2017
08:11:14
Окей, щас попробую без django_prometheus запилить

Евгений
08.08.2017
08:11:45
'Three Step Demo'
Тебе должно хватить https://github.com/prometheus/client_python/blob/master/README.md, экспортёр за 3 минуты короче и пихай туда запросы к БД свои и генерацию новых метрик

Alexander
08.08.2017
08:17:55

Евгений
08.08.2017
08:19:00

.
08.08.2017
08:19:30

Евгений
08.08.2017
08:19:59

Alexander
08.08.2017
08:20:37

Евгений
08.08.2017
08:21:22
Экспортёру пофиг, это совсем немного

Alexander
08.08.2017
08:23:32
Надо с учетом масштабирования. Систем чуть ли не каждый день подваливает.

Евгений
08.08.2017
08:24:48

Google

Alexander
08.08.2017
08:26:13
Тянуть все из бд, не ахти вариант. Я бы по возможности это до минимума урезал

.
08.08.2017
09:23:05

Евгений
08.08.2017
09:24:15

.
08.08.2017
09:24:55
Метрики должен возвращать вроде

Евгений
08.08.2017
09:25:13
Ключ - значение?

.
08.08.2017
09:26:32
Я к сожалению под капот client_python не заглядывал, так что не знаю.
Я имел в виду, что когда мы обращаемся к нашему экспортеру, он возвращает все наши метрики.

Admin
ERROR: S client not available

.
08.08.2017
09:27:26
https://github.com/prometheus/client_python
Если смотреть на пример отсюда, мы при запросе знаем, что существует одна метрика, в моем же случае при запросе мы не знаем сколько метрик существует

Евгений
08.08.2017
09:27:38
Я про запрос к бд
Что возвращает запрос к БД?

.
08.08.2017
09:28:33
Я вытаскиваю из бд объект, провожу с ним некоторые манипуляции и на выходе получаю 1 или 0

Евгений
08.08.2017
09:28:49
Это ключ значение или нет?

.
08.08.2017
09:29:27
нет

Евгений
08.08.2017
09:30:11
Как ты в скрипте собираешься создать набор ключ - значение в первый проход?
Давай ещё проще, без экспортёра, ты можешь скриптом сделать текстовый файл, где будет строчками нужные тебе
Ключ - значение
?

.
08.08.2017
09:31:19
Да

Евгений
08.08.2017
09:32:04
А в виде цикла можешь

.
08.08.2017
09:32:18
в виде цикла это и происходит

Евгений
08.08.2017
09:34:06
Тип метрик - counter?

.
08.08.2017
09:35:15
Тип метрики Gauge, но вполне возможно это моя ошибка.
По факту я буду возвращать либо 0 либо 1

Google

Евгений
08.08.2017
09:36:29
Ну вот смотри, если текстовый файл, каждый ключ в цикле, у тебя
File append (ключ значение)
Так?
С экспортёром это будет
gauge set(значение)
Gauge создаёшь, если такой ещё не создан (новая метрика)
Всё.

.
08.08.2017
09:38:22
А если создан? И как понять, что он создан?

Евгений
08.08.2017
09:38:50
В лоб можно
Пробуй сделать set, если не получается, создать и сделать set

.
08.08.2017
09:47:55
Пробуй сделать set, если не получается, создать и сделать set
я видимо не понимаю какого-то ключевого, очевидного момента. Вот у меня нет никаких метрик, но у меня есть файл заполненный моим значениями (имя метрики и её значение предположим что в конце значения у нас всегда перевод строки)
Теперь я вычитываю этот файл итерируясь по каждой строчке. Теперь в цикле мне нужно понять, существует такая метрика уже или нет. Узнаем мы это применяя set,
1)Никакой метрики не существует, т.е. непонятно к чему мы будем пытаться применить сет
2)Даже если какая-то метрика существует мне нужно обновить там значение, и вроде как это я тоже должен делать через set.
И в моей голове все опять сводится к тому, что мы в цикле создаем Gauge


Евгений
08.08.2017
09:49:02
Напиши код, который переписывает файл каждый раз полностью
Удаляет старый, если так удобнее
Потом
Ну вот смотри, если текстовый файл, каждый ключ в цикле, у тебя
File append (ключ значение)
Так?
С экспортёром это будет
gauge set(значение)
Gauge создаёшь, если такой ещё не создан (новая метрика)
Всё.
В лоб можно
Пробуй сделать set, если не получается, создать и сделать set
1) создаёшь gauge, я уже сказал как, в цикле через эксепшен к set
2) да


Alex
08.08.2017
11:01:01
# du -sh /var/log/go-carbon/
29G /var/log/go-carbon/
Это за 2 дня. Каждый запрос к карбонсерверу логируется с уровнем INFO
@Civiloid кто это у нас такой фанат логирования?

Vladimir
08.08.2017
11:02:15