Whatap Support support@whatap.io 2019-03-12 1.0.0

본 문서는 WhaTap PHP Monitoring 에이전트에 대해 설명합니다.

PHP Agent Guide

1. Install

1.1. 에이전트 실행 및 모니터링 개요

와탭 PHP 애플리케이션 모니터링은 PHP 기반 웹 애플리케이션 서버 모니터링 서비스를 제공합니다.

1.1.1. 에이전트 설치 방식 개요

PHP 모니터링 서비스를 사용하기 위해서는 모니터링 대상 애플리케이션에 모니터링 에이전트를 설치해야 합니다. 설치 방식은 리눅스 패키지 설치로 가능합니다.

  • 와탭 저장소(Repository)를 설치합니다.

  • whatap-php 리눅스 패키지를(yum, apt-get) 설치합니다.

  • 설정 스크립트를 실행합니다.

  • Apache 또는 PHP-FRPM을 재시작 합니다.

설정 스크립트를 통해서 트레이서는 PHP 확장 모듈(PHP Extension module)로 등록되고, 에이전트는 whatap-php 서비스(Service)로 실행됩니다.

php

1.1.2. 구성 파일

모니터링 정보를 수집하기 위한 트레이서, 수집된 정보를 서버에 전송하기 위한 에이전트, 트레이서와 에이전트를 서버에 동적으로 적용하기 위한 설치 스크립트 파일로 구성됩니다.

PHP 모니터링 서비스를 구성하는 각 파일의 역할은 다음과 같습니다.

파일명

설명

whatap_#_#.so

트레이서 PHP 확장 모듈(PHP Extension module)로 추가 되어 정보를 수집하고 수집된 정보를 에이전트로 전송하는 라이브러리입니다.

whatap-php(whatap_php)

에이전트, 트레이서에서 UDP로 전달된 정보를 수집서버로 전송하는 프로그램입니다.

/etc/init.d/whatap-php

서비스 스크립트

whatap_php

서비스 실행파일

whatap.ini

애플리케이션 서버의 데이터를 수집하는 PHP 확장 모듈(PHP Extension module)의 설정 정보, 수집서버의 주소와 서버의 프로젝트 라이센스 키가 입력되는 파일입니다.

whatap-install-#.log

설치 과정에 대한 로그 파일입니다. (/usr/whata/php/logs)

whatap-boot-#.log

에이전트 로그 파일 입니다. (/usr/whata/php/logs)

install.sh

웹 애플리케이션 서버에 트레이서를 적용하기 위한 쉘 스크립트입니다.

Whatap.php (sample.php)

PHP 소스코드에서 사용할 API 레퍼런스 클래스 (/usr/whatap/php/lib/Whatap.php) 및 예제 소스 파일(sample.php) 입니다.

1.1.3. 에이전트 이름 식별

와탭은 모니터링 정보 수집 대상인 애플리케이션 서버 식별을 위한 정보로 기본적으로 애플리케이션 서버로부터 수집한 정보를 활용합니다. 기본적으로 활용하는 정보는 애플리케이션 서버 종류, 애플리케이션 서버의 IP, 서비스 포트를 조합하여 애플리케이션 서버를 고유 식별자로 사용하게 되며 필요에 따라 사용자가 지정한 명칭을 사용하거나 패턴을 변경하여 사용하는 것도 가능합니다. 이때에는 꼭 고유한 값이어야 합니다.

애플리케이션 서버로부터 추출한 정보를 활용하는 이유는 애플리케이션 서버 정지, 네트워크 단절 또는 에이전트 문제로 인한 수집 서버와 에이전트의 통신 단절 상태가 복구되었을 경우, 재 접속된 에이전트로부터 송신되는 정보가 기존 에이전트로부터 송신된 정보와의 연속성을 유지하기 위해서 입니다. 와탭이 애플리케이션 서버를 식별하기 위해 사용하는 기본 패턴은 다음과 같습니다.

  • default: {type}-{ip2}-{ip3}-{process}

기본 패턴에 대한 변경은 whatap.ini에서 설정에서 가능합니다.

object_name default: {type}-{ip2}-{ip3}-{process}

설정

설명

Type

app_name

Ip#

Ip를 .으로 나누었을 때 #번째 자리(0부터)

Process

app_process_name

hostname

호스트 명

1.2. 프로젝트 생성 및 라이센스 발급

1.2.1. 프로젝트 생성

서버를 등록하기 위해 우선 프로젝트를 생성합니다. 추가 버튼을 선택하면 아래와 같이 프로젝트 생성 창이 나타납니다. PHP 아이콘을 선택한 뒤, 희망하는 프로젝트명과 데이터 서버 지역(Region), 소속하게 될 그룹을 선택한 뒤 프로젝트를 생성합니다.

500

이후, 생성된 프로젝트를 클릭하여 관리 화면에 진입합니다.

510

1.2.2. 라이센스 발급

520

프로젝트 관리화면에서는 우선적으로 라이선스를 발급 받습니다. 라이센스 키는 프로젝트별로 귀속되기 때문에, 유출되거나 배포되어서는 안됩니다. 반드시 본인 프로젝트에 서버를 등록할 때에만 이용하시기 바랍니다.

1.3. 에이전트 설치

1.3.1. 패키지 설치

RedHat/CentOS
패키지 저장소(Repository) 등록

와탭 저장소(Repository)를 등록합니다.

$ sudo rpm -Uvh http://repo.whatap.io/centos/5/noarch/whatap-repo-1.0-1.noarch.rpm
패키지 설치

아래 명령어를 통해 패키지를 설치합니다.

$ sudo yum install whatap-php
Debian/Ubuntu
패키지 저장소(Repository) 등록

와탭 저장소(Repository)를 등록합니다.

$ wget http://repo.whatap.io/debian/release.gpg -O -|sudo apt-key add -
$ wget http://repo.whatap.io/debian/whatap-repo_1.0_all.deb
$ sudo dpkg -i whatap-repo_1.0_all.deb
$ sudo apt-get update
패키지 설치
$ sudo apt-get install whatap-php
Amazon Linux
패키지 저장소(Repository) 등록

와탭 저장소(Repository)를 등록합니다.

$ sudo rpm --import http://repo.whatap.io/centos/release.gpg
$ echo "[whatap]" | sudo tee /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "name=whatap packages for enterprise linux" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "baseurl=http://repo.whatap.io/centos/latest/\$basearch" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "enabled=1" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "gpgcheck=0" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
패키지 설치
$ sudo yum install whatap-php
FreeBSD
패키지 설치
$ wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/freebsd/10/whatap-php-0.4.7.txz
$ pkg install whatap-php-0.4.7.txz

1.3.2. PHP 확장 모듈(PHP Extension module) 및 whatap-php서비스(Service) 등록

PHP 확장 모듈(PHP Extension module) 및 whatap-php 서비스(Service)를 자동으로 설치할 경우에 아래와 같이 적용합니다

$ sudo /usr/whatap/php/install.sh
Input license key
xxxxxxxxxxxxxxxx                          # 발급된 라이센스 key 입력

Input whatap.server.host
192.x.x.x                                  # 발급된 서버 IP 입력

PHP 확장 모듈(PHP Extension module) 및 whatap-php 서비스(Service)를 자동으로 인식하지 못하는 경우 아래와 같이 선택 설치를 진행해야 합니다.
주로 Apache 명령어(apachectl, httpd, apache2) 및 PHP 명령어(CLI)가 기본 경로($PATH)에 설정 되어 있지 않거나, 여러 개의 PHP가 설치되어 PHP 명령어(CLI)가 여러 개일 경우에 (php5, php70, php-zts, zts-php…) 실제로 적용하고 있는 버전을 선택하여 진행합니다.

$ sudo /usr/whatap/php/install.sh manual

Input license key
xxxxxxxxxxxxxxxx                            # 발급된 라이센스 key 입력

Input whatap.server.host
192.x.x.x                                    # 발급된 서버 IP 입력

