SSH를 사용하여 여러 도메인의 로그에서 문제가 있는 스크립트에 대한 액세스 찾기

SSH를 사용하여 여러 도메인의 로그에서 문제가 있는 스크립트에 대한 액세스 찾기

저는 Dreamhost VPS에서 여러(~20)개의 사이트를 운영하고 있습니다. 최근에 VPS에 대한 메모리 할당을 최대화했는데 문제를 찾고 싶습니다.

나는 모든 도메인의 모든 로그 파일을 스캔하고 어떤 개체(이미지, PHP 스크립트 등)가 많은 호출을 받는지 보여주는 SSH 스크립트를 갖고 싶습니다.

각 /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에 액세스한 횟수를 기준으로 집계 및 정렬된 모든 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의 훌륭한 백서 링크입니다.

확장 가능한 Syslog 관리 솔루션 구축

답변3

이 수동적인 까다로운 솔루션 대신 다음과 같은 도구를 사용하는 것이 좋습니다.스플렁크섬기는 사람.

Splunk는 실제로 경고가 있는 경우에도 원하는 방식으로 로그를 분석할 수 있는 놀라운 로그 분석입니다.

Splunk는 물리적, 가상 또는 클라우드 등 복잡한 IT 인프라에서 생성된 귀중한 머신 데이터의 막대한 양을 수집, 색인화 및 활용합니다.

관련 정보