Использование SSH для поиска доступа к проблемному скрипту в журналах нескольких доменов

Использование SSH для поиска доступа к проблемному скрипту в журналах нескольких доменов

Я запускаю несколько (~20) сайтов на Dreamhost VPS. Недавно я превысил выделение памяти для VPS и хочу найти проблему.

Мне бы хотелось иметь скрипт SSH, который будет сканировать все файлы журналов всех доменов и показывать, какой объект (изображение, PHP-скрипт и т. д.) получает больше всего вызовов.

Он подсчитает вызовы в каждом /logs/*/http/access.log, выполнит сортировку по убыванию и покажет мне 10 лучших по доменам.

Но я не знаю, как это сделать.

Можно ли это сделать?

Может ли кто-нибудь предложить скрипт, который это сделает?

решение1

Часть, в которой вы просили скрипт для «...подсчета вызовов в каждом /logs/*/http/access.log, выполнения сортировки по убыванию и отображения 10 лучших по доменам», можно выполнить с помощью этого:

grep -o " /[^ ]*" /logs/*/http/access.log | sort | uniq -c | sort -rn | head

Но вы можете получить ту же информацию из AWStats или Google Analytics. Это на самом деле просто список всех URL-адресов, агрегированных и отсортированных по количеству обращений к каждому из них.

Тот же шаблон команд Unix можно использовать для объединения ошибок PHP и ошибок Apache, что может быть более полезным в вашей конкретной ситуации. Например, следующее:

grep -o " PHP.*" /logs/*/php/error.log | sort | uniq -c | sort -rn | head

Найду все ошибки PHP из вашего журнала ошибок PHP (я догадался, где вы его храните) и перечислю 10 наиболее частых из них.

Еще один полезный совет:

grep -o " PHP Fatal error: Allowed memory size.*" /logs/*/php/error.log | sed 's/tried to allocate [0-9]* bytes/tried to allocate N bytes/' | sort | uniq -c | sort -rn | head

Которая найдет все ваши ошибки нехватки памяти и сгруппирует их вместе.

решение2

Вместо того, чтобы использовать этот подход, я бы рекомендовал вам рассмотреть возможность настройки централизованного сервера журналирования. У вас есть несколько вариантов для этого, начиная от старого хранилища на основе файлов и заканчивая более веб-инструментами анализа, которые сохраняют журналы в базе данных и позволяют вам выполнять поиск по ним, создавать диаграммы/графики и т. д.

Вот ссылка на замечательный технический документ от Cisco Systems, который вам поможет:

Создание масштабируемых решений по управлению системным журналом

решение3

Вместо этого сложного ручного решения я бы рекомендовал вам использовать такой инструмент, какСплунцСервер.

Splunk на самом деле является потрясающим анализатором журналов, в котором вы можете анализировать журналы любым удобным для вас способом, даже с оповещениями.

Splunk собирает, индексирует и использует огромные объемы ценных машинных данных, генерируемых вашей сложной ИТ-инфраструктурой, будь то физическая, виртуальная или облачная.

Связанный контент