Apache 웹 서버에서 현재 연결을 어떻게 볼 수 있습니까?


37

Webmin / Virtualmin의 도움으로 설정된 기본 LAMP에서 Apache를 사용하여 많은 가상 호스트를 호스팅하고 있습니다. 현재 연결을 모니터링 할 수있는 최상위 도구를 찾고 있습니다. 가상 호스팅 부분이 여기에 문제를 일으키는 것 같습니다. 내가 시도한 것은 다음과 같습니다.

  • netstat-연결을 볼 수 있지만 모두 기본 도메인을 사용하는 것처럼 표시됩니다 (예 :) mydomain.com:www.
  • iftop-나는 그것을 좋아하지만 netstat가상 호스트를 표시하지 않는 것과 비슷한 단점이 있습니다.
  • apachetop-모든 가상 호스트에 대한 정보를 표시하지 않는 것 같습니다. 별도의 사용자 정의 로그 파일에 로깅하고 있는데, 이것이 작동하지 않는 이유입니다.
  • ntop, darkstat, MRTG, bwm-ng, IPTraf- 중 하나가 작동하지 않습니다.

따라서 기본적으로의 현재 출력과 비슷한 것을 찾고 netstat있지만 요청의 가상 호스트를 포함하려면 다음과 같이하십시오 avirtualsite.com:www.


내가 아파치를 사용하고 - VirtualMin / Webmin은 함께 사용하기에 기본 램프 설치 - 난 그냥 발견 apachetop-하지만 damnit- 모든에만 모니터 내가 제공하는 파일 ... 서버 ...
피오트르 쿨라

답변:


35

Andrea Corbellini의 답변 은 사용중인 도구와 작동하지 않는 이유 및 가상 호스팅 작동 방식을 설명합니다. 다음은 Apache에서 수행하는 가장 간단한 방법입니다.

mod_status 당신을 도울 것입니다.

면책 조항 : Webmin 에서이 작업이 수행되는 방식을 알 수 없습니다. 베어 구성 파일을 사용하여 서버를 설정합니다. 다음은 단계에 대한 기본 개요입니다.

그것은이다 top-like 도구,하지만 웹 페이지로 표시. 여기에는 Apache에서 직접 쿼리 한 현재 상태가 나열되므로 로그 파일 구문 분석에 의존 apachetop하지 않습니다.

  1. 사용 mod_status:

    sudo a2enmod status
    
  2. 자신에게 액세스 권한을 부여하십시오.

    • 열고 /etc/apache2/mods-enabled/status.conf편집하십시오.
    • 설정 ExtendedStatusOn(옵션,하지만 더 awesomeness에 느린 조금)
    • 내에서 <Location /server-status>, 추가 와 라인에 IP 주소를 Allow지시. 예:

      Allow from 127.0.0.1 ::1 66.77.88.99
      
  3. Apache를 다시 시작하십시오.

    sudo service apache2 restart
    
  4. 브라우저에서 다음과 같은 도구를 사용하십시오. http://1.2.3.4/server-status

    스크린 샷 예제같습니다 .

  5. 계속 누르면 F5업데이트됩니다. 또는 멋진 브라우저 플러그인을 다운로드하여 업데이트하십시오!


Webmin

향후 방문자를위한 OP의 부록

Webmin에서 상태 모듈에 대한 기본 단계는 다음에서 찾을 수 있습니다.

  • 서버 -> Apache 웹 서버 -> Apache 모듈 구성
  • 상태 모듈을 선택하고 선택된 모듈 사용을 클릭하십시오.

여기에 이미지 설명을 입력하십시오


흥미롭지 만 100 개의 가상 웹 사이트가있는 경우 모든 웹 사이트에 대한 통계가 표시됩니까? 기본 웹 사이트를 사용하지 않기 때문에 /var/log/apache2/access.log에있는 coonection 로그가 비어 있기 때문에 각 웹 사이트에는 /log/access.log가 있습니다.
Piotr Kula

2
나는 지금 당신을 매우 좋아합니다. Gimme kiss : * +1
Piotr Kula

천재-그게 내가 필요한 것입니다. 그것은 지금 나에게 vhost를 보여주고있다! 백만 명 감사합니다! 나는 당신의 지식을 갚는 방법을 모른다!
Piotr Kula