Input : which apache or php-fpm ex)/usr/sbin/httpd, /usr/sbin/apache2, /usr/sbin/php-fpm ...
/usr/sbin/httpd                             # apache 및 php-fpm 명령어 위치 입력

Input : which php ex) /usr/bin/php, /usr/bin/php5, /usr/bin/php70 ...
/usr/bin/php5                                # php 명령어 위치 입력
설정 스트립트 install.sh
Usage: install.sh [ commands manual|remove ]
    install.sh -l <license> -s <server> -v <php version> -i <php config file> -p <process_name> [-z ]
    install.sh -l <license> -s <server> -e <php command> -p <process_name> [-z ]
Commands
    auto(default) Auto scan web server and php environment
    manual User input web server and php environment
    remove Remove php extension and service(whatap-php)
Options
    -v <php version>     PHP version ex) 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 -v 5.3,
                           --php-version 5.3
    -i <php config file> PHP config file -i /etc/php.ini,
                           --php-ini /etc/php.ini
    -e <php cli>         PHP CLI(command line interface) -e /usr/bin/php ,
                           --php-exe: /usr/bin/php-fpm
    -p <process name>    Web server or PHP-FPM process name. for get used memory -p httpd,
                           -p httpd.worker, -process-name: php-fpm
    -l <license>         License key -l xxxxxxxxxxxxxxx,
                           --license: xxxxxxxxxxxxx
    -s <server>          Whatap Server Host -s xx.xx.xx.xx/yy.yy.yy.yy,
                           --server xxx.xxx.xxx.xxx
    -z                   PHP thread safe -z ,
                           --php-zts
license

발급된 라이센스 key

server

발급된 서버 IP

php version

서버에 설치된 php 버전 정보 (5.2. 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 )

php config file

서버에 설치된 php.ini의 전체 경로 (/etc/php.ini) PHP Extension 에 대한 설정을 진행합니다.

php cli

커맨드 라인으로 실행가능한 php 명령어의 전체 경로 (/usr/bin/php) 해당 명령어로 PHP 기본 환경을 확인합니다.

process name

Apache 실행 프로세스명(httpd, apache2, httpd.worker …) 또는 PHP-FPM 의 실행 프로세스명(php-fpm, php5-fpm) 해당 프로세스 명으로 사용 메모리 정보를 수집합니다.

zts

Zend Thread Safe 지원여부를 설정합니다.

PHP 버전 지정 설치
$ /usr/whatap/php/install.sh -l [발급된 라이센스 key] -s [발급된 서버 IP] -v [PHP 버전 x.x] -i [php.ini 의 전체 경로] -p [프로세스명]
$ /usr/whatap/php/install.sh -l xxxxx -s 1.1.1.1/2.2.2.2 -v 7.0 -i /etc/php.ini -p httpd [-z]
PHP Cli 명령어 지정 설치
$ /usr/whatap/php/install.sh -l [발급된 라이센스 key] -s [발급된 서버 IP] -e [PHP Cli] -p [프로세스명]
$ /usr/whatap/php/install.sh -l xxxxx -s 1.1.1.1/2.2.2.2 -e /opt/php/bin/php -p apache2
$ /usr/whatap/php/install.sh -l xxxxx -s 1.1.1.1/2.2.2.2 -e /opt/php/bin/php-fpm -p php-fpm
애플리케이션 재기동

설치가 완료된 후 Apache 또는 PHP-FPM서비스(Service)를 재시작 하면 설정된 PHP 확장 모듈(PHP Extension module) whatap.so 파일이 로딩됩니다.

1.3.3. 설치 확인

PHP 확장 모듈

PHP 추가 INI 경로에 whatap.ini 생성되어 있는지 확인합니다.

$ find / | grep whatap.ini

PHP 확장 모듈(PHP Extension module) 경로에 whatap.so 파일 생성되어 있는지 확인합니다.

$ find / | grep whatap.so

PHP 확장 모듈(PHP Extension module) 실행되고 있는지 확인합니다.

$ sudo php -m

[PHP Modules]
bz2
calendar
Core
ctype
curl
date
…
whatap                  # whatap 모듈 실행 확인
…
[Zend Modules]

whatap-php 서비스(Service) 상태를 확인합니다.

$ service whatap-php status
PHP 모니터링 연결 확인

애플리케이션 서버 목록에서 설정된 서버가 추가 되었는지 확인합니다

server agents

1.3.4. 실행

애플리케이션 재기동

설치가 완료된 후 Apache 또는 PHP-FPM서비스(Service)를 재시작 하면 설정된 PHP 확장 모듈(PHP Extension module) whatap.so 파일이 로딩됩니다.

whatap-php 서비스(Service) 재시작

whatap-php 서비스(Service)가 실행 중이지 않거나 오류가 발생한 경우 재시작 합니다.

Redhat/CentOS
$ service whatap-php restart
Debian/Ubuntu
$ sudo service whatap-php restart
FreeBSD
$ service whatap_php restart

1.3.5. 업데이트

패키지 업데이트는 기존 설정을 유지한 채로 PHP 모니터링 서비스를 업데이트합니다. 0.2.7 이후 버전부터 정상적인 업데이트가 지원됩니다. 이전 버전은 삭제 후 설치를 진행해야 합니다.

Redhat/CentOS

패키지 정보 갱신을 위해 캐시 정보를 삭제합니다.

$ yum clean all

Apache 또는 PHP-FPM서비스(Service)를 중지합니다.

whatap-php 패키지를 업데이트 합니다.

$ yum update whatap-php

Apache 또는 PHP-FPM서비스(Service)를 시작합니다

Debian/Ubuntu

패키지 정보 갱신을 위해 캐시 정보를 갱신합니다.

$ sudo apt-get update

Apache 또는 PHP-FPM서비스(Service)를 중지합니다.

whatap-php 패키지를 업데이트 합니다.

$ sudo apt-get install --only-upgrade whatap-php

Apache 또는 PHP-FPM서비스(Service)를 시작합니다

FreeBSD

에이전트 삭제 후 재설치를 진행합니다. 아래 항목을 참조하여 순서대로 진행합니다.

Apache 또는 PHP-FPM서비스(Service)를 중지

# 에이전트 삭제 후 재설치
$ /usr/whatap/php/install.sh remove

$ wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/freebsd/10/whatap-php-0.4.7.txz
$ pkg install whatap-php-0.4.7.txz

# PHP 확장 모듈(PHP Extension module) 및 whatap-php서비스(Service) 등록
$ /usr/whatap/php/install.sh

Apache 또는 PHP-FPM서비스(Service)를 시작합니다

1.3.6. 중지

일시 중지
PHP 확장 모듈(PHP Extension module) 중지

whatap.ini 파일의 ‘extension=’ 구문을 주석처리 합니다.

수동 설정으로 php.ini 에 직접 설정한 경우도 동일하게 ‘extension=’ 구문을 주석처리 합니다.
주석은 세미콜론( ; ) 으로 설정합니다.

$ sudo vi whatap.ini

extension=whatap.so

;주석
;extension=whatap.so
Apache 또는 PHP-FPM서비스(Service)를 재시작합니다.
whatap-php 서비스(Service) 중지
Redhat/CentOS
$ sudo service whatap-php stop
Debian/Ubuntu
$ sudo service whatap-php stop
FreeBSD
$ service whatap_php stop
에이전트 삭제

설치 스크립트를 이용하여 트레이서(PHP Extension module) 및 whatap-php 서비스(Service)를 삭제합니다.

이후 패키지(yum, apt-get) 삭제를 진행하고 필요에 따라서 /usr/whatap/php 아래에 로그 파일 및 기타 파일을 삭제합니다.

PHP 확장 모듈(PHP Extension module) 및 whatap-php 서비스(Service) 삭제
$ /usr/whatap/php/install.sh remove
패키지 삭제
Redhat/CentOS
$ sudo yum remove whatap-php
Debian/Ubuntu
$ sudo apt-get purge whatap-php
FreeBSD
$ pkg delete whatap-php
Apache 또는 PHP-FPM서비스(Service)를 재시작합니다.
/usr/whatap/php 디렉토리 삭제

