설치

와탭 애플리케이션 모니터링 - Python 에이전트 설치 가이드

와탭 APM 모니터링 서비스를 사용하기 위해서는 모니터링 대상 애플리케이션 서버에 와탭 APM 모니터링 에이전트를 설치해야 합니다.

와탭 APM 모니터링 에이전트 설치 방법은 whatap.io 사이트에서 압축된 에이전트 파일을 다운로드해 서버 임의의 위치에 압축을 풀어 실행하는 것만으로 설치가 완료됩니다.

Docker

Docker 컨테이너로 서비스되는 애플리케이션의 경우 다음 내용을 DockerFile에 추가합니다.

Dockerfile
# Python Agent 설치
ENV WHATAP_HOME /whatap
RUN mkdir -p /whatap
RUN pip install whatap-python (1)

# 라이센스 및 설정 등록
RUN touch /whatap/whatap.conf
RUN echo "license=[ 발급된 라이센스 key ]" > /whatap/whatap.conf
RUN echo "whatap.server.host=[ 수집서버 IP ]" >> /whatap/whatap.conf
RUN echo "app_name=[ 애플리케이션 이름 ]" >> /whatap/whatap.conf
RUN echo "app_process_name=[ 애플리케이션 프로세스 이름 예)uwsgi, gunicorn.. ]" >> /whatap/whatap.conf
1 requirements.txt로 사용하는 경우 해당 파일에 whatap-python을 추가하세요.

기존 실행 커맨드 앞에 whatap-start-agent를 추가하세요.

Dockerfile
# 실행 커맨드에 whatap-start-agent 추가
#ENTRYPOINT python manage.py runserver
ENTRYPOINT whatap-start-agent python manage.py runserver

애플리케이션 서버 별 적용 절차

기본

예제
$ whatap-start-agent python manage.py runserver

uWSGI

예제 1
$ whatap-start-agent uwsgi --ini myapp.ini
예제 2
description "uWSGI application server handling myapp"

start on runlevel [2345]
stop on runlevel [!2345]

exec whatap-start-agent [YOUR_APPLICATION_START_COMMAND]
또는
exec env WHATAP_HOME=[PATH] [절대 경로]/whatap-start-agent [YOUR_APPLICATION_START_COMMAND]
예제 3
$ whatap-start-agent gunicorn myapp.wsgi

Gunicorn

예제 1
NAME="uwsgi"
PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/uwsgi

########## WHATAP_AGENT_CONF ##########
WHATAP_HOME=[PATH]
WHATAP_AGENT=[절대 경로]/whatap-start-agent
...
do_start(){
    env WHATAP_HOME=$WHATAP_HOME $WHATAP_AGENT [YOUR_APPLICATION_START_COMMAND]
}
예제 2
description "Gunicorn application server handling myapp"

start on runlevel [2345]
stop on runlevel [!2345]

exec whatap-start-agent [YOUR_APPLICATION_START_COMMAND]
또는
exec env WHATAP_HOME=[PATH] [절대 경로]/whatap-start-agent [YOUR_APPLICATION_START_COMMAND]
예제 3
NAME="gunicorn"
PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/gunicorn

########## WHATAP_AGENT_CONF ##########
WHATAP_HOME=[PATH]
WHATAP_AGENT=[절대 경로]/whatap-start-agent
...
do_start(){
    env WHATAP_HOME=$WHATAP_HOME $WHATAP_AGENT [YOUR_APPLICATION_START_COMMAND]
}

Supervisor

예제
[program:app-uwsgi]
environment = WHATAP_HOME=[PATH]
command = [절대 경로]/whatap-start-agent /usr/local/bin/uwsgi --ini /home/blog/backend/config/uwsgi.ini

[program:nginx-app]
command = /usr/sbin/nginx

WSGI 애플리케이션 직접 구현

예제
import whatap

@whatap.register_app
def simple_app(environ, start_response):
    """Simplest possible application object"""
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return ['Hello world!\n']