진심으로! 나는이 상태 도구를 너무 좋아합니다! 덕분에 너무 많은 스크립트를 발견했습니다. 사이트를 패치, 업그레이드 및 수정하는 데 도움이되었습니다. 도와 주셔서 감사합니다. 모든 담당자를 알려주세요.
Piotr Kula

@ppumkin 제발 과장하지 마십시오. 이 작업을 위해 매우 기본적이고 일반적인 Apache 모듈입니다. 아파치에 대한 자존심이있는 책에서 언급 할 것입니다. 그래도 도움이 되었기 때문에 기쁩니다.
gertvdijk

15

당신이 시도하는 모든 도구는 당신에게 정답을 줄 수 없습니다. 연결이 이루어지면 요청한 정보가 손실되기 때문입니다.

웹 서버에 하나의 IP 주소 ( 1.2.3.4 )와 두 개의 호스트 이름 ( a.mydomain.comb.mydomain.com )이 있다고 가정 해 봅시다 .

a.mydomain.com 을 방문 할 때 자주 사용하는 웹 브라우저를 사용하면 어떻게됩니까 ?

  1. 브라우저는 DNS 서버에 a.mydomain.com에 해당하는 IP 주소를 묻습니다 .
  2. DNS 서버는 브라우저에게 주소가 1.2.3.4 임을 알려줍니다 .
  3. 웹 브라우저는 1.2.3.4에 연결됩니다 .

그래서 netstat& 공동. 1.2.3.4 로 들어오는 연결이 있다는 것을 알고 있어야 합니다 . IP 주소 대신 호스트 이름이 표시되는 이유는 IP 주소에 rDNS 레코드가 netstat있기 때문에 IP 대신 IP 주소 를 표시하는 것이 더 좋습니다. 시도 netstat -n하거나 rDNS 레코드를 제거하면 IP 주소가 표시됩니다.

그러나 그게 전부는 아닙니다. 연결에 사용 된 호스트 이름에 대한 정보가 손실되었다고 말했을 때 나는 완전히 옳지 않았습니다. TCP / IP 스택의 관점에서, 그 문장은 사실입니다. 그러나 HTTP 프로토콜의 관점에서 사물을 보면 사물이 다릅니다. 모든 HTTP 요청에는 Host:브라우저가 요청을 수행하는 데 사용한 호스트 이름이 포함 된 헤더가 있습니다.

간단히 말해 웹 서버의 로그 파일을 살펴 봐야합니다. 웹 서버는 HTTP 요청을 처리하는 서비스이므로 "원본"호스트 이름을 알고있는 유일한 서비스입니다.


1
+1 중요한 네트워킹 배경 이야기가 과소 평가되었습니다. 내 대답에 연결되어있어 이것도 공평한 가치가 있습니다!
gertvdijk

13

다른 방법은 입력하는 것입니다

tail -f /var/log/apache2/access.log

터미널에서


2
좋고 간단합니다. 꽤 똑바로 감사합니다!
Julian F. Weinert

내 cPanel 설치 (CentOS 시스템에서 우분투의 cPanel은 아마도 동일하다고 생각)에서 access.log모든 요청을 포함하지는 않습니다. 대신 /usr/local/apache/domlogs/가상 호스트 (SSL, 비 SSL 및 FTP 간 분리)의 요청을 확인하려고합니다. 경로는 Ubuntu cPanel에서 다를 수 있습니다.
Buttle Butkus

2
나는 이것을 구글에서 찾았다. 이 기술은 필요한 것을 제외하고 CentOS 7에서 작동합니다./var/log/httpd/access_log
mwfearnley

7

이 배쉬로 포트 80에 연결된 모든 IP를 확인할 수 있습니다

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

참고 : 다른 포트를 보려면 80을 변경하십시오.

산출:

 19 x.174.143.1
 13 x.175.135.1
  9 x.68.135.1
  8 x.144.87.1
  7 x.68.150.1
  6 x.92.4.1
  6 x.188.23.1
  5 x.190.164.1
  4 x.189.156.1


1

pid, user 및 command를 원할 경우 :

lsof  -i  tcp:443,80 | egrep 'PID|->' | sort -k9

0

대화 형으로 GoAccess 를 사용 하여 현재 방문자를 볼 수도 있습니다 . 이를 위해 Apache 액세스 로그를 구문 분석하고 사이트에 대한 많은 통계를 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.