
Алексей
17.07.2017
12:00:28
ага.
как zvercd

Vladimir
17.07.2017
12:01:04
Zver nginx

Aleksandr
17.07.2017
12:04:20

Google

Алексей
17.07.2017
12:04:51
ну да да. я как раз про это вот всё
поэтому этот вот nginx-lua-prometheus очень ограничено годен

Aleksandr
17.07.2017
12:05:34
в общем надо сто раз подумать прежде чем тащить это в прод, нужно очень веские основания иметь

ganskiy
17.07.2017
12:06:29

Алексей
17.07.2017
12:07:48
:))))))))

ganskiy
17.07.2017
12:07:55
Там есть другой способ, через лог файлы

Evgeny
17.07.2017
12:08:01
А есть какой нибудь динамический модуль для nginx чтобы мониторить http статусы (без пересборки )?

Alexander
17.07.2017
12:08:17

ganskiy
17.07.2017
12:08:37
Вы через графану отображать хотите или Graph?

Alexander
17.07.2017
12:08:54

Алексей
17.07.2017
12:08:55

Evgeny
17.07.2017
12:09:11
))

Google

ganskiy
17.07.2017
12:09:34
Че такое?)
Не вкуриваю

Wom
17.07.2017
12:09:44
а на nginScript ничего нет?

Алексей
17.07.2017
12:10:16
Не вкуриваю
@alexanderzobnin просто сам из графаны. один из разрабов

ganskiy
17.07.2017
12:10:59
Ааа) Ну тогда он должен хавать эту тему лучше нас вродь
Тоже сейчас прикручиваю сижу, newbie

Alexander
17.07.2017
12:12:12
Я с прометеем не слишком сильно знаком, поэтому сейчас разбираюсь с ним.

Wom
17.07.2017
12:17:35
вот кстати, никто этим скриптом расширенную статистику не делал?
https://nginx.org/en/docs/http/ngx_http_js_module.html

Alexander
17.07.2017
12:18:12

ganskiy
17.07.2017
12:18:51

Wom
17.07.2017
12:24:14
правильнее, конечно, не логи читать, а прикинуться syslogd

ganskiy
17.07.2017
12:25:56

Wom
17.07.2017
12:26:24
ну или вот https://gist.github.com/kamermans/4fd55912fd6333451f8a6cae7826db6e

Vladimir
17.07.2017
12:28:41
еще

Wom
17.07.2017
12:29:23
ну да. я к тому, что читать логи как бы оверхед

Vladimir
17.07.2017
12:32:34
редко принципиальный

Edouard
17.07.2017
12:37:10

Алексей
17.07.2017
12:38:46
{% if nginx_json_logging == "1" %}
log_format noc_format '{ "@timestamp": "$time_iso8601", '
'"@fields": { '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"request_time": "$request_time", '
'"upstream_addr": "$upstream_addr",'
'"upstream_response_time": "$upstream_response_time", '
'"http_user_agent": "$http_user_agent" } }';
{% else %}

Google

Wom
17.07.2017
12:39:44

Vladimir
17.07.2017
12:40:09
как выше

Paul
17.07.2017
12:49:43

Vladimir
17.07.2017
12:53:53
а почему "значительно хуже чем луа"?

Paul
17.07.2017
12:54:50
потому, что в отличае от lua (модуль с которым идет в комплекте) - этот модуль надо собирать.
то есть держать локальный репо. Для кого-то это может быть проблемой, если инфраструктура маленькая

Vladimir
17.07.2017
13:11:53

Roman
17.07.2017
13:12:35
{% if nginx_json_logging == "1" %}
log_format noc_format '{ "@timestamp": "$time_iso8601", '
'"@fields": { '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"request_time": "$request_time", '
'"upstream_addr": "$upstream_addr",'
'"upstream_response_time": "$upstream_response_time", '
'"http_user_agent": "$http_user_agent" } }';
{% else %}
nginx некоторые символы эскейпит несовместимым с json образом. например вот такой курл сломает лог
curl -A "user agent with \t tab" http://127.0.0.1/

Sergey
17.07.2017
13:18:38

Roman
17.07.2017
13:27:50

Алексей
17.07.2017
13:44:07
тоесть надо так вот да ?
log_format noc_format escape=json '{ "@timestamp": "$time_iso8601", '
'"@fields": { '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"request_time": "$request_time", '
'"upstream_addr": "$upstream_addr",'
'"upstream_response_time": "$upstream_response_time", '
'"http_user_agent": "$http_user_agent" } }';