1.3.7. 구글 앱 엔진 (Google Cloud App Engine) 설치

:imagesdir:./images/install/tinified

구글 앱 엔진에 PHP 모니터링을 설치하기 위해서는 custom docker를 사용해야 합니다. 구글 앱 엔진 PHP 의 기본형은 PHP 모니터링의 PHP Extension 및 Service (데몬)의 실행이 불가능하여 Docker Container를 통하여 설치합니다.

app.yaml 파일 설정

구글 앱 엔진의 설정파일인 app.yaml 파일에 flex 환경, custom 런타임으로 설정합니다.

$ vi app.yaml
env: flex
runtime: custom
Dockerfile 생성 및 설정

Custom Docker로 실행하기 위해서는 flex/custom으로 설정된 app.yaml 파일과 동일한 위치에 Dockerfile 을 생성해야 합니다. 구글 앱 엔진의 기본 php Docker 이미지를 참조합니다.

# google-appengine php php56, php70, php71
FROM gcr.io/google-appengine/php56

PHP 모니터링 Agent를 설치합니다.

  • 라이브러리 설치합니다. (wget)

  • php-fpm 실행 명령어 링크를 생성합니다.

  • whatap 레포지터리 및 whatap-php 패키지를 설치합니다.

  • PHP Extension 및 whatap-php 서비스를 설정합니다.

  • supervisor 를 통해 whatap-php 서비스를 실행하도록 설정합니다.

# WhaTap. Install Lib
RUN apt-get install wget -y

# WhaTap. Link php-fpm
RUN ln -s /opt/php/sbin/php-fpm /usr/bin/php-fpm

# WhaTap. Install repository and whatap-php
RUN wget http://repo.whatap.io/debian/release.gpg -O -| apt-key add -
RUN wget http://repo.whatap.io/debian/whatap-repo_1.0_all.deb
RUN dpkg -i whatap-repo_1.0_all.deb
RUN apt-get update
RUN apt-get install whatap-php

# WhaTap. Configure PHP agent
#RUN (echo "[ 발급된 라이센스 key ]"; echo "[ 발급된 서버 IP ]")|/usr/whatap/php/install.sh
RUN (echo "xxxxxxxx"; echo "1.1.1.1/2.2.2.2")|/usr/whatap/php/install.sh

# WhaTap. Add supervisor/conf.d/whatap.conf. Run whatap-php service
RUN echo "[program:whatap-php]" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "command = /etc/init.d/whatap-php start" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "stdout_logfile = /dev/stdout" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "stdout_logfile_maxbytes=0" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "stderr_logfile = /dev/stderr" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "stderr_logfile_maxbytes=0" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "user = root" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "autostart = true" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "autorestart = true" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "priority = 10" >> /etc/supervisor/conf.d/whatap.conf
방화벽 설정

PHP 모니터링 프로젝트 생성 후 라이센스 키와 서버 IP( / 구분자로 여러 개의 IP)가 발급됩니다.
구글 앱 엔진에서 사용하는 네트워크를 대상으로 방화벽 규칙을 추가합니다.
발급받은 서버 IP 에 대해 6600 포트를 통한 TCP 송신을 허용해야 합니다.

gae firewall
gae firewall detail
배포

Google Cloud SDK 를 통해서 설정된 app.yaml 파일과 Dockerfile 을 배포합니다.

$ gcloud app deploy
구글 앱 엔진 인스턴스 확인

구글 클라우드 콘솔에서 앱 엔진의 생성된 인스턴스를 확인합니다.

gae instance

1.4. 설치 오류 해결

1.4.1. PHP 확장 모듈(PHP Extension module) 및 whatap-php 서비스(Service) 수동 설정

PHP 확장 모듈(PHP Extension module) , whatap-php 서비스(Service) 설치 및 선택 설치(install.sh )가 정상적으로 이루어 지지 않을 경우 수동으로 설정하는 방법을 설명합니다. PHP 컴파일(Compile) 설치 등의 이유로 환경 정보를 확인 할 수 없는 경우 사용합니다.

whatap.ini 생성
$ cp /usr/whatap/php/template.ini /usr/whatap/php/whatap.ini
$ vi /usr/whatap/php/whatap.ini

# 상단에 내용 추가
; Enable whatap extension module
extension=whatap.so
whatap.license=            # 발급된 라이센스 key
whatap.server.host=        # 발급된 서버 IP
whatap.app_name=           # 웹서버 구분 APHP, FPHP (apache : APHP, php-fpm : FPHP)
whatap.app_process_name=   # apache, php-fpm 의 프로세스 이름(httpd,php-fpm)

설정

설명

whatap.license

프로젝트 > 관리 > 에이전트 설치 페이지에서 발급된 라이센스 키를 확인할 수 있습니다.

whatap.server.host

프로젝트 > 관리 > 에이전트 설치 페이지에서 발급된 서버 IP를 확인할 수 있습니다.

whatap.app_name

Apache 서버는 ‘APHP’, php-fpm 은 ‘FPHP’를 사용합니다.

whatap.app_process_name

Apache 또는 php-fpm 의 실행 프로세스 이름 설정으로 정확한 프로세스명 입력하면, 해당 프로세스에 대한 사용 메모리를 수집합니다. 예) httpd, apach2, php-fpm, php-fpm 등.

PHP 명령어(CLI) 경로 확인
$ which php

/usr/bin/php
whatap-php 서비스(Service) 환경 변수 설정

$WHATAP_PHP_BIN 환경 변수에 PHP CLI 명령어의 경로를 설정합니다.

$ sudo vi /etc/init.d/whatap-php

export WHATAP_PHP_BIN=         # PHP 명령어 위치(/usr/bin/php)
PHP API 버전 확인

$WHATAP_PHP_BIN 환경 변수에 PHP CLI 명령어의 경로를 설정합니다.

$ sudo php -i | grep 'PHP API'

PHP API => 20100412
PHP ZTS(Zend Thread Safe) 지원 여부 확인
apache
$ sudo apachectl -V | grep MPM

Server MPM: Prefork               # ZTS 지원 안함
Server MPM: Worker               # ZTS 지원
PHP-FPM
$ sudo php-fpm -i | grep Thread

Thread Safety => disabled               # ZTS 지원 안함
Thread Safety => enabled               # ZTS 지원
PHP 확장 모듈(PHP Extension module) 경로 확인 및 설정
PHP 확장 모듈(PHP Extension module) 경로 확인
$ sudo php -i | grep extension_dir

extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
PHP 확장 모듈(PHP Extension module) 설정

PHP API 버전, PHP ZTS 지원 여부를 확인하여 환경에 적합한 라이브러리를 선택하여 PHP 확장 모듈(PHP Extension module) 경로에 whatap.so 파일명으로 복사합니다.

  • PHP ZTS를 지원할 경우 - whatap_zts_[PHP API 버전].so

  • PHP ZTS를 지원하지 않을 경우 - whatap_[PHP API 버전].so

    $ sudo cp /usr/whatap/php/modules/x64/whatap_20100412.so /usr/lib64/php/modules/whatap.so
whatap-php 서비스(Service) 환경 변수 설정

$WHATAP_PHP_EXT_HOME 환경변수에 PHP 확장 모듈 경로를 설정합니다.

$WHATAP_PHP_EXT_SRC 환경변수에 와탭 라이브러리 전체 파일 경로를 설정합니다.

$ sudo vi /etc/init.d/whatap-php

export WHATAP_PHP_EXT_HOME=   # PHP Extension 경로(/usr/lib64/php/modules)
export WHATAP_PHP_EXT_SRC=    # 와탭 라이브러리 경로 및 파일명
                              # (/usr/whatap/php/modules/x64/whatap_20100412.so)]
whatap.ini 설정
PHP 추가 ini 설정 경로 확인
$ sudo php -i | grep '.ini files'

