Я запускаю несколько (~ 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 собирает, индексирует и использует огромные объемы ценных машинных данных, создаваемых вашей сложной ИТ-инфраструктурой, будь то физическая, виртуальная или облачная.