이메일

Apache, Nginx 웹서버 모니터링 (Telegraf, WhaTap)

IT 소식

2019년 12월 03일


Aphace and Nginx

Apahce와 Nginx는 설정을 통해 서버 상태를 확인하는 기능을 기본적으로 제공하고 있습니다. 이 기능은 URL을 통해서 접근하기 때문에 일회성의 데이터 입니다. 모니터링을 하기 위해서는 지속적으로 데이터를 수집, 저장 그리고 출력하는 기능들이 더해져야 합니다. 오픈소스 Telegraf 에이전트는 지속적으로 데이터를 수집하고 원하는 형태로 데이터를 전달할 수 있습니다. Telegraf 를 통해서 Apache와 Nginx 의 상태 데이터를 수집하고, 와탭의 수집서버로 전달할 수 있습니다. 와탭에서는 전달받은 웹서버 모니터링 데이터를 저장하고 과거 또는 실시간 데이터를 대시보드, 그래프 등의 형태로 조회할 수 있습니다.

Apache, Naginx server status 👉

Telegraf 👉

whatap 👉

User Interface 👉

Apache 모니터링

참고 자료 : https://httpd.apache.org/docs/2.2/ko/mod/mod_status.html

1. status_module을 설정하여 상태 정보를 확인할 수 있습니다.

2. status_module이 구성되어 있는지 확인합니다.

status_module

3. Apache conf 파일에 아래와 같이 설정합니다.

Apache 2.2 설정

Apache 2.2 setting

Apache를 재시작 후 설정된 /server-status URL을 통해서 웹서버 상황을 확인할 수 있습니다.

Apache 2.4 설정

Apache 2.4 setting

4. Apache를 재시작 후 설정된 /server-status URL을 통해서 웹서버 상황을 확인할 수 있습니다.

서버 상태 확인

Apache를 재시작 후 설정된 /server-status URL을 통해서 웹서버 상황을 확인할 수 있습니다.

Apache2.4_server_status

http://도메인/server-status?auto을 통해서 서버 상태를 확인할 수 있습니다.
auto 옵션은 간소화되고 변환하기 쉬운 텍스트 데이터를 조회할 수 있습니다.

server_status_auto

제공 정보

  • 요청을 서비스하는 worker의 개수
  • 쉬고 있는(idle) worker의 개수
  • 각 worker들의 상태, worker가 처리한 요청의 개수와 worker가 서비스한 전체 바이트 수
  • 총 접근 횟수와 서비스한 바이트 수
  • 서버가 시작혹은 재시작한 시간과 동작한 시간
  • 초당 요청 수 평균, 초당 서비스한 바이트 수와 요청당 바이트 수 평균
  • 현재 아파치 전체와 각 worker들의 CPU 비율
  • 현재 처리하고 있는 호스트와 요청
  • Scoreboard
    • “_” : 요청을 대기중인 상태(프로세스 있음)
    • “S” : 시작 중인 상태
    • “R” : 요청을 분석하고 있는 상태
    • “W” : 응답을 전송 중인 상태
    • “K” : 계속 연결 중인 상태 (Keepalive)
    • “D” : DNS 조회 중인 상태
    • “C” : 연결을 종료하고 있는 상태
    • “.” : 현재 프로세스가 없는 열린 슬롯

Nginx 모니터링

참고 자료 : https://nginx.org/en/docs/http/ngx_http_stub_status_module.html

  1. nginx 설정 파일에 기능을 설정합니다.
  2. Centos 6 기준으로 /etc/nginx/conf.d/Default.conf 에 아래 설정을 추가합니다.

server 항목 내부에 location 설정을 합니다.

locaton 설정

http://도메인/server-status 을 통해서 서버 상태를 확인할 수 있습니다.

nginx_status

제공 정보

  • Active connections
    연결을 포함한 현재 활성 클라이언트 연결 수
  • accepts
    총 클라이언트 연결 수
  • handled
    처리 된 총 연결 수. 일반적으로 매개 변수 값은 accepts 정보와 동일합니다.
    (일부 자원 제한에 도달하지 않는 한. 예 : worker_connections 제한 )
  • requests
    총 클라이언트 요청 수
  • Readings
    nginx가 요청 헤더를 읽는 현재 연결 수
  • Writing
    nginx가 응답을 클라이언트에 다시 쓰는 현재 연결 수
  • Waiting
    요청을 기다리는 현재 유휴 클라이언트 연결 수

Telegraf

Telegraf 에이전트를 통해서 Apache와 Nginx 서버 상태 정보를 지속적으로 수집(기본 설정 10초 간격)할 수 있습니다. Telegraf에는 apache input plugin, nginx input plugin이 포함되어 있어 설정으로 활성활 할 수 있습니다.

수집한 데이터를 와탭 서버로 전달하기 위해서는 whatap output plugin이 필요합니다. Telegraf 공식 버전에는 WhaTap output plugin 이 아직 적용되지 않았습니다. WhaTap output plugin을 추가하기 위해 리뷰가 진행 중입니다. 정식 배포 전에는 아래 다운로드 설치로 Telegraf를 설치합니다.