Scan this dir for additional .ini files => /etc/php.d

whatap.ini를 해당 경로에 복사합니다.

$ sudo cp /usr/whatap/php/whatap.ini /etc/php.d/whtap/ini
PHP 추가 ini 설정 경로 확인 불가

PHP 컴파일(Compile) 설치 옵션 ‘--with-config-file-scan-dir=PATH‘이 설정 안된 경우에 발생합니다.

$ sudo php -i | grep '.ini files'

Scan this dir for additional .ini files => (none)

whatap.ini 파일 내용을 php.ini 마지막에 추가합니다.

$ php -i | grep 'php.ini'

Loaded Configuration File => /etc/php.ini

$ sudo vi php.ini

# 파일 마지막에 추가
[whatap]
Enable whatap extension module
extension=whatap.so
whatap.ext.error_enabled=true
whatap.ext.exception_enabled=true
whatap.trace_user_enabled=true
whatap.trace_user_using_ip=false

이외 옵션은 /usr/whatap/php/whatap.ini 를 사용합니다.

whatap-php 서비스(Service) 환경 변수 설정

$WHATAP_CONFIG_HOME 환경변수에 whatap.ini 경로를 설정합니다.

PHP 추가 ini 경로를 확인 할 수 없는 경우 whatap.ini를 생성한 /usr/whatap/php 경로를 설정합니다.

$ sudo vi /etc/init.d/whatap-php

export WHATAP_CONFIG_HOME=      # whatap.ini 경로(/etc/php.d)
서비스 재시작

Apache 및 PHP-FPM 서비스(Service)를 재시작 합니다.

whatap-php 서비스(Service)를 재시작 합니다.

Error: Not found PHP API

PHP 명령어(CLI)를 찾지 못하는 경우 발생합니다.

PHP 명령어(CLI)의 위치를 정확히 찾고, ‘PHP 확장 모듈(PHP Extension module) 및 whatap-php 서비스(Service) 선택 설치’ 항목을 진행합니다.

PHP API 버전 정보 확인
$ sudo php -i | grep 'PHP API'

PHP API => 20100412

1.4.2. Error: Not found PHP ini directory

PHP 환경 중 ‘Scan this dir for additional .ini files’ 항목의 값을 확인 하지 못하는 경우 발생합니다. PHP 컴파일(Compile) 설치 옵션 ‘--with-config-file-scan-dir=PATH’ 이 설정 안된 경우에 해당 환경정보가 없습니다. PHP 명령어의(CLI) 경로를 정확히 찾고, ‘PHP 확장 모듈(PHP Extension module) 및 whata-php 서비스(Service) 수동 설정’ 항목을 진행합니다.

$ sudo php -i | grep '.ini files'

Scan this dir for additional .ini files => (none)

1.4.3. 응답 시간 분포도 (히트맵)에 트랜잭션이 표시되지 않는 경우

CPU, Memory의 그래프는 표기 되지만 응답 시간 분포도(히트맵)가 표기 되지 않는 현상은 에이전트가 수집서버와 정상적으로 연결 되었지만, 트레이서가 정상적으로 PHP 확장 모듈(PHP Extension module)로 적용되지 않았거나, 설정 후 Apache 및 PHP-FRPM 서비스(Service)를 재시작 하지 않은 경우에 발생합니다.

PHP 확장 모듈(PHP Extension module) 확인
$ sudo php -m

 [PHP Modules]
bz2
calendar
Core
ctype
curl
date
…
whatap                 # 와탭 모듈 로드 확인
…
[Zend Modules]

PHP 확장 모듈(PHP Extension module) 적용을 확인 한 경우 Apache 및 PHP-FRPM 서비스(Service)를 재시작 합니다. 적용이 안된 경우는 정상 설치 되지 않은 것으로 whatap.so 또는 whatap.ini 파일 경로가 PHP 환경과 일치하는 지 확인합니다. ‘PHP 명령어(CLI) 경로 확인,’ PHP 확장 모듈(PHP Extension module) 경로 확인’, ‘PHP 추가 ini 설정 경로 확인’ 을 확인합니다.

2. Data

와탭 에이전트는 트랜잭션 성능, 주요 성능 통계 그리고 서비스와 자원에 대한 카운터를 수집합니다.

2.1. 트랜잭션 성능 추적

2.1.1. 트랜잭션 시작과 종료

트랜잭션이란 사용자 브라우저의 요청을 처리하기 위한 서버 사이드의 LUW(Logical Unit of Work)를 말합니다. 개별 웹서비스(URL) 요청에 대한 처리과정이 바로 트랜잭션인 것입니다. 웹 어플리케이션에서 트랜잭션은 웹서비스(URL)에 대한 HTTP Request를 받아 Response를 반환하는 과정입니다.

애플리케이션의 성능은 이 트랜잭션들의 성능으로 요약할 수 있습니다.

트랜잭션 성능은 트랜잭션 시작에서 부터 종료시점, 그리고 응답시간및 자원 사용량 혹은 트랜잭션 호출자의 속성등의 정보들을 포함합니다.

기본적으로 트랜잭션 응답 분포와 트랜잭션 통계를 통해서 트랜잭션 성능을 분석할 수있습니다.

트랜잭션의 이름

트랜잭션의 이름은 URL입니다. 단 Get 파라미터(Query String)는 제외 됩니다.

브라우저 요청
http://www.whatap.io/hr/apply.do?name='kim'
트랜잭션 이름
/hr/apply.do
와탭에서는 "웹서비스 이름" 과 "트랜잭션 이름"을 혼용해서 사용합니다. 서비스 특정 URL과 그에 대한 요청을 처리하기 위한 모듈로 볼수있고 트랜잭션 그 요청에 대한 처리 하나를 의미하기 때문에 둘의 이름은 동일하게 URL이라고 할 수있습니다.
트랜잭션 이름 정규화

MSA 기반의 시스템이 발전하면서 URL?파라미터 형식보다는 URL 패스에 파라미터를 넣는 방식을 많이 사용하게 된다.

http://www.whatap.io/hr/kim/apply.do

이렇게 패스파라미터를 그대로 트랜잭션 이름으로 사용하게 되면 통계적 관점의 성능 분석이 어렵게 됩니다. 따라서 정규화할 필요가 있습니다. 와탭은 이때 정규화를 위한 옵션과 기능을 제공하고 있습니다.

whatap.ini
 trace_normalize_urls=/hr/{name}/apply.do

위와 같이 설정하면 트랜잭션 이름이 /hello/kim → /hello/:name 이렇게 치환되어 수집됩니다. 만약 대상 url설정은 그대로 두고 기능만off하고자 한다면 다음과 같이 옵션을 지정할 수있습니다. 기본값은 true입니다.

whatap.ini
 trace_normalize_enabled=false

2.1.2. 트랜잭션 프로파일

트랜잭션 성능이 트랜잭션 시작과 종료사이의 요약 지표들이나 속성들을 의미한다면 트랜잭션 프로파일은 트랜잭션이 수행되는 과정중이 스텝들을 추적하는 것입니다.

트랜잭션이 느리거나 오류가 있다면 그 원인을 추적하기 위해서 수행 이력을스텝별로 추적할 필요가 있는데 이것을 트랜잭션 프로파일링이라고 합니다.

와탭이 수집하는 스텝의 종류에는 크게 SQL 스텝, HTTP CALL스탭, 메세지 스텝, SOCKET오픈 스텝, DB연결 스텝, 메소드 스텝등이 있습니다.

DB연결 스텝

수집방식: END
RDB에 대한 연결에 대한 성능을 포함합니다. 스텝 정보에는 이름,응답시간을 포함합니다.

SQL 스텝

수집방식: END
SQL에 대한 성능을 포함합니다. 스탭정보에는 연결정보,SQL문이 포함되어있습니다.

HTTP Call 스텝

수집방식: END
외부 http서비스 호출에 대한 성능을 포함합니다. 스텝 정보에는 url, host, port, 응답시간이 포함됩니다.

