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