Telegraf release-1.12 버전을 기준으로 WhaTap output plugin을 추가한 설치파일입니다. Telegraf를 이미 사용중인 경우에는 실행파일만 교체하여 사용할 수 있습니다.

  1. macOS
    http://repo.whatap.io/telegraf/darwin/amd64/telegraf (실행파일)
    http://repo.whatap.io/telegraf/darwin/amd64/telegraf-1.12.0~842282d_darwin_amd64.tar.gz
  2. RedHat & CentOS
    http://repo.whatap.io/telegraf/linux/amd64/telegraf (실행파일)
    http://repo.whatap.io/telegraf/linux/amd64/telegraf-1.12.0~842282d-0.x86_64.rpm
    http://repo.whatap.io/telegraf/linux/amd64/telegraf-1.12.0~842282d_linux_amd64.tar.gz
  3. Ubuntu & Debian
    http://repo.whatap.io/telegraf/linux/amd64/telegraf (실행파일)
    http://repo.whatap.io/telegraf/linux/amd64/telegraf_1.12.0~842282d-0_amd64.deb
    http://repo.whatap.io/telegraf/linux/amd64/telegraf-1.12.0~842282d_linux_amd64.tar.gz
  4. FreeBSD
    (실행파일)
    http://repo.whatap.io/telegraf/freebsd/amd64/telegraf-1.12.0~842282d_freebsd_amd64.tar.gz
  5. Windows
    http://repo.whatap.io/telegraf/windows/amd64/telegraf.exe (실행파일)
    http://repo.whatap.io/telegraf/windows/amd64/telegraf-1.12.0~842282d_windows_amd64.zip

다른 운영체체에 대해서는 [email protected]로 부탁드립니다.

Apache input plugin

  1. Apache의 서버 상태 정보를 수집하기 위한 설정을 합니다
  2. ttelegraf.conf (/etc/telegraf/telegraf.conf)를 수정하여 inputs.apache plugin 을 활성화 합니다.
  • [[inputs.apache]] 주석을 제거 합니다.
  • urls에 Apache status_module 로 설정한 server-status url을 등록합니다.
Apache input plugin

Nginx input plugin

  1. Nginx의 서버 상태 정보를 수집하기 위한 설정을 합니다.
  2. telegraf.conf (/etc/telegraf/telegraf.conf)를 수정하여 inputs.nginx plugin 을 활성화 합니다.
  • [[inputs.nginx]] 주석을 삭제합니다.
  • urls 항목에 nginx에 설정된 server-status url 을 등록합니다.
Nginx input plugin

WhaTap ouput plugin

아래 설정에 필요한 정보는 와탭 애플리케이션 와탭 애플리케이션 모니터링(Java, Node, Python, Php) 프로젝트의 에이전트 설치 화면에서 라이선스 키 및 와탭 수집서버 정보를 확인할 수 있습니다.

agent_install
  1. [[outputs.whatap]] 주석(#)을 삭제합니다.
  2. license의 주석(#)을 삭제합니다. 프로젝트의 라이선스 키 정보를 입력합니다. (문자형으로 입력합니다.)
  3. pcode의 주석(#)을 삭제합니다. 프로젝트 코드를 입력합니다. (숫자형으로 입력합니다.) 프로젝트 코드는 애플리케이션 프로젝트 화면의 왼쪽 메뉴 하단에 PCODE 뒤에 숫자형 코드입니다.
  4. servers의 주석(#)을 삭제합니다. 수집서버 정보(아이피,포트) 를 설정합니다.
    프로토콜은 tcp만 지원합니다.문자 형식으로 "tcp://아이피:포트"를 등록합니다.
    배열 형식으로 등록합니다. 콤마(,)로 구분하여 배열 형식으로 등록합니다.
whatap config

데이터 확인

WhaTap output plugin에 설정한 애플리케이션 모니터링 프로젝트 내부에서 확인이 가능합니다.

대시보드

태그 카운트 보드를 통해서 직접 원하는 대시보드를 생성할 수 있습니다. Apache 또는 Nginx 웹서버 모니터링 과 시스템 모니터링을 같이 구성할 수도 있습니다.

사전정의 태그 보드에는 Apahce 또는 Nginx 모니터링을 대상으로 미리 구성되어 있어서 데이터 연결 후 바로 간략한 모니터링 정보를 확인할 수 있습니다.

Apache에 대한 대시보드를 제공합니다.

apache_dashboard
  • CPULoad : CPULoad를 그래프로 보여줍니다.
  • CPU User : 사용자 CPU 사용율을 그래프로 보여줍니다.
  • Used Memory : 시스템 메모리 사용율을 그래프로 보여줍니다.
  • ReqPerSec : 초당 요청 수의 평균을 그래프로 보여줍니다.
  • BytesPerSec : 초당 전송 바이트의 평균을 그래프로 보여줍니다.
  • BytesPerReq : 요청당 전송 바이트의 평균을 그래프로 보여줍니다.
  • Worker : Busy Workers(요청을 처리하는 작업 수), Idel Workers(쉬고 있는 작업 수)를 그래프로 보여줍니다.
  • Scoreboard : 스코어보드를 그래프로 보여줍니다.

Nginx 에 대한 대시보드를 제공

nginx_dashboard
  • Active : 처리중인 커넥션 수를 그래프로 보여줍니다.
  • CPU User : 사용자 CPU 사용율을 그래프로 보여줍니다.
  • Used Memory : 시스템 메모리 사용율을 그래프로 보여줍니다.
  • Server accepts, handled, requests 항목을 그래프로 보여줍니다
  • Reading reading, writing, waiting 항목을 그래프로 보여줍니다.

태그 카운트 조회

Telegraf 에서 전달되는 데이터들을 시간, 카테고리, 태그, 필드 등을 선택하여 데이터를 조회할 수 있습니다.

tagcount_1

태그 카운트 차트 조회

Telegraf 에서 전달되는 데이터들을 시간, 카테고리, 태그, 필드 등을 선택하여 차트로 조회할 수 있습니다. 여러 개의 차트를 추가하여 비교할 수 있습니다.

tagcount_chart
IT 서비스 성능 관리, 와탭으로 시작하세요.
와탭 무료로 시작하기
임재환
임재환([email protected])
Development TeamLead Developer

지금 바로 데모를 통해 와탭을 경험해보세요!

어려웠던 모니터링 분석이 와탭 하나로 쉽게 가능합니다.