Message 스텝

수집방식: ADD
메세지 스텝을 프로파일을 수집하는 과정에서 비정형적인 모든 구간에 대한 이력을 수집할때 사용됩니다. file오픈 등등 혹은 사용자도 임의의 위치를 지정하는데 사용 할 수있습니다.

SOCKET 스탭

수집방식: ADD
Socket 오픈을 표현하는 스텝입니다.

METHOD 스탭

수집방식: END
메소드 응답시간을 추적합니다. 1초 이상의 메소드를 자동으로 추적합니다.

2.1.3. 트랜잭션 스탭 수집 방식

자바에이전트는 선형 수집 방식과 환형 수집방식을 제공합니다.

선형 수집

개별 트랜잭션 프로파일은 무한정 스텝을 수집할 수 없습니다. 트랜잭션 별로 길이가 제한된 버퍼에 프로파일 스텝을 저장합니다. 각 트랜잭션은 최대로 수집할 수있는 스텝의 수가 옵션으로 지정되어 있습니다.

profile_step_max_count

default: 1024
최대로 수집가능한 스텝수

profile_step_normal_count

default: 800
일반적으로 아무런 제약없이 수집되는 스텝수

profile_step_heavy_count

default : 1000
normal count를 초과한 경우에 스텝은 응답시간이 느린 스텝과 액티브 스택 스텝만 수집합니다.

profile_step_heavy_time

default:100
heavy count이내에서의 수집되는 스텝의 기준 시간은 profile_step_heavy_time입니다.

step buffer
Figure 1. Profile Step Buffer

수집되는 프로파일의 스텝 수가 heavy count를 초과하는 경우에는 액티브 스택만이 수집됩니. 단 이경우에도 최대 스텝 수는 profile_step_max_count를 넘을 수 없습니다.

2.2. 통계(리스트 데이터)

와탭 에이전트는 트랜잭션이나 SQL처럼 중요한 서비스 수행이력 통계를 수집합니다. 매 5분마다 목록을 만들고 서버로 전송합니다.

0분,5분,15분 등 매 5분마다 통계를 수집하고 서버로 전송합니다.

2.2.1. 트랜잭션 통계

트랜잭션 통계를 수집합니다. 매 5분마다 최대 5000개의 URL별 수행 통계를 수집하여 서버에 전송합니다. 만약 서로다른 URL의 수가 5분동안 5000개가 넘으면 무시됩니다.

칼럼 설명 타입

hash

URL 해쉬

u4

count

건수

u4

error

에러건수

u4

time_sum

응답시간의 합

u8

time_max

최대 응답시간

u4

sql_count

SQL 수행 건수

u4

sql_time

SQL수행시간의 합

u8

httpc_count

HTTP Call건수

u4

httpc_time

HTTP Call 시간의 합

u8

malloc_sum

메모리 사용량 SUM

u8

cpu_sum

CPU사용량 SUM

u8

2.2.2. SQL 수행 통계

5분동안의 SQL 수행 통계를 수집합니다. 5분동안 서로다른 SQL문장이 최대 5000까지만 허용이 됩니다.

칼럼 설명 타입

dbc

DB연결 정보의 Hash

u4

sql

SQL문 Hash

u4

count_total

수행 건수

u4

time_sum

응답시간의 합

u8

time_max

최대 응답시간

u4

service

SQL을 수행한 service중에 하나

u4

service(URL) hash는 5분동안 해당 SQL을 호출한 URL중 하나(마지막 호출 URL)를 분석 활용을 위해 수집합니다.

2.2.3. HTTPCall 수행 통계

5분동안의 Http Call 수행 통계를 수집합니다. 5분동안 서로다른 Http Call문장이 최대 5000까지만 허용이 됩니다.

칼럼 설명 타입

url

타겟 URL hash

u4

host

Host or ip

u4

port

Tcp Port

u4

count_total

수행 건수

u4

time_sum

응답시간의 합

u8

time_max

최대 응답시간

u4

service

Http Call을 수행한 service중에 하나

u4

2.2.4. 에러 통계

5분동안 발생한 서비스 에러에 대한 통계입니다. 서로다른 에러+트랜잭션이름을 키로 발생 건수를 수집합니다. 5분당 최대 1000가지 서로다른 에러를 통계화합니다.

칼럼 설명 타입

classHash

에러클래스

u4

service

트랜잭션 HASH

u4

msg

메세지 hash

u4

count

발생 건수

u4

2.2.5. IP별 호출 건수

IP별로 호출한 트랜잭션 건수을 통계적으로 수집합니다. 5분당 수집가능한 서로다른 IP수는 인스턴스당 최대 70000개 입니다.

칼럼 설명 타입

ip

ip주소

u4

count

건수

u4

2.2.6. UserAgent별 호출 건수

User Agnet 문자열의 Hash별로 호출 건수를 수집합니다. 5분당 수집가능한 서로다른 UserAgent Hash는 인스턴스당 최대 500개 입니다.

칼럼 설명 타입

hash

hash

u4

count

건수

u4

2.2.7. 트랜잭션 Caller 통계

멀티 서버가 rest 호출로 연결된 경우 Caller와 Callee간의 연관 통계를 수집할수있다. 이 데이터를 수집하기 위해서는 다음의 옵션을 먼저 설정해야 한다.

whatap.ini
//mtrace_rate=100
mtrace_spec=v1
stat_mtrace_enabled=true
msa
Figure 2. MSA 시스템

위와 같은 아키텍처에서 caller&callee통계는 api1와 api2에서만 조회할 수있습니다. 사용자 브라우저에서 호출되는 시스템에서는 Caller통계를 조회할 수 없습니다.

하지만 Caller쪽 서버에서 데이터를 전송해야하기 때문에 모든 서버에 적절한설정이 들어가야 합니다.

whatap.conf of [front]
mtrace_rate=100
mtrace_spec=v1
stat_mtrace_enabled=true
whatap.conf of [api1] & [api2]
mtrace_spec=v1
stat_mtrace_enabled=true

수집되는 통계 데이터는 다음과 같습니다. Callee쪽에서 조회되어야합니다.

칼럼 설명 타입

caller_pcode

Caller의 프로젝트(와탭) 코드

u8

caller_spec

Caller의 버전 문자열 hash

u4

caller_url

Caller의 URL hash

u4

spec

Callee의 버전 문자열 hash

u4

url

Callee URL hash

u4

count

수행 건수

u4

error

에러건수

u4

time

응답시간의 합

u8

2.2.8. 트랜잭션 도메인 통계

와탭에이전트는 도메일별 트랜잭션 통계를 수집할 수 있습니다. 하나의 서버에 비즈니스적인 이유등으로 여러개의 도메인을 분리하여 서비스 하는 시스템에서는 도메인 별 분석이 필요할 수있습니다. 그래서 front서버에서 유효하다

whatap.conf
stat_domain_enabled=true

수집되는 데이터는 도메인별 URL의 처리 현황을 파악할 수있습니다

칼럼 설명 타입

domain

서비스 도메인 hash

u4

url

트랜잭션 URL hash

u4

count

수행 건수

u4

error

에러건수

u4

time

응답시간의 합

u8

2.2.9. 트랜잭션 REFERER 통계

와탭에이전트는 Referer별 트랜잭션 통계를 수집할 수 있습니다. 업무에 딸서는 Referer별 분석이 필요할 수있습니다.

whatap.conf
stat_domain_enabled=true

수집되는 데이터는 도메인별 URL의 처리 현황을 파악할 수있습니다

칼럼 설명 타입

referer

Referer hash

u4

url

트랜잭션 URL hash

u4

count

수행 건수

u4

error

에러건수

u4

time

응답시간의 합

u8

2.3. 성능 카운터

와탭 에이전트가 수집하는 성능카운터는 크게 3가지로 분류할 수있습니다.

Counters
  • User : 실시간 사용자 혹은 방문사용자

  • Service : 트랜잭션,SQL,외부호출 건수및 응답, 에러율등

  • Resource : 시스템,프로세스 자원 사용량

