Задать вопрос
Denisov80
@Denisov80
Юный Программист

Чем собирать статистику запросов от клиентов на сервере?

Есть небольшой сервис NGINX + PHP + MSQL,
требуется вести статистику запросов от клиента, с дальнейшим изучением
и возможностью Сортировки данных по ip адресу, времени и строке запроса.
Name => { IP , Time, Request}

Не могу сообразить что использовать для этой цели:
Redis, MySql, Ассоциативный многомерный массив ?

Изначально думал Redis , но с ним пока не знаком,
имеется ли возможность вывода и сортировки данных по ключу Name?
MySql наверное нет, так как добавляются новые строки(100-300 за сутки) для каждого Name и это наверное "Из пушки по воробьям".

Строки постоянно будут наполняться и данных будет много, логи сервера не подходят для этого.
example
689c9b1bad14c675925013.png
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 6
@Everything_is_bad
MySql наверное нет, так как добавляются новые строки(100-300 за сутки) для каждого Name и это наверное "Из пушки по воробьям".
это ты сейчас взял и придумал, всё ок для твоих объемов c mysql для этого, используй его.

ЗЫ хотя тут и текстовые логи тоже без проблем подходят.
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
> 100-300 за сутки для каждого. логи сервера не подходят для этого.

довольно забавное заблуждение.
Редис вам понадобится при нагрузках 100-300 в секунду. Для всего, что меньше, идеально подойдут текстовые логи. А вы заодно, освоите один из самых базовых навыков для работы с сервером.

Логи пишете в файл. чтобы получить лог по определенному name пишете в консоли
grep name log.txt
Ну или при желании читаете в пхп и выводите в красивой табличке
Ну или совсем лень, то можно писать в БД и выбирать запросами.
Ответ написан
Комментировать
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Берёте любую систему централизованного логирования (например, Graylog) - и отправляете в него логи веб-сервера. Получаете ровно то, что хотите - возможность отображения и агрегации данных по определённым полям.

Ассоциативный многомерный массив, кек...
Ответ написан
Комментировать
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
В гугле что-то типа "insert nginx logs to mysql" + nginx custom log с нужными столбцами
Ответ написан
@AlexVWill
Обычный текстовый лог (можно в JSON), который потом читать lnav визуально, а парсить тем инструментом, что больше подходит для этой задачи...
Ответ написан
Комментировать
@Hardoman
DevOps
Никогда, никогда не пишите логи в базу напрямую. В первую очередь из-за скорости, во-вторых, это синхронное действие процесса и оно должно выполняться всегда, а при недоступности базы повесит процесс в wait.
Если надо парсить большой объем логов (не ваш случай), то их отдельно можно стримить куда угодно, хоть в кафку, хоть в elasticsearch специально предназначенными для этого сервиса и типа vector.
Ротировать локальные логи logrotate'ом
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы