Какие данные умеет собирать nginx которые могут быть полезны с точки зрения маркетинга?
Вот такой вопрос. Что можно собирать на уровне nginx, что может пригодится для собственоой аналитики? У меня вообще бэкенд на Node.js, но мне кажется некоторые вещи просто эффективнее делать конечным веб-сервером и не нагружать Node.js приложение еще и этой задачей.
Конкретный юзкейс, ну например для идентификации пользователей. Юзер агент, Referer, может еще что-то можно? Ну т.е. речь не о данных, которые можно собрать на клиенте исполнив там JS, а именно то что "видит" nginx.
Вот например, IP адрес как определить? В каком формате вообще хранятся нужные мне логи в nginx (в гугле нахожу только описание логов ошибок и тд)? Как потом отдать это все в понятном виде моему фронт-енду?
Многовато вопросов получилось, буду благодарен за любые наводки.
wufapexef, дорогой пользователь, настоятельно рекомендуем еще раз обратить самое пристальное внимание на п. 3.1 регламента работы сервиса (и, в особенности, на его последний абзац).
В противном случае, ваши вопросы будут удаляться по причине тег-спама, а систематические нарушения приведут к блокировке учетной записи.
chromimon, спасибо, а вот эти все Splunk, ElasticSearch - это все строго облачное? Как-то не хочется заливать свои логи на чужие серверы. И что там с расценками, анвскидку? Спасибо.
wufapexef, Splunk облачное решение + ПО, которое вы можете поставить себе.
ElasticSearch - ПО, которые вы ставите себе. Хотя наверняка есть облака, которые как услугу предполагают.
Вполне достаточно будет даже не ElasticSearch, а SphinxSearch или его форк Мантикора.
Любые доступные в секции http переменные (от Апача с переводом на синтаксис nginx + свои), можно ещё прикрутить модули и lua-скрипты. Передавать можно через proxy_set_header X-Custom-Header-Name $foo.
А как потом визуализировать все эти логи? Какие есть инструменты, способы, решения? ВОт нагуглил Elasticsearch, Kibana, но они вроде как платные (и выглядит все как-то мудренно)
wufapexef, Если не заметили, в моём ответе слово "лог" отсутствует, хотя можно метрики собирать и через них.
Наиболее распространнёный способ визуализации - Elasticsearch + Kibana + iframe с нужным графиком. Лицензия Elasticsearch
Все что не в теле запроса, видится из nginx. Т.е. считай все, что должен видеть веб-сервер.
Можно писать хоть конкретные заголовки в логи(гибко настраивается), вопрос лишь в нагрузке на диски.
А маркетинг это та еще бяка.
>Вот например, IP адрес как определить?
remote_addr
>В каком формате вообще хранятся нужные мне логи в nginx (в гугле нахожу только описание логов ошибок и тд)? Как потом отдать это все в понятном виде моему фронт-енду?
В общем случае в любом. https://nginx.ru/ru/docs/http/ngx_http_log_module.html
А какие self-hosted решения есть для последующего мониторинга этих логов в режиме реального времени есть (в идеале - передавать данные для графиков для моей админки),
wufapexef, для мониторинга в риалтайме есть zabbix, он и графики может строить и заодно остальные параметры машины мониторить, но это не самая простая в настройке вещь.
Можете посмотреть в сторону Munin. Но и то и то вещь в себе.
Если хотите сами все обрабатывать, принимая данные, то надо искать среди nginx модулей, например nginx-statsd или pinba.
Но так как сам ими не пользуюсь, то не могу посоветовать конкретный.
Также сборка\подключение это отдельный процесс, хоть и расписанный в интернетах и облегченный динамическими модулями.
Я бы рекомендовал подходить не с точки зрения "что может пригодиться", а сначала точно определиться, что именно потребуется для метрик.
Например, если у Вас интернет-магазин, то управлять в нём нужно валовыми продажами и прибылью.
Продажи в свою очередь зависят от того как клиенты проходят т.н. "воронку продажи", т.е. шаги на сайте, ведущие к покупке.
Видя сколько клиентов отваливается на каком шаге Вы сможете придумать как поправить показатели этого шага.
Если смотреть с этой точки зрения, то Вам в первую очередь нужно собирать идентификацию клиентов + их движение по шагам воронки.
Вот и подумайте какие данные для этого нужны.