카테고리 없음
11. Apache 모니터링방법
잘나가는전산쟁이
2026. 8. 5. 02:25
728x90
반응형
Apache 성능 모니터링
- 본 문서는 Zabbix에서 Apache HTTP Server의 성능 지표를 모니터링하는 절차를 설명한다.
- Zabbix 공식 권장 방식은 Apache의 mod_status 모듈을 활성화하고, Apache by HTTP 템플릿을 이용해 HTTP 기반으로 수집하는 방법이다.
- 이 방식은 별도의 외부 스크립트가 필요 없으며, Apache 서버에 Zabbix Agent를 반드시 설치할 필요도 없다.
구성 개요
- Zabbix Server 또는 Proxy: Apache 상태 페이지를 HTTP로 조회해 데이터를 수집한다.
- Apache HTTP Server: mod_status를 통해 상태 정보를 노출한다.
- 통신 포트:
- Zabbix Web UI -> Zabbix Server: 80/tcp, 443/tcp.
- Zabbix Server/Proxy -> Apache status page: 80/tcp 또는 443/tcp.
- 기본 상태 URL은 일반적으로 /server-status?auto 형태를 사용한다.
권장 방식
- 공식 문서는 Apache by HTTP 템플릿 사용을 안내한다.
- 이 템플릿은 HTTP agent 방식으로 Apache 상태 페이지를 읽어 지표를 수집한다.
- Apache 서버에 Agent를 설치하지 않아도 되며, Host interface는 {HOST.CONN} 매크로 해석용으로만 사용될 수 있다.
사전 준비
- Apache HTTP Server가 정상 구동 중이어야 한다.
- mod_status 모듈이 활성화되어 있어야 한다.
- Zabbix Server 또는 Proxy에서 Apache의 상태 페이지에 접근 가능해야 한다.
- 상태 페이지는 반드시 Zabbix Server 또는 Proxy IP만 접근 가능하도록 제한하는 것이 좋다.
mod_status 활성화 확인
- RHEL 계열에서는 아래 명령으로 상태 모듈 활성 여부를 확인한다.
httpd -M | grep status
- Debian/Ubuntu 계열에서는 아래 명령을 사용한다.
apache2ctl -M | grep status
- 출력에 status_module이 보이면 활성화된 상태이다.
mod_status 설정
- Apache 2.4 기준 예시는 아래와 같다. Zabbix Server IP만 접근 가능하게 제한한다.
<Location "/server-status">
SetHandler server-status
Require ip <ZABBIX_SERVER_IP>
</Location>
ExtendedStatus On
- RHEL 계열에서는 일반적으로 /etc/httpd/conf.modules.d/status.conf 또는 /etc/httpd/conf.d/ 아래에 설정한다.
- Debian/Ubuntu 계열에서는 /etc/apache2/mods-enabled/status.conf를 주로 사용한다.
Apache 재시작
- 설정 변경 후 Apache를 재시작 또는 reload 한다.
systemctl restart httpd
- Debian/Ubuntu 계열은 아래와 같다.
systemctl restart apache2
상태 페이지 확인
- 설정이 완료되면 상태 페이지가 정상 응답하는지 확인한다.
- 일반적으로 아래 URL을 사용한다.
curl http://<APACHE_SERVER_IP>/server-status?auto
- 응답에 Total Accesses, BusyWorkers, IdleWorkers 같은 값이 보이면 정상이다.
Web UI 등록
- Zabbix Web UI에서 Apache 서버를 나타낼 Host를 생성한다.
- Host interface에는 Apache 서버의 IP 또는 DNS를 지정한다. 이 값은 {HOST.CONN} 매크로 해석에 사용된다.
- Templates에서 Apache by HTTP를 연결한다.
- Macros 탭에서 상태 페이지 접속 정보를 환경에 맞게 조정한다.
주요 매크로
- 공식 HTTP 템플릿 문서 기준으로 아래 매크로를 주로 사용한다.
- {$APACHE.STATUS.HOST} 기본값 127.0.0.1
- {$APACHE.STATUS.PATH} 기본값 server-status?auto
- {$APACHE.STATUS.PORT} 기본값 80
- {$APACHE.STATUS.SCHEME} 기본값 http
예시 값
{$APACHE.STATUS.HOST} = 10.10.10.20
{$APACHE.STATUS.PATH} = server-status?auto
{$APACHE.STATUS.PORT} = 80
{$APACHE.STATUS.SCHEME} = http
HTTPS를 사용할 경우 포트와 scheme을 각각 443, https로 변경한다.
수집 항목 예시
- Apache availability
- Total Accesses
- Total kBytes
- BusyWorkers
- IdleWorkers
- Requests per second
- Bytes per second
- CPU load 또는 scoreboard 관련 상태값, 구성에 따라 다름
방화벽 및 접근 제어
- Apache 상태 페이지는 외부 전체 공개가 아니라 Zabbix Server 또는 Proxy IP만 접근 가능하도록 제한해야 한다.
- HTTP는 80/tcp, HTTPS는 443/tcp를 사용한다.
- Reverse proxy나 WAF 뒤에 두는 환경에서는 실제 status URL 경로와 접근 제어 정책을 함께 점검해야 한다.
대용량 운영 추천값
- 대규모 웹 서버 환경에서는 개별 서버마다 템플릿과 매크로 값을 표준화하는 것이 중요하다.
- Apache 상태 페이지는 가능한 한 내부망 또는 관리망에서만 접근되도록 구성하는 것이 좋다.
- 추천 시작 기준은 아래와 같다.
| 항목 | 추천값 |
|---|---|
| 템플릿 | Apache by HTTP |
| 상태 URL | /server-status?auto |
| 접근 방식 | 내부망 또는 관리망 한정 |
| 상태 페이지 접근 허용 | Zabbix Server/Proxy IP만 허용 |
| 프로토콜 | 가능하면 HTTPS |
| 운영 방식 | Host group과 매크로 표준화 |
구방식 참고
- 과거에는 외부 스크립트나 UserParameter 기반으로 Apache 상태를 수집하는 경우가 많았다.
- 현재는 공식 Apache by HTTP 템플릿 사용이 더 단순하고 유지보수도 쉽다.
- 기존 스크립트 기반 환경은 즉시 제거하기보다 단계적으로 HTTP 템플릿 방식으로 전환하는 것이 현실적이다.
점검 항목
- mod_status가 활성화되어 있는지 확인한다.
- /server-status?auto가 정상 응답하는지 확인한다.
- Zabbix Web UI에서 Host interface가 올바르게 등록되었는지 확인한다.
- Apache by HTTP 템플릿이 연결되었는지 확인한다.
- 매크로 값, 접근 제어, 방화벽 차단은 가장 흔한 원인이므로 우선 점검한다.
운영 팁
- Apache 자체 성능 지표와 OS 수준 CPU, Memory, Disk 지표를 함께 수집해야 원인 분석이 쉬워진다.
- 다수의 Apache 서버를 운영할 경우 Host group, 매크로, 템플릿 적용 기준을 표준화하는 것이 좋다.
- TLS 종료가 앞단 LB에서 이뤄지는 구조라면 실제 Apache status 접근 URL과 원본 포트를 분리해서 문서화하는 편이 좋다.
- 먼저 기본 상태 지표만 적용한 뒤, 이후 응답시간, 인증서, 웹 시나리오 감시까지 확장하는 방식이 운영에 유리하다.
728x90
반응형