Назад | Перейти на главную страницу

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

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

Я хотел бы иметь сценарий SSH, который будет сканировать все файлы журналов всех доменов и показывать мне, какой объект (изображение, сценарий php и т. Д.) Получает много вызовов.

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

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

Это можно сделать?

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

Фрагмент, в котором вы запросили сценарий для «... подсчета вызовов в каждом /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

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

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

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

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

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

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

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