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

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

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

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

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

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

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

3 ответа

Бит, где вы просили скрипт "... посчитать вызовы в каждом /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 Server.

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

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

Другие вопросы по тегам