아파치 웹 서버 부하 및 페이지 통계 모니터링 방법

이 기사에서는 Apache 웹 서버 부하와 요청을 mod_status 모듈을 사용하여 CentOS, RHEL, Fedora과 같은 Linux 배포판에서 모니터링하는 방법에 대해 알아볼 것입니다.

mod_status는 웹 브라우저를 통해 접근할 수 있는 Apache 모듈로, 웹 서버 부하 및 현재 httpd 연결을 모니터링하는 데 도움을 줍니다.

mod_status는 웹 서버의 현재 통계 정보가 포함된 일반 HTML 페이지를 표시합니다.

  • 들어오는 요청의 총수
  • 바이트의 총수 및 서버 수
  • 웹 서버의 CPU 사용량
  • 서버 부하
  • 서버 가동 시간
  • 총 트래픽
  • 대기 중인 작업자의 총수
  • 각각의 클라이언트를 가진 PID 및 기타 많은 정보

기본 Apache 프로젝트는 서버 통계 페이지를 일반 대중에게 공개했습니다. 바쁜 웹 사이트 상태 페이지의 데모를 보려면 다음 주소를 방문하십시오.

이 기사에서는 테스트 환경을 통해 mod_status에 대해 더 자세히 살펴보기 위해 일부 실제 예제와 스크린샷을 사용했습니다.

  1. 운영 체제 – CentOS 8/7
  2. 응용프로그램 – 아파치 웹 서버
  3. IP 주소 – 5.175.142.66
  4. 문서 루트 – /var/www/html
  5. 아파치 구성 파일 – /etc/httpd/conf/httpd.conf
  6. 기본 HTTP 포트 – 80 TCP
  7. 테스트 구성 설정 – httpd -t

이 자습서의 선행 조건은 이미 기본 아파치 서버를 설치하고 구성하는 방법을 알고 있어야합니다. 아파치를 설정하는 방법을 모르는 경우 다음 기사를 읽어보세요. 여러분의 고유한 아파치 웹 서버를 설정하는 데 도움이 될 것입니다.

  1. 리눅스에서 자체 웹 서버 및 웹 사이트 호스팅 생성

아파치에서 mod_status 활성화하는 방법

기본 아파치 설치에는 mod_status가 활성화되어 있습니다. 그렇지 않은 경우 아파치 구성 파일에서 활성화해야 합니다.

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf

mod_status”라는 단어를 찾거나 해당 라인을 찾을 때까지 계속 스크롤하세요.

#LoadModule status_module modules/mod_status.so

“LoadModule”의 처음에 ‘#‘ 문자가 보인다면 mod_status가 비활성화된 것입니다. mod_status를 활성화하려면 ‘#‘를 제거하세요.

LoadModule status_module modules/mod_status.so

mod_status 구성

이제 다시 “위치”라는 단어를 검색하거나 mod_status에 해당하는 섹션을 찾아보세요. 다음과 같이 보일 것입니다.

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

위의 섹션에서는 위치 지시문, SetHandler,디렉토리 제한에 대한 주석 처리된 줄을 필요에 따라 해제하십시오. 예를 들어, Order Allow, deny모두 허용과 같이 간단하게 유지합니다.

<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from all 
</Location>

참고: 위 구성은 기본 Apache 웹 사이트(단일 웹 사이트)의 기본 구성입니다. 하나 이상의 Apache 가상 호스트를 만든 경우 위 구성은 작동하지 않을 것입니다.

따라서 Apache에 구성한 도메인의 각 가상 호스트에 동일한 구성을 정의해야 합니다. 예를 들어 mod_status를 위한 가상 호스트 구성은 다음과 같습니다.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example.com
    ServerName example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from example.com 
</Location>
</VirtualHost>

Enable ExtendedStatus

ExtendedStatus” 설정은 CPU 사용률, 초당 요청, 총 트래픽과 같은 통계 페이지에 더 많은 정보를 추가합니다. 이를 활성화하려면 동일한 httpd.conf 파일을 편집하고 “Extended” 단어를 찾아 주석을 해제하고 ExtendedStatus 지시문에 대해 상태를 “On”으로 설정합니다.

# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

Apache 재시작

이제 Apache 서버 상태 페이지를 올바르게 활성화하고 구성했는지 확인하십시오. 또한 다음 명령을 사용하여 httpd.conf 구성에서 오류를 확인할 수 있습니다.

[root@tecmint ~]# httpd -t

Syntax OK

한 번에 OK 구문을 받으면 httpd 서비스를 다시 시작할 수 있습니다.

[root@tecmint ~]# service httpd restart
OR
[root@tecmint ~]# systemctl restart httpd
Stopping httpd:                                          [  OK  ]
Starting httpd:                                          [  OK  ]

모드 상태 페이지에 액세스