2.3.1. User Counter

사용자는 모니터링 대상 시스템을 사용하는 클라이언트를 말한다. 클라이언트에는 다른시스테 또한 포함될 수있지만 일반적으로는 브라우저를 기준으로 사용자를 카운팅한다.

웹시스템 성능에서 사용자는 부하를 발생시키는 시작이기때문에 중요하다 사용자 추적을 위해서는 사용자는 어떤 기준으로 구분할 것이며 어떻게 카운팅 할 것인가에 대한 고려가 필요하다

사용자 구분

와탭 에이전트 사용자를 구분하기 위해 다양한 옵션을 제공합니다. 기본 값은 쿠키를 사용하며 PHP 기본 쿠키(PHPSESSID) 및 프레임워크 쿠키(ci_session, Laravel_session)를 기준으로 사용자를 구분합니다.

RemoteIP

가장 기본은 remote ip를 사용하여 사용자를 구분하는 것입니다. 하지만 remote ip 실제 사용자를 구분하는데 한계가 있습니다.

Cookie(WHATAP)

쿠키를 사용하여 사용자를 구분할 수있습니다.

whatap.ini
whatap.trace_user_using_ip=false
whatap.trace_user_set_cookie=true
  • 모든접속 클라이언트에 대한 UUID가 "WHATAP"이라는 쿠키에 셋팅합니다.

    Header Key

    http header에 전달되는 값으로 사용자를 구분할 수있습니다. .whatap.ini

whatap.trace_user_header_ticket=USER
사용자 카운팅

사용자를 카운팅하는 방법에 따라서 다른 목적으로 사용될 수있다. 동시 사용자는 현재 시스템을 사용하는 사용자의 수를 알기 위해서 측정하고 일일 액티브 사용자는 하룻동안 해당 서비스에 관심을 갖는 사용자가 몇명인지에 대한 비즈니스적인 관리를 위해 측정합니다.

실시간 사용자

최근 5분 동안 사용자 수를 카운팅합니다. 매5초마다 shifting하면 사용자를 카운팅합니다. 각 서버에서 카운팅된 숫자는 HyperLogLog알고리즘을 통해서 머지됩니다.

일일 방문(액티브) 사용자(DAU)

하룻동안 시스템에 접속한 사용자를 카운팅합니다. 24시간 동안 발생한 사용자를 hyperloglog를 통해서 계산합니다.

와탭에서는 장기간 사용자를 카운팅 하기 위해 사용자데이터에 대한 byte block을 서버로 수집합니다. 이 데이터를 hyperloglog로 머지하면 이론적으로 한달 이상의 맥티브 사용자를 계산 할 수 있습니다.

2.3.2. Service Counter

서비스 카운터에는 트랜잭션과 트랜잭션이 사용하는 SQL혹은 외부호출등에 대한 건수 응답시간 에러건수 등에 대한 성능지표가 표함된다.

Transaction Counter

트랜잭션을 수행하면 측정하는 카운터입니다.

  • 건수

  • 응답시간

  • 에러건수

Active Transaction Counter

진행중인 트랜잭션의 수를 카운팅합니다.

  • 건수

  • Active Status
    진행 상태는 METHOD,SQL,HTTPC,DBC,SOCKET 5가지 상태로 고정되어있습니다.

    1. METHOD - 일반 함수를 호출하는 상태

    2. SQL - db sql을 수행중인 상태

    3. HTTPC - 외부 Http Api(서비스)를 호출중인 상태

    4. DBC - DB연결을 요청한 상태, 일반적으로 Pool에서 가져옴

    5. SOCKET - TCP세션을 Connecting 중인 상태

SQL

SQL 수행 현황을 카운팅합니다.

  • 건수

  • 응답시간

  • 에러 건수

  • 패치 건수

HTTP Call

외부 Http 호출에 대한 현황을 카운팅 합니다.

  • 건수

  • 응답시간

  • 에러 건수

2.3.3. Resource Counter

서버자원 사용량을 카운팅합니다.

CPU(sys,usr,wait,steal,irq, cores)

CPU사용량 % 입니다. 각 종류별로 수집됩니다. 가상환경에서만 Steal이 의미가 있습니다. Cput Core 갯수를 같이 수집하고 있습니다.

Process CPU

자바 프로세스가 사용하는 CPU %입니다.

Memory

시스템 메모리 사용율(%) 입니다.

Swap

Swap메모리 사용율(%) 입니다.

Disk

Disk는 Java Process의 Current 디렉토리의 사용율(%) 입니다.

Heap(Total, Used)

시스템 전체 메모리를 Total로 표시하며, Apache 또는 PHP-FPM 실행 프로세스의 메모리 사용량을 합산하여 Used로 표시합니다. 데이터 단위는 KBytes 입니다.

3. 에이전트 제어와 상태 조회

각 에이전트 동작을 제어하거나 상태를 조회할 수 있습니다.

3.1. 부트 환경

에이전트는 시작하면 주요환경 정보를 모아 서버로 전송합니다. 이정보는 기동시의 에이전트 환경 상태를 확인할때 사용될 수있습니다. Yard서버에 저장해 두기 때문에 에이전트가 종료되어도 조회할 수있습니다.

와탭의 버전, Hostname, uptime 등의 정보들을 조회할 수 있습니다.

3.2. 환경 변수

에이전트에서는 현재의 환경 변수를 조회할 수있습니다. 화면의 요청을 받았을때 조회됩니다. 따라서 프로세스가 정지된 상태에서는 조회할 수 없습니다.

3.3. 모듈 의존성

현재 로딩되어 사용되고 있는 PHP extension 모듈과 그 버전을 조회할 수 있습니다.

3.4. 에이전트 상태

서비스로 동작하는 whatap-php 프로세스에 대해서 최근 하루의 상태를 확인합니다. CPU, Memory, Network 상태를 확인할 수 있습니다.

3.5. 설정

에이전트 실행옵션을 설정할 수있습니다. whatap.ini에 값을 운영중에 변경할 수 있습니다. Configure 쳅터에서 소개하고 있는 대부분의 옵션은 whatap.conf에 적용할 수있습니다

일반적으로 설정은 런타임에 바로 reload됩니다. 다만 해당 설정의 메커니즘상 Apache 또는 PHP-FPM이 기동될때 적용되는 옵션들은 재기동해야 할수 있습니다.

3.6. 에이전트 로그

현재 에이전트 HOME에서 ./logs/에 기록된 로그를 조회합니다.

## OPEN LOG FILE agent 20181106 00:00:00.610 ##
WhaTap Version 1.5.4 20180928 pid=47448

4. 설정

4.1. 에이전트 네이밍

whatap.object_name

Default : {type}-{ip2}-{ip3}-{process}
Type : String
애플리케이션을 식별하는 에이전트 이름(ONAME)체계입니다. ONAME을 토대로 OID가 생성됩니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.

명칭

설명

{type}

whatap.app_name 에 설정된 값을 사용합니다.