Sergey
17.07.2017
14:11:43
тоесть надо так вот да ?
log_format noc_format escape=json '{ "@timestamp": "$time_iso8601", '
'"@fields": { '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"request_time": "$request_time", '
'"upstream_addr": "$upstream_addr",'
'"upstream_response_time": "$upstream_response_time", '
'"http_user_agent": "$http_user_agent" } }';
типа таво. например тут: https://github.com/elastic/examples/tree/master/Common%20Data%20Formats/nginx_json_logs есть примеры.
правда эти злодеи не очень обновляют документацию
и про escape=json упомянули, а в примеры конфигов не добавили ?


ptchol
17.07.2017
15:11:02
@Civiloid Привет ! А не подскажешь как в графите сделать
host.cs*.load.load.longterm / host.cs*.cpu.count? mapred поидее не подходит потому что длинна серий разная и как то не выходит у меня.

Vladimir
17.07.2017
15:11:42
длина разная?

ptchol
17.07.2017
15:13:16
Нет

Anton
17.07.2017
15:23:18

Alexey
17.07.2017
15:32:41
Не, мониторить через логи -- дело неблагодарное

Google

Alexey
17.07.2017
15:33:47
Лучше лить в syslog и парсить по табам чтобы не ебаться с гроком

Anton
17.07.2017
15:34:45

Alexey
17.07.2017
15:36:35
Да, у нас все статы на луа а логи идут в hive для oltp

Anton
17.07.2017
15:43:26

Alexey
17.07.2017
15:44:11
А других масштабируемых вариантов нету особо

Alexander
17.07.2017
17:03:08
Мне nginx на демо-сайте замониторить, я думаю, пока на логах остановлюсь.

Wom
17.07.2017
17:03:54
у тебя нагрузки нет - нормально

Andrey
17.07.2017
17:12:57
да, nginx в плане статистики, печальное зрелище, хотя какие то сторонние костыли, вроде кое что обещают, но что то попробовать всё тоже никак

Admin
ERROR: S client not available

Aleksandr
17.07.2017
17:14:01

Andrey
17.07.2017
17:14:19
охуенное предложение

Wom
17.07.2017
17:16:26
я же выше кидал ссыль на модуль

Aleksandr
17.07.2017
17:16:43
охуенное предложение
ну там в коммьюнити и так пробрасывают со временем то что раньше было платным и очень нужным, так что тут не сетовать, а благодарить уместнее

Wom
17.07.2017
17:16:56

Vladimir
17.07.2017
17:20:35
Нет
А нужно per node? Хм, я не помню но вроде банальный divideSeries мог, ну или после простой доработки мог

Алексей
17.07.2017
17:21:21
Можно даже в некоторых случаях traefik
Но аккуратно

ptchol
17.07.2017
17:39:46

Andor
17.07.2017
17:53:54

Alexander
17.07.2017
17:55:33

Google

Anton
17.07.2017
18:27:10

Andor
17.07.2017
20:05:43

Tkorochka
18.07.2017
04:55:35

Andor
18.07.2017
06:30:06
о, про него как раз упоминали
либо покупаешь nginx-plus, общаешься с саппортом и потом всё равно собираешь свой nginx

Alexey
18.07.2017
07:58:42
Имхо, производительность луа не важна до определённого момента. Если у вас меньше 100к рпс и метрики вы снимаете раз в минуту, то просадку от использования луа вы не заметите даже
Зато у луа очень большая гибкость -- метрики можно делать на основе любого стэйта внутри nginx

Andor
18.07.2017
08:03:29
можно конечно
но лучше сразу не делать говно
а так я конечно согласен, что надо проверять чо у вас ик ак
и если бизнес готов идти на замедление запросов во славу метрик, то почему бы и не

Dmitry
18.07.2017
08:06:38
А с логов собирать сильно хуже?

Vladimir
18.07.2017
08:08:58
чтобы это замедление померить

Andor
18.07.2017
08:09:06
не хуже, просто другое
и сравнить с vts сразу
любое снятие метрик замедлит обработку запросов

Vladimir
18.07.2017
08:09:55
я просто вангую что придется мерять время ответа в наносекундах чтобы найти разницу