아파치 상태 페이지는 다음 URL을 통해 도메인 이름으로 ” /server-status “로 접근할 수 있습니다.

http://serveripaddress/server-status

OR

http://serev-hostname/server-status

확장된 상태가 활성화된 다음과 유사한 페이지를 볼 수 있습니다.ExtendedStatus.

Apache mod_status View

위의 스냅샷에서 HTML 인터페이스를 볼 수 있습니다. 이 인터페이스는 서버 가동 시간, 프로세스 ID와 해당 클라이언트, 접근하려는 페이지에 대한 모든 정보를 표시합니다.

또한 상태를 표시하는 데 사용된 모든 약어의 의미와 사용법을 보여줍니다. 이는 상황을 더 잘 이해하는 데 도움이 됩니다.

업데이트된 통계를 보기 위해 페이지를 매 5초마다 새로 고칠 수도 있습니다. 자동 새로 고침을 설정하려면 URL 끝에 ” ?refresh=N”을 추가하십시오. 여기서 N은 페이지를 새로 고칠 시간(초)으로 대체할 수 있습니다.

http://serveripaddress/server-status/?refresh=5
Apache mod_status Refresh

명령줄 상태 페이지 보기

특별한 명령줄 브라우저인 links 또는 lynx를 사용하여 명령줄 인터페이스에서 아파치 상태 페이지를 볼 수도 있습니다. 아래에 표시된 대로 기본 패키지 관리자 유틸리티인 yum을 사용하여 이를 설치할 수 있습니다.

# yum install links

OR

# yum install lynx

설치한 후 다음 명령을 사용하여 터미널에서 동일한 통계를 얻을 수 있습니다.

[root@tecmint ~]# links http://serveripaddress/server-status
OR
[root@tecmint ~]# lynx http://serveripaddress/server-status
OR
[root@tecmint ~]#  /etc/init.d/httpd fullstatus
                     Apache Server Status for localhost
   Server Version: Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3
   Server Built: Aug 13 2013 17:29:28

   --------------------------------------------------------------------------
   Current Time: Tuesday, 14-Jan-2014 04:34:13 EST
   Restart Time: Tuesday, 14-Jan-2014 00:33:05 EST
   Parent Server Generation: 0
   Server uptime: 4 hours 1 minute 7 seconds
   Total accesses: 2748 - Total Traffic: 9.6 MB
   CPU Usage: u.9 s1.06 cu0 cs0 - .0135% CPU load
   .19 requests/sec - 695 B/second - 3658 B/request
   1 requests currently being processed, 4 idle workers
 .__.__W...

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of a worker, "." Open slot with no current process

Srv PID     Acc    M CPU   SS  Req Conn Child Slot     Client        VHost             Request
0-0 -    0/0/428   . 0.30 5572 0   0.0  0.00  1.34 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
1-0 5606 0/639/639 _ 0.46 4    0   0.0  2.18  2.18 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
2-0 5607 0/603/603 _ 0.43 0    0   0.0  2.09  2.09 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
3-0 -    0/0/337   . 0.23 5573 0   0.0  0.00  1.09 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
4-0 5701 0/317/317 _ 0.23 9    0   0.0  1.21  1.21 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
5-0 5708 0/212/213 _ 0.15 6    0   0.0  0.85  0.85 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
6-0 5709 0/210/210 W 0.16 0    0   0.0  0.84  0.84 127.0.0.1      5.175.142.66 GET /server-status
                                                                               HTTP/1.1
7-0 -    0/0/1     . 0.00 5574 0   0.0  0.00  0.00 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0

   --------------------------------------------------------------------------

    Srv  Child Server number - generation
    PID  OS process ID
    Acc  Number of accesses this connection / this child / this slot
     M   Mode of operation
    CPU  CPU usage, number of seconds
    SS   Seconds since the beginning of the most recent request
    Req  Milliseconds required to process most recent request
   Conn  Kilobytes transferred this connection
   Child Megabytes transferred this child
   Slot  Total megabytes transferred this slot
   --------------------------------------------------------------------------

    Apache/2.2.15 (CentOS) Server at localhost Port 80

결론

아파치의 mod_status 모듈은 웹 서버 활동의 성능을 모니터링하는 매우 편리한 모니터링 도구이며 문제점을 스스로 강조할 수 있습니다. 더 많은 정보를 원하시면 상태 페이지를 읽어보세요. 이것은 더 성공적인 웹 서버 관리자가 되는 데 도움이 될 것입니다.

  1. 아파치 mod_status 홈페이지

지금은 mod_status에 대한 모든 것입니다. 앞으로 더 많은 아파치의 팁과 트릭을 소개할 예정이니 기대해 주세요. 그때까지 Geeky하게 유지하고 Tecmint.com을 주시하고 소중한 의견을 추가하지 않도록 잊지 마세요.

Source:
https://www.tecmint.com/monitor-apache-web-server-load-and-page-statistics/