{ip#}

IP를 나누었을 때 #번째 자리를 사용합니다.

{process}

whatap.app_process_name 에 설정된 값을 사용합니다.

{hostname}

서버 호스트명을 사용합니다.

whatap.app_name

Default : NONE
Type : String
애플리케이션을 식별하는 에이전트 이름(ONAME)체계에 사용되는 애플리케이션 명. object_name의 {type}에 해당하는 값이다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.app_process_name

Default : NONE
Type : String
애플리케이션을 식별하는 에이전트 이름(ONAME)체계에 사용되는 애플리케이션 프로세스 명. 애플리케이션 서버의 CPU, Heap Memory등을 수집할 대상 프로셋를 설정합니다. object_name의 {process}에 해당하는 값이다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.

4.2. 에이전트 기능제어

whatap.stat_enabled

Default : true
Type : Boolean
통계정보 추적 기능을 활성화합니다. 5 분단위로 수집되는 트랜잭션, SQL, HTTPCALL, UserAgent, Client IP 등의 통계 데이터등이 해당됩니다.

whatap.license

Default : NONE
Type : String
에이전트 설치시 서버로부터 부여받은 라이센스를 지정합니다. 라이센스에는 에이전트가 속한 프로젝트와 보안 통신을 위한 암호키를 포함하고 있습니다.

whatap.realtime_user_thinktime_max

Default : 300000
Type : MiliSeconds
실시간 사용자 측정시 동일 사용자로 인정되는 최대 호출간격을 지정합니다.

whatap.time_sync_interval_ms

Default : 300000
Type : MiliSeconds
에이전트와 서버간 시간 동기화 주기를 지정합니다. 동기화 하지 않을 경우 0으로 지정합니다.

whatap.text_reset

Default : 0
Type : Int
와탭 에이전트는 한번 보낸 텍스트유형 데이터는 hash 처리되므로 다음날까지 재전송하지 않습니다. 이전 설정값과 다른 값을 설정하는 경우 재전송 합니다.

트랜잭션 URL, SQL String 등이 텍스트유형 데이터에 해당합니다.
whatap.ext.error_enabled

Default : true
Type : Boolean
PHP 확장 모듈(PHP Extension module) 에서 오류(Error) 정보를 수집하는 기능을 활성화 합니다. PHP 컴파일 설치로 php.ini 에 ‘[whatap]’ 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가합니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.ext.exception_enabled

Default : true
Type : Boolean
PHP 확장 모듈(PHP Extension module) 에서 예외 처리(Exception) 정보를 수집하는 기능을 활성화 합니다. PHP 컴파일 설치로 php.ini 에 [whatap] 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가합니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.profile_method_enabled

Default : true
Type : Boolean
실행시간이 1초(whatap.profile_method_time)를 초과하는 사용자 함수의 정보를 트랜잭션 상세 정보에서 확인 할 수 있습니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.profile_method_time

Default : 1000
Type : MiliSeconds
whatap.profile_method_enabled 설정 수집되는 함수의 실행시간을 설정할 수 있습니다. NOTE: Apache 및 PHP-FPM의 재시작 후 적용됩니다.

whatap.profile_method_stack_enabled

Default : false
Type : Boolean
사용자 함수의 스택정보를 트랜잭션 상세 정보에서 확인할 수 있습니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.

4.3. 에이전트 통신

whatap.server.host

Default : 127.0.0.1,127.0.0.1
Type : ip_address
에이전트가 수집한 데이터를 전송할 서버를 지정합니다. 수집서버 이중화로 2개 이상의 IP를 가진 경우 콤마(,)로 분리하여 지정할 수 있습니다. 지정된 IP 에는 수집서버 proxy 데몬이 리스닝 상태로 서비스 되어야 합니다.

whatap.server.port

Default : 6600
Type : tcp_port
수집서버 PORT 를 지정합니다. 포트는 하나만 지정할 수 있으므로 whatap_server_host 에 지정된 수집서버들은 동일 PORT 를 사용해야 합니다.

whatap.tcp_so_timeout

Default : 60000
Type : MiliSecond
수집서버와 통신하는 TCP세션의 Socket Timeout 값을 지정합니다.

whatap.tcp_connection_timeout

Default : 5000
Type : MiliSecond
수집서버와 통신하는 TCP세션의 Connection Timeout 값을 지정합니다.

whatap.net_send_max_bytes

Default : 5242880
Type : Byte
수집서버로 데이터를 전송할 때 한번에 전송되는 최대 크기를 지정합니다.

whatap.net_send_buffer_size

Default: 1024
Type: byte
데이터 전송을 하기 위해 가지고 있는 최대 바이트 크기입니다.

whatap.net_udp_port

Default : 6600
Type : tcp_port
와탭 에이전트는 트레이서에서 UDP를 통해 수집한 데이터를 수집서버로 전송합니다. 처음 UDP서버의 포트를 지정할 수 있다. 기본값으로 제공되는 6600포트가 사용 중일 때 이 옵션을 사용합니다. PHP 컴파일 설치로 php.ini 에 [whatap] 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가합니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.

4.4. 에이전트 로그 관리

whatap.log_keep_days

Default : 7
Type : Day
로그파일 보관기간을 설정합니다

4.5. 트랜잭션 프로파일링

whatap.profile_step_normal_count

Default: 1000
Type : Int
트랜잭션 프로파일의 최대 스텝 수를 지정합니다.

whatap.profile_step_max_count

Default: 1024
Type : Int
수집 가능한 프로파일 스텝의 최대 개수를 설정합니다. 수집된 프로파일 스텝 수가 이 값을 초과하면 이후 수집되는 스텝들은 모두 버려집니다.

whatap.profile_step_heavy_count

Default: 1000
Type : Int
기본 스텝의 수집 개수가 초과되면, 실행 시간이 profile_step_heavy_time을 초과하는 스텝만 수집합니다. 해당 스텝의 수집 가능한 개수를 설정합니다. Default 설정일 경우 profile_step_normal_count가 800 이면 최대 200개의 스텝이 수집됩니다.

whatap.profile_step_heavy_time

Default: 100
Type : MiliSecond
Heavy한 스텝의 기준을 지정 합니다. 지정된 값보다 수행시간이 긴 경우 profile_step_normal_count 를 초과하는 경우라도 profile_step_heavy_count 이내에서 기록됩니다.

whatap.profile_basetime

Default: 500
Type : MiliSecond
트랜잭션이 설정된 값 이하의 시간내에 종료된 경우 프로파일 정보를 수집하지 않습니다. 단, 5 분단위로 최초 호출된 URL, 에러가 발생한 트랜잭션에 대한 프로파일 정보는 수집됩니다.

whatap.query_string_enabled

Default: false
Type : Boolean
트랜잭션 URL의 쿼리 스트링을 함께 수집하는 기능을 활성화합니다. whatap.query_string_urls 에 등록된 URL만 적용됩니다.

whatap.query_string_urls

Default : NONE
Type : String
트랜잭션에서 쿼리 스트링을 수집 할 URL들을 등록합니다.

4.6. HTTP 트랜잭션 추적

whatap.profile_http_header_enabled

Default : false
Type : Boolean
프로파일 내역에 http 헤더 정보를 기록하고자 할 때 사용합니다.

whatap.profile_http_parameter_enabled

Default : false
Type : Boolean
프로파일 내역에 http 파라미터 정보를 기록하고자 할 때 사용합니다. 파라미터는 별도 보안키를 입력해야 조회 할 수 있습니다.

whatap.profile_http_parameter_url_prefix

Default : /
Type : String
프로파일 내역에 http 파라미터 정보를 기록할 대상 URL의 prefix를 정의 할 때 사용합니다.

whatap.profile_http_host_enabled

Default : false
Type : Boolean
트랜잭션의 Host 정보를 출력합니다. False일 경우 트랜잭션의 URL에 URI 만 표기하고 True 일 경우 /xxx.aaa.com/URL 형식으로 출력됩니다.

4.7. DB, SQL

whatap.trace_sql_normalize_enabled

Default : true
Type : Boolean
SQL문에서 리터럴 부분을 추출하여 SQL문을 정규화 하는 기능을 활성화 합니다. 리터럴 부분은 "#"으로 표기됩니다.

whatap.profile_sql_resource_enabled

Default : false
Type : Boolean
프로파일에서 SQL 이 수집될 때 해당 스텝에서 사용한 CPU 와 메모리 사용량을 추적합니다.

whatap.profile_sql_param_enabled

Default : false
Type : Boolean
프로파일 내역에 SQL 파라미터 정보를 기록하고자 할 때 사용합니다. 파라미터는 별도 보안키를 입력해야 조회 할 수 있습니다.

보안 키는 WAS서버 /usr/whatap/php/paramkey.txt 파일내에 6자리로 지정합니다.
paramkey.txt 파일이 존재하지 않는 경우 랜덤 값으로 자동 생성됩니다.

4.8. HTTPC, API Call

whatap.profile_httpc_resource_enabled

Default : false
Type : Boolean
프로파일에서 HTTP Call 스텝이 수집될 때 해당 스텝에서 사용한 CPU 와 메모리 사용량을 추적합니다.

whatap.trace_httpc_normalize_enabled

Default : true
Type : Boolean
트랜잭션내 HTTPC URL 을 파싱하여 정규화하는 기능을 활성화합니다.

whatap.trace_httpc_normalize_urls

Default : NONE
Type : String
정규화 할 HTTPC URL 패턴을 정의 한다. 호출 URL 패턴을 파싱하여 패스파라미터를 제거합니다.

ex) /a/{v}/b 라고 선언하면 a/123/b ⇒ a/{v}/b 로 치환한다
여러 개를 등록할 때는 콤마(,)를 사용합니다. 치환패턴 정리 후 보완필요

4.9. 사용자 수

whatap.trace_user_enabled

Default : true
Type : Boolean
실시간 사용자 집계 여부를 지정합니다. 이 값을 활성화 하는 경우 아이피 또는 PHP 기본 쿠키(PHPSESSID) 및 프레임워크 쿠키(ci_session, Laravel_session)를 기준으로 사용자를 추적합니다. PHP 컴파일 설치로 php.ini 에 [whatap] 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가합니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.trace_user_using_ip

Default : false
Type : Boolean
실시간 사용자의 구분을 IP로 하고자 하는 경우 설정합니다. 이 데이터는 Real Time User에서 확인 가능합니다. false 일 경우 PHP 기본 쿠키 및 프레임워크 쿠키(PHPSESSID, ci_session, Laravel_session)를 기준으로 사용자 구분을 합니다. PHP 컴파일 설치로 php.ini 에 [whatap] 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가한다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.trace_user_header_ticket

Default : false
Type : Boolean
사용자의 구분을 HTTP 헤더의 특정 값으로 구분하고 싶을 때 사용 할 HTTP 키를 지정합니다. 단, trace_user_using_ip 배타적으로 설정을 동시에 적용할 수 없다. HTTP키를 찾지 못하는 경우 Cookie를 기준으로 사용자를 구분합니다. PHP 컴파일 설치로 php.ini 에 [whatap] 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가합니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.trace_user_set_cookie

Default : false
Type : Boolean
사용자의 구분을 하기 위해 쿠키에 “WHATAP” 키 이름으로 사용자 구분 값을 설정한다. trace_user_using_ip 설정 되는 경우 반영되지 않습니다. trace_user_header_ticket이 설정되는 경우 header key를 찾지 못하는 경우 설정됩니다. HTTP키를 찾지 못하는 경우 Cookie를 기준으로 사용자를 구분합니다. PHP 컴파일 설치로 php.ini 에 [whatap] 항목이 있으면 whatap.ini가 아닌 php.ini 에 추가합니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.
whatap.trace_http_client_ip_header_key

Default : ""
Type : String
Client IP(Remote IP)의 정보를 특정 HTTP 헤더의 값으로 변경하여 설정하는 기능을 추가하였습니다. Proxy(프락시) 환경에서 X-Forwarded-For 헤더 값을 Client IP 로 설정할 수 있습니다.

Apache 및 PHP-FPM의 재시작 후 적용됩니다.

4.10. 트랜잭션 추적 옵션

whatap.trace_active_transaction_slow_time

Default : 3000
Type : MiliSecond
수집 정보를 확인하는 대시보드의 엑티브트랜잭션 아크이퀄라이저 그래프에서 Slow 구간으로 표기될 수 있는 트랜잭션 응답 시간의 기준을 지정합니다. 트랜잭션의 응답시간이 지정 시간을 초과할 경우 Slow 액티브트랜잭션의 개수에 포함됩니다.

whatap.trace_active_transaction_very_slow_time

Default : 8000
Type : MiliSecond

whatap.trace_active_transaction_lost_time

Default : 30000
Type : MiliSecond
트랜잭션의 종료를 기다리는 제한 시간. 5분안에 트랜잭션이 끝나지 않는 경우 트랜잭션을 정보를 더이상 수집하지 않습니다. 트랜잭션의 프로파일 정보에서 “Lost Connection”를 확인할 수 있습니다.

whatap.trace_normalize_enabled

Default : true
Type : Boolean
트랜잭션 URL을 변환하여 일반화하는 기능을 활성화 합니다.

whatap.trace_normalize_urls

Default : NONE
Type : String
트랜잭션 URL을 변환하고 일반화할 대상 URL을 지정합니다. 호출 URL패턴을 변환하여 패스 파라미터를 제거합니다. 예를 들어 “/a/{v}/b” 라고 설정하면 해당 형식으로 호출되는 트랜잭션 URL은 “/a/{v}/b” 형식으로 변환됩니다. 여러 개를 등록 할 때는 콤마(,)를 사용합니다.

4.11. 트랜잭션 연계 추적

mtrace_enabled

Default : false
Type : Boolean
트랜잰션 연계 추적 기능(MTID)을 사용 여부를 설정합니다. MTID 를 추적하면 등록된 모든 애플리케이션간의 호출을 확인 할 수 있습니다.

mtrace_rate

Default : 10
Type : Percentage
최초 트랜잭션이 발생할 때 발급받는 MTID(Multi Transaction ID)의 발급비율을 설정하는 옵션입니다.

mtrace_poid_key

Default : x-wtap-po
Type : String
MTID 추적에 사용할 Caller 프로젝트 정보를 전달할 Key Name을 설정합니다.

mtrace_caller_key

Default : x-wtap-mst
Type : String
MTID 추적에 사용할 Caller Key Name을 정합니다.

mtrace_callee_key

Default : x-wtap-tx
Type : String
MTID 추적에 사용할 Callee Key Name을 정합니다.

mtrace_send_url_length

Default : 80
Type : Int
Http Caller는 Callee에게 자신의 URL을 넘져줍니다. 이때 URL길이를 제한하고 있습니다. 이 길이를 지정합니다.

4.12. 통계

whatap.stat_domain_enabled

Default : false
Type : Boolean
도메인별 트랜잭션 통계를 수집합니다.

whatap.stat_domain_max_count

Default : 7000
Type : Int
5분동안 수집할 도메인별 트랜잭션 통계의 최대 레코드 수입니다.

whatap.stat_mtrace_enabled

Default : false
Type : Boolean
멀티 서버 트랜잭션에서 Callser&Callee간에 버전별 의존성 통계를 수집합니다.

whatap.mtrace_spec

Default: v1
Type : String
현 인스턴스의 애플리케이션 버전을 지정합니다. 임의의 문자열을 지정할 수 있습니다. 이 데이터는 호출통계를 위해 사용됩니다. NOTE: Apache 및 PHP-FPM의 재시작 후 적용됩니다.

whatap.stat_mtrace_max_count

Default : 7000
Type : Int
멀티 서버 트랜잭션에서 Callser&Callee간에 버전별 의존성 통계의 최대 레코드 수입니다.

whatap.stat_referer_enabled

Default : false
Type : Boolean
Referer별 트랜잭션 통계를 수집합니다.

whatap.stat_referer_max_count

Default : 7000
Type : Int
5분동안 한 JVM에서 수집할 Referer별 트랜잭션 통계의 최대 레코드 수입니다.

whatap.tx_caller_meter_enabled

Default : false
Type : Boolean
트랜잭션 정보로 토폴로지 통계를 생성합니다.

whatap.sql_dbc_meter_enabled

Default : false
Type : Boolean
Database 연결 정보로 토폴로지 통계를 생성합니다

whatap.httpc_host_meter_enabled

Default : false
Type : Boolean
Http 외부 호출 정보로 토폴로지 통계를 생성합니다.

whatap.okind

Default : ""
Type : String
그룹 토폴로지를 위해 임의로 부여합니다.
여러 에이전트를 같이 지정하여ㅡ 해당 그룹명으로 토폴로지를 확인 할 수 있습니다.