PHP Agent Guide
제목 : PHP Agent Guide
작성자 : WhaTap Support
이메일 : support@whatap.io
날짜 : 2018-11-12
버전 : 1.0.0
설명 : 본 문서는 WhaTap PHP Monitoring 에이전트에 대해 설명합니다.
1. 설치
1.1. 에이전트 실행 및 모니터링 개요
와탭 PHP 애플리케이션 모니터링은 PHP 기반 웹 애플리케이션 서버 모니터링 서비스를 제공합니다.
1.1.1. 에이전트 설치 방식 개요
PHP 모니터링 서비스를 사용하기 위해서는 모니터링 대상 애플리케이션에 모니터링 에이전트를 설치해야 합니다. 설치 방식은 리눅스 패키지 설치로 가능합니다.
-
와탭 저장소(Repository)를 설치합니다.
-
whatap-php 리눅스 패키지를(yum, apt-get) 설치합니다.
-
설정 스크립트를 실행합니다.
-
Apache 또는 PHP-FRPM을 재시작 합니다.
설정 스크립트를 통해서 트레이서는 PHP 확장 모듈(PHP Extension module)로 등록되고, 에이전트는 whatap-php 서비스(Service)로 실행됩니다.

1.1.2. 지원 환경
PHP버전 |
운영체제 |
데이터베이스 |
라이브러리 |
애플리케이션서버 |
PHP extension module로 동작 5.2, 5.3, 5.4, 5.5, 5.6 |
CentOS/Redhat 6.x (64bit) 이상 |
Oracle(Oci8), MySQL, MSSQL, Postgresql(psql) |
PDO, MySQLi, cURL |
Apache |
1.1.3. 구성 파일
모니터링 정보를 수집하기 위한 트레이서, 수집된 정보를 서버에 전송하기 위한 에이전트, 트레이서와 에이전트를 서버에 동적으로 적용하기 위한 설치 스크립트 파일로 구성됩니다.
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.4. 에이전트 이름 식별
와탭은 모니터링 정보 수집 대상인 애플리케이션 서버 식별을 위한 정보로 기본적으로 애플리케이션 서버로부터 수집한 정보를 활용합니다. 기본적으로 활용하는 정보는 애플리케이션 서버 종류, 애플리케이션 서버의 IP, 서비스 포트를 조합하여 애플리케이션 서버를 고유 식별자로 사용하게 되며 필요에 따라 사용자가 지정한 명칭을 사용하거나 패턴을 변경하여 사용하는 것도 가능합니다. 이때에는 꼭 고유한 값이어야 합니다.
애플리케이션 서버로부터 추출한 정보를 활용하는 이유는 애플리케이션 서버 정지, 네트워크 단절 또는 에이전트 문제로 인한 수집 서버와 에이전트의 통신 단절 상태가 복구되었을 경우, 재 접속된 에이전트로부터 송신되는 정보가 기존 에이전트로부터 송신된 정보와의 연속성을 유지하기 위해서 입니다. 와탭이 애플리케이션 서버를 식별하기 위해 사용하는 기본 패턴은 다음과 같습니다.
-
default: {type}-{ip2}-{ip3}-{process}-{dockerid}-{ips}
기본 패턴에 대한 변경은 whatap.ini에서 설정에서 가능합니다.
object_name default: {type}-{ip2}-{ip3}-{process}-{dockerid}-{ips}
설정 |
설명 |
type |
app_name |
Ip# |
Ip를 .으로 나누었을 때 #번째 자리(0부터) |
process |
app_process_name |
hostname |
호스트 명 |
dockerid |
도커 컨테이너 아이디 |
ips |
전체 아이피 정보 (ip4, ip6) |
1.2. 프로젝트 생성 및 라이센스 발급
1.3. 에이전트 설치
1.3.1. 패키지 설치
RedHat/CentOS
Debian/Ubuntu
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
1.3.2. PHP 확장 모듈 및 whatap-php서비스 등록
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, 7.3, 7.4, 8.0 -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, 7.3, 7.4, 8.0 )
- 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]
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
1.3.4. 실행
1.3.5. 업데이트
패키지 업데이트는 기존 설정을 유지한 채로 PHP 모니터링 서비스를 업데이트합니다. 0.2.7 이후 버전부터 정상적인 업데이트가 지원됩니다. 이전 버전은 삭제 후 설치를 진행해야 합니다.
아파치 실행 중 php extension 의 shared library(.so) 파일이 변경되는 경우 아파치 데몬이 비정상 종료 될 수 있습니다. 반드시 아파치 서버 중지상태에서 업데이트를 진행하셔야 안전합니다. |
Redhat/CentOS
패키지 정보 갱신을 위해 캐시 정보를 삭제합니다.
$ yum clean all
Apache 또는 PHP-FPM서비스(Service)를 중지합니다.
whatap-php 패키지를 업데이트 합니다.
$ yum update whatap-php
- NOTE
-
특정 버전으로 다운로드를 하고자 하는 경우에는 다음과 같이 버전을 명시합니다.
$ yum update whatap-php-<version>
Apache 또는 PHP-FPM서비스(Service)를 시작합니다 |
Debian/Ubuntu
패키지 정보 갱신을 위해 캐시 정보를 갱신합니다.
$ sudo apt-get update
Apache 또는 PHP-FPM서비스(Service)를 중지합니다.
whatap-php 패키지를 업데이트 합니다.
$ sudo apt-get install --only-upgrade whatap-php
- NOTE
-
특정 버전으로 다운로드를 하고자 하는 경우에는 다음과 같이 버전을 명시합니다.
$ sudo apt-get install whatap-php=<version>
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.10.txz
$ pkg install whatap-php-0.4.10.txz
# PHP 확장 모듈(PHP Extension module) 및 whatap-php서비스(Service) 등록
$ /usr/whatap/php/install.sh
- NOTE
-
특정 버전으로 다운로드를 하고자 하는 경우에는 <version> 부분에 특정 버전을 명시하여 다운로드를 진행합니다.
$ wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/freebsd/10/whatap-php-<version>.txz
$ pkg install whatap-php-<version>.txz
Apache 또는 PHP-FPM서비스(Service)를 시작합니다 |
1.3.6. 중지
일시 중지
1.3.7. Alpine Linux
설치
다운로드
whatap-php.tar.gz 을 다운받고 / 디렉토리 기준으로 압축을 해제합니다. /usr/whatap/php 디렉토리에 모니터링 설치파일이 생성됩니다.
wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/x86_64/whatap-php.tar.gz
tar -xvzf whatap-php.tar.gz -C /
PHP 확장 모듈(PHP Extension module) 및 whatap-php 데몬 실행
PHP 확장 모듈(PHP Extension module) 및 whatap-php 데몬을 자동으로 설치할 경우에 아래와 같이 적용합니다
$ 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 데몬을 자동으로 인식하지 못하는 경우 아래와 같이 선택 설치를 진행해야 합니다.
주로 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, 7.3, 7.4, 8.0
-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
Docker 설치 예제
Dockerfile
whatap-php.targ.gz 을 /usr/whatap/php 디렉토리에 압축을 해제합니다. install.sh 스크립트를 통해서 설치합니다.
FROM alpine
RUN apk update && apk upgrade
RUN apk add php7 php7-fpm php7-opcache
RUN apk add php7-gd php7-mysqli php7-zlib php7-curl
RUN apk add php7-pdo php7-pdo_mysql
RUN apk add php7-pgsql
RUN apk add apache2 php7-apache2
# Install WhaTap PHP monitoring
ADD whatap-php.tar.gz /
RUN wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/x86_64/whatap-php.tar.gz
RUN tar -xvzf whatap-php.tar.gz -C /
RUN /usr/whatap/php/install.sh -l <라이센스> -s <Whatap server Host> -e <php CLI 경로> -p <프로세스 이름>
1.3.8. 구글 앱 엔진 (Google Cloud App Engine) 설치
구글 앱 엔진에 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
1.3.9. AWS Elastic beanstalk 어플리케이션 설치
Elastic Beanstalk Configuration files(.ebextensions) 를 통해서 설치합니다.
".ebextensions" 디렉토리에 아래 config 파일을 추가한 후 신규버전을 배포합니다.
설치
01-WhaTap_install_repository_php.config 파일 설정
commands 항목을 설정하여 명령어를 실행합니다.
-
whatap repository 설치
-
whatap-php 패키지를 설치
-
/usr/whatap/php/install.sh 를 통해서 PHP extension을 설정
라이센스 키와 서버아이피는 "프로젝트 관리>에이전트 설치" 페이지에서 발급받고 확인할 수 있습니다.
$ vi 01-WhaTap_install_repository_php.config
commands:
01_Install_whatap_repository:
command: sudo rpm --import http://repo.whatap.io/centos/release.gpg
ignoreErrors: true
02_Install_whatap_repository:
command: echo "[whatap]" | sudo tee /etc/yum.repos.d/whatap.repo > /dev/null
ignoreErrors: true
03_Install_whatap_repository:
command: echo "name=whatap packages for enterprise linux" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
ignoreErrors: true
04_Install_whatap_repository:
command: echo "baseurl=http://repo.whatap.io/centos/latest/\$basearch" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
ignoreErrors: true
05_Install_whatap_repository:
command: echo "enabled=1" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
ignoreErrors: true
06_Install_whatap_repository:
command: echo "gpgcheck=0" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
ignoreErrors: true
07_Install_whatap_php:
command: sudo yum install -y whatap-php
ignoreErrors: true
08_Install_whatap_php_install.sh:
command: (echo "[라이센스 키 지정]"; echo "[서버아이피 지정(a.a.a.a/b.b.b.b)")| sudo /usr/whatap/php/install.sh
ignoreErrors: true
삭제
SSH 접속 수동 삭제
$ sudo /usr/whatap/php/install.sh remove
$ sudo yum remove -y whatap-php
$ sudo rm -f /etc/yum.repos.d/whatap.repo
$ vi 01-WhaTap_remove_php.config
commands:
01_Remove_whatap_php:
command: sudo /usr/whatap/php/install.sh remove
ignoreErrors: true
02_Remove_whatap_php:
command: sudo yum remove -y whatap-php
ignoreErrors: true
03_Remove_whatap_repository:
command: sudo rm -f /etc/yum.repos.d/whatap.repo
ignoreErrors: true
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 등. |
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) 지원 여부 확인
$ sudo apachectl -V | grep MPM
Server MPM: Prefork # ZTS 지원 안함
Server MPM: Worker # ZTS 지원
$ 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)]
1.4.2. 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)
1.4.3. 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.4. 응답 시간 분포도 (히트맵)에 트랜잭션이 표시되지 않는 경우
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-FPM 서비스(Service)를 재시작 합니다.
적용이 안된 경우는 정상 설치 되지 않은 것으로 whatap.so 또는 whatap.ini 파일 경로가 PHP 환경과 일치하는 지 확인합니다.
‘PHP 명령어(CLI) 경로 확인,’ PHP 확장 모듈(PHP Extension module) 경로 확인’, ‘PHP 추가 ini 설정 경로 확인’ 을 확인합니다.
1.4.5. Segmantaion fault, Sig bus error
PHP 모니터링을 적용한 후 서비스에 오류가 발생할 경우 Apache 또는 PHP-FPM 의 error log를 확인합니다.
error log 내용 중 segmantaion fault, sig bus 등의 오류 문구가 있는지 확인합니다. kill child process , exit child, exit process 등의 문구와 같이 발생합니다.
해당 오류가 발생하는 경우는 PHP Extension 모듈인 whatap.so 모듈에서 충돌이 발생하는 것으로 볼 수 있습니다.
PHP Extension 모듈인 whatap.so 를 중지한 후에 Apache 또는 PHP-FPM을 재시작해야 합니다.
서비스에 영향을 주지 않는 환경에서 Apache 및 PHP-FPM 에 Core dump 설정을 추가 한 후 whatap.so를 다시 로딩합니다. 이 후 오류가 발생하면 dump 파일을 생성됩니다.
dump 파일을 gdb 로 분석하여 원인을 해결 해야 합니다.
Core Dump 설정
덤프파일을 생성할 디렉토리의 권한을 부여합니다.
chmod 0777 /home/httpd-core
시스템 설정을 합니다.
ulimit -c unlimited
sysctl fs.suid_dumpable=2
sysctl kernel.core_uses_pid=0
sysctl kernel.core_pattern='| /home/httpd-core/core-%e.%p'
Apache
Apache conf 에 CoreDumpDirectory 항목을 설정합니다.
vi /etc/httpd/conf/httpd.conf
CoreDumpDirectory /home/httpd-core
Apache 를 재시작하면 설정이 완료 됩니다. 오류가 발생하면 dump 파일이 생성됩니다.
dump 파일이 생성되면 gdb를 통해 오류 원일을 확인합니다. bt full 명령어를 통해서 전체 스택 정보를 확인합니다.
# gdb /usr/sbin/httpd /home/httpd-core/core-httpd.31832
...
...
> bt full
2. 데이터
와탭 에이전트는 트랜잭션 성능, 주요 성능 통계 그리고 서비스와 자원에 대한 카운터를 수집합니다.
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
이렇게 패스파라미터를 그대로 트랜잭션 이름으로 사용하게 되면 통계적 관점의 성능 분석이 어렵게 됩니다. 따라서 정규화할 필요가 있습니다. 와탭은 이때 정규화를 위한 옵션과 기능을 제공하고 있습니다.
trace_normalize_urls=/hr/{name}/apply.do
위와 같이 설정하면 트랜잭션 이름이 /hello/kim → /hello/:name 이렇게 치환되어 수집됩니다. 만약 대상 url설정은 그대로 두고 기능만off하고자 한다면 다음과 같이 옵션을 지정할 수있습니다. 기본값은 true입니다.
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입니다.

수집되는 프로파일의 스텝 수가 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가지 서로다른 에러를 통계화합니다.
수집하는 에러 타입은 아래와 같습니다.
-
E_CORE_ERROR, E_PARSE, E_COMPILE_ERROR, E_ERROR, E_USER_ERROR, E_RECOVERABLE_ERROR
-
Exception
칼럼 | 설명 | 타입 |
---|---|---|
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간의 연관 통계를 수집할수있다. 이 데이터를 수집하기 위해서는 다음의 옵션을 먼저 설정해야 한다.
//mtrace_rate=100 mtrace_spec=v1 stat_mtrace_enabled=true

위와 같은 아키텍처에서 caller&callee통계는 api1와 api2에서만 조회할 수있습니다. 사용자 브라우저에서 호출되는 시스템에서는 Caller통계를 조회할 수 없습니다.
하지만 Caller쪽 서버에서 데이터를 전송해야하기 때문에 모든 서버에 적절한설정이 들어가야 합니다.
mtrace_rate=100 mtrace_spec=v1 stat_mtrace_enabled=true
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서버에서 유효하다
stat_domain_enabled=true
수집되는 데이터는 도메인별 URL의 처리 현황을 파악할 수있습니다
칼럼 | 설명 | 타입 |
---|---|---|
domain |
서비스 도메인 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.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가지 상태로 고정되어있습니다.-
METHOD - 일반 함수를 호출하는 상태
-
SQL - db sql을 수행중인 상태
-
HTTPC - 외부 Http Api(서비스)를 호출중인 상태
-
DBC - DB연결을 요청한 상태, 일반적으로 Pool에서 가져옴
-
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는 /(root) 디렉토리의 사용율(%) 입니다.
- Heap(Total, Used)
-
시스템 전체 메모리를 Total로 표시하며, Apache 또는 PHP-FPM 실행 프로세스의 메모리 사용량을 합산하여 Used로 표시합니다. 데이터 단위는 KBytes 입니다.
2.3.4. Apdex
Apdex (Appliccation Performance Index)
Apdex는 개방형표준을 따르는 애플리케이션 성능지표 입니다.
Apdex는 응답시간에 기반 하며 전체 요청중 만족과 허용 건 비율로 수치화합니다.
대시보드에 Apdex 그래프가 추가되었습니다.
Apdex는 사용자 만족도에 대한 지표로 활용할 수 있으며, 0 ~ 1 사이의 값을 갖습니다.
(만족 횟수 + (허용 횟수 * 0.5)) / 전체 요청 수
만족 (Satisfied, S) |
업무처리에 전혀 문제가 없음 ≤ 1.2초 (만족 S 기본값) |
허용 (Tolerating, T) |
사용자가 지연을 느끼나 업무처리는 가능함 ≤ 4.8초 (만족 S * 4) |
불만 (Frustrated, F) |
업무처리가 불가능함 > 4.8초 (허용 T 초과 및 오류) |
만족 S 기본값은 에이전트 설정 메뉴에서 변경 할 수 있습니다
whatap.apdex_time
-
Default : 1200
Type : millisecond

3. 에이전트 제어와 상태 조회
각 에이전트 동작을 제어하거나 상태를 조회할 수 있습니다.
3.1. 부트 환경
에이전트는 시작하면 주요환경 정보를 모아 서버로 전송합니다. 이정보는 기동시의 에이전트 환경 상태를 확인할때 사용될 수있습니다. Yard서버에 저장해 두기 때문에 에이전트가 종료되어도 조회할 수있습니다.
와탭의 버전, Hostname, uptime 등의 정보들을 조회할 수 있습니다.
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 : Milliseconds
실시간 사용자 측정시 동일 사용자로 인정되는 최대 호출간격을 지정합니다. - whatap.time_sync_interval_ms
-
Default : 300000
Type : Milliseconds
에이전트와 서버간 시간 동기화 주기를 지정합니다. 동기화 하지 않을 경우 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.debug_gc_percent
-
Default : 200
Type : Int
whatap-php 서비스 데몬의 gc 호출 간격을 늘려서 CPU 부하를 줄일수 있습니다.
CPU 부하가 줄어드는 대신 메모리 사용량이 늘어납니다. 최대 1000까지 적요됩니다.
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 : Millisecond
수집서버와 통신하는 TCP세션의 Socket Timeout 값을 지정합니다. - whatap.tcp_connection_timeout
-
Default : 5000
Type : Millisecond
수집서버와 통신하는 TCP세션의 Connection Timeout 값을 지정합니다. - whatap.net_send_max_bytes
-
Default : 5242880
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-php 서비스를 반드시 재시작해야 합니다. 에이전트 성능을 확대할 경우 Cpu, Memory 사용율이 증가할 수 있습니다. |
- whatap.tx_max_count
-
Default : 5000
Type : Int
트랜잭션을 최대 저장하는 개수 입니다. 동시에 처리되는 트랜잭션이 많을 경우 해당 크기를 더 늘려줍니다. - whatap.tx_default_capacity
-
Default : 101
Type : Int
트랜잭션을 저장하는 버퍼의 시작 크기 입니다. - whatap.tx_load_factor
-
Default : "0.75"
Type : String(Float)
트랜잭션을 저장하는 버퍼의 크기를 점차적으로 증가시키기 위한 기준입니다. 101개 에서 75%이상 저장되면 버퍼의 크기를 두배로 증가시킵니다. - whatap.queue_log_enabled
-
Default : false
Type : Boolean
queue 관련 로그를 출력합니다. - whatap.queue_tcp_enabled
-
Default : true
Type : Boolean
Tcp 데이터 송신 처리에 사용하는 Channel을 대신해서 별도의 Queue를 사용합니다.(데이터 우선 순위 Queue를 사용합니다.) - whatap.queue_tcp_sender_thread_count
-
Default : 2
Type : Int
Tcp 데이터 송신을 처리하는 쓰레드의 개수를 지정합니다. 개수를 늘리면 데이터 송신을 좀더 빠르게 처리 할 수 있습니다. - whatap.net_send_buffer_size
-
Default : 1024
Type : Int
Tcp 데이터 처리를 위한 Channel 버퍼를 설정합니다. - whatap.net_send_queue1_size
-
Default : 256
Type : Int
Tcp 데이터 처리를 위한 Queue 버퍼를 설정합니다. 우선순위가 높은 데이터를 위한 Queue 입니다. - whatap.net_send_queue2_size
-
Default : 5000
Type : Int
Tcp 데이터 처리를 위한 Queue 버퍼를 설정합니다. 프로파일 데이터를 위한 Queue 입니다. - whatap.queue_udp_enabled
-
Default : false
Type : Boolean
Udp 데이터 수신 처리에 Channel을 대신해서 별도의 Queue를 사용합니다. - whatap.queue_udp_size
-
Default : 2048
Type : Int
Udp 데이터 수신 버퍼를 설정합니다. Channel, Queue 버퍼를 설정합니다. - whatap.queue_udp_read_thread_count
-
Default : 3
Type : Int
Udp 데이터 수신을 처리하는 쓰레드의 개수를 지정합니다. 개수를 늘리면 UDP 버퍼에서 좀 더 빠르게 데이터를 읽어드릴 수 있습니다. - whatap.queue_udp_overflowed_size
-
Default : 4096
Type : Int
Udp 데이터 수신에 Queue를 사용하는 경우, overflowed Queue 버퍼 크기를 설정합니다. - whatap.queue_udp_process_thread_count
-
Default : 1
Type : Int
Udp 데이터를 처리하는 쓰레드의 개수를 지정합니다. 개수를 늘리면 UDP에서 읽은 데이터를 좀 더 빠르게 처리할 수 있습니다. - whatap.queue_profile_enabled
-
Default : false
Type : Boolean
Profile 정보 처리에 Channel 을 대신해서 별도의 Queue 를 사용합니다. - whatap.queue_profile_size
-
Default : 512
Type : Int
Profile 정보 처리를 위한 버퍼를 설정합니다. - whatap.queue_profile_process_thread_count
-
Default : 1
Type : Int
Profile 정보를 처리하는 쓰레드의 개수를 지정합니다. 개수를 늘리면 좀 더 빠르게 처리할 수 있습니다. - whatap.queue_text_enabled
-
Default : false
Type : Boolean
Text 데이터 처리를 위해 Channel 대신에 Queue 를 사용합니다. - whatap.queue_text_size
-
Default : 512
Type : Int
Text 데이터 처리를 위한 버퍼를 설정합니다.
4.6. 에이전트 알림
- whatap.hitmap_horiz_event_enabled
-
Default : false
Type : Boolean
이벤트 가로 라인 활성화 여부를 설정합니다.
히트맵의 응답시간 분포상, 응답시간이 지정시간(whatap.hitmap_hoirz_event_basetime) 이상인 트랜잭션이 동일 응답시간 구간에 연속하여 지정시간(whatap.hitmap_horiz_event_duration) 동안 발생할 경우 알림이 발생합니다.-
연속: X축(5초) 단위의 분포가 연속된 선으로 나타날 경우 (중간에 끊김이 있는 경우는 해당되지 않습니다.)
-
- whatap.hitmap_horiz_event_duration
-
Default : 30000
Type : Millisecond
가로줄 현상의 지속시간 설정합니다. - whatap.hitmap_horiz_event_basetime
-
Default : 10000
Type : Millisecond
응답시간의 기준을 설정합니다. - whatap.hitmap_horiz_event_error_only
-
Default : false
Type : Bollean
에러가 발생한 경우만 이벤트 알림을 발생합니다. - whatap.hitmap_horiz_event_interval
-
Default : 10000
Type : Millisecond
이벤트 알림 발행 시에 중복 이벤트 억제 시간을 지정합니다. 해당 시간 내에는 다시 발행되지 않습니다. - whatap.hitmap_ver_event_enabled
-
Default : false
Type : Boollean
이벤트 세로 라인 활성화 여부를 설정합니다. 히트맵의 응답시간 분포상, X축 단일 구간(5초)에 세로줄이 나타나는 현상이 지정시간(whatap.hitmap_ver_event_duration)에 해당하는 시간 동안 지속될 경우 알림이 발생합니다.-
세로 줄 현상 : 2.5초 ~ 80초를 표현하는 전체 100개 구간 중, 경고 구간이 마킹된 경우 [경고 알림]이 발생하며, 동일한 규칙으로 위험구간이 마킹된 경우 [위험 알림]이 발생합니다
-
- whatap.hitmap_ver_event_duration
-
Default : 30000
Type : Millisecond
세로줄 현상의 지속시간을 설정합니다. - whatap.hitmap_ver_event_error_only
-
Default : false
Type : Boollean
에러가 발생한 경우만 이벤트 알림을 발행합니다. - whatap.hitmap_ver_event_warning_percent
-
Default : 60
Type : Int
세로줄 현상의 경고 구간 시작 지점입니다. 종료지점은 위험구간 시작 지점 전까지 입니다. - whatap.hitmap_ver_event_fatal_percent
-
Default : 80
Type : Int
세로줄 현상의 위험 구간 시작 지점입니다. - whatap.hitmap_ver_event_interval
-
Default : 300000
Type : Millisecond
이벤트 알림 발행 시에 중복 이벤트 억제 시간을 지정합니다. 해당 시간 내에는 다시 발행되지 않습니다.
4.7. 트랜잭션 프로파일링
- 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 : Millisecond
Heavy한 스텝의 기준을 지정 합니다. 지정된 값보다 수행시간이 긴 경우 profile_step_normal_count 를 초과하는 경우라도 profile_step_heavy_count 이내에서 기록됩니다. - whatap.profile_basetime
-
Default: 500
Type : Millisecond
트랜잭션이 설정된 값 이하의 시간내에 종료된 경우 프로파일 정보를 수집하지 않습니다. 단, 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들을 등록합니다. - whatap.whatap.profile_compile_file_enabled
-
Default :false
Type : Boolean
compile_file, compile_string 함수의 추적 여부를 설정합니다.
PHP 내부 함수인 compile_file, compile_string 함수는 스크립트 실행 전에 컴파일하는 함수로 Main, include, require 및 autoload 스크립트의 컴파일 시점을 확인할 수 있습니다. 스크립트 파일 경로와 실행시간을 확인할 수 있습니다
Apache 및 PHP-FPM의 재시작 후 적용됩니다. |
- whatap.profile_compile_file_basetime
-
Default : 200
Type : Millisecond
실행시간의 기준을 설정합니다. 설정한 시간을 초과하여 실행되는 경우만 정보를 수집합니다.
whatap.profile_compile_file_basetime을 너무 작게 설정할 경우 너무 많이 수집하게 되어 서버에 부하를 줄 수 있습니다. |
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 : Milliseconds
whatap.profile_method_enabled 설정 수집되는 함수의 실행시간을 설정할 수 있습니다. NOTE: Apache 및 PHP-FPM의 재시작 후 적용됩니다. - whatap.profile_method_stack_enabled
-
Default : false
Type : Boolean
사용자 함수의 스택정보를 트랜잭션 상세 정보에서 확인할 수 있습니다.
Apache 및 PHP-FPM의 재시작 후 적용됩니다. |
- whatap.profile_internal_method_enabled
-
Default : true
Type : Boolean
PHP 내부 함수의 추적 여부를 설정합니다. 실행시간의 기준을 설정합니다. 설정한 시간을 초과하여 실행되는 경우만 정보를 수집합니다.
Apache 및 PHP-FPM의 재시작 후 적용됩니다. |
- whatap.profile_internal_method_time
-
Default : 1000
Type : Milliseconds
whatap.profile_method_enabled 설정 수집되는 함수의 실행시간을 설정할 수 있습니다. NOTE: Apache 및 PHP-FPM의 재시작 후 적용됩니다. - whatap.profile_internal_method_param_enabled
-
Default : 1000
Type : Milliseconds
whatap.profile_method_enabled 설정 수집되는 함수의 실행시간을 설정할 수 있습니다. NOTE: Apache 및 PHP-FPM의 재시작 후 적용됩니다. - whatap.net_udp_flush_start
-
Default : true
Type : Boolean
False : 트랜잭션 시작 시점을 수집하지 않습니다.
시작 시점을 수집하지 않아 진행중이 트랜잭션 수를 계산하는 액티브 트랜잭션 정보에 조금 늦게 반영될 수 있습니다. 액티브 스테이터스는 정상적으로 표기됩니다. |
- whatap.net_udp_profile_basetime_enabled
-
Default : False
Type : Boolean
True : 설정된 응답시간보다 빠른 트랜잭션의 프로파일 정보를 수집하지 않습니다.
- whatap.net_udp_profile_basetime
-
Default : 200
Type : Miliseconds
프로파일 정보 수집을 제외하는 트랜잭션의 응답시간을 설정합니다.
프로파일 정보를 수집하지 않기 때문에 SQL, HTTPC 등의 통계에는 반영되지 않습니다. |
- whatap.net_udp_trace_ignoretime_enabled
-
Default : False
Type : Boolean
True : 설정된 응답시간이 소요되는 트랜잭션 및 프로파일 정보를 수집하지 않습니다.
- whatap.net_udp_trace_ignoretime
-
Default : 30
Type : Miliseconds
트랜잭션 및 프로파일 정보 수집을 제외하는 트랜잭션의 응답시간을 설정합니다.
- whatap.shm_tx_counter_enable
-
Default : False
Type : Boolean
True : whatap.net_udp_trace_ignoretime_enabled 설정으로 트랜잭션의 정보 수집이 제외되는 경우 TPS, 평균 응답시간, Apdex 지표를 공유메모리에서 수집하면 제외된 트랜잭션의 정보가 통계에 반영됩니다.
수집안된 트랜잭션의 경우 TPS, 평균 응답시간, Apdex 지표에는 정상적으로 반영되지만, 그 외 통계 데이터에는 반영되지 않습니다. |
4.8. HTTP 트랜잭션 추적
- whatap.profile_http_header_enabled
-
Default : false
Type : Boolean
프로파일 내역에 http 헤더 정보를 기록하고자 할 때 사용합니다. - whatap.profile_http_header_ignore_keys
-
Default : "host,accept,user-agent,referer, accept-language, connection"
Type : string
HTTP Header 이름을 지정해서 수집 정보에서 제외 시키는 기능을 추가했습니다. 지정된 HTTP Header 이름의 값은 수집에서 제외 되며, "#"으로 표기 됩니다.
- whatap.profile_http_parameter_enabled
-
Default : false
Type : Boolean
프로파일 내역에 http 파라미터 정보를 기록하고자 할 때 사용합니다.
파라미터는 별도 보안키를 입력해야 조회 할 수 있습니다.Get, Post 파라메터 중 text 타입의 이름 과 값을 수집합니다.
최대 40개 (Get 20개, Post 20개) 를 수집하며 파라메터 이름과 값은 최대 256 byte 까지 수집됩니다.파라메터 정보는 별도 암호화되어 전송되며, 해당 애플리케이션 서버의 /usr/whatap/php/paramkey.txt 에 있는 키로 복호화하여 볼 수 있습니다.
- 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 형식으로 출력됩니다. - whatap.biz_exceptions
-
Default : Empty
Type : String
특정 Error 또는 Exception 을 Business Exception으로 지정합니다. 히트맵에서는 에러로 표기되지 않고 통계정보에만 수집됩니다.
수집되는 Error Class 명과 동일하게 적용합니다. 콤마를 구분자로 하여 여러개를 등록할 수 있습니다. - whatap.ignore_exceptions
-
Default : NONE
Type : String
무시할 Exception을 등록합니다. 여기에 등록되면 에러 자체가 무시됩니다. - whatap.ignore_exceptions
-
Exception 의 경우 Custom Exception Class 가 정의되어 있지 않으면, 기본으로 "Exception" 으로 수집됩니다.
특정 Exception을 구분하기 위해서는 Custom Exception Class를 정의하고 해당 이름을 지정하면 제외 시킬 수 있습니다.
4.9. 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 파일이 존재하지 않는 경우 랜덤 값으로 자동 생성됩니다. |
- whatap.profile_sql_comment_enabled
-
Default : false
Type : Boolean
수집하는 SQL 문의 주석을 삭제합니다. false일 경우 주석을 제외한 SQL 문을 수집합니다.
설정을 통해 주석을 포함하거나 삭제 할 수 있습니다. - whatap.profile_db_connection_map_size
-
Default : 20
Type : Int
동시에 연결이 유지되는 DB Connection 정보를 최대로 저장할 수 있는 크기 입니다.
초과하는 DB Connection 연결 시 오래된 정보부터 삭제 됩니다.
Apache 및 PHP-FPM의 재시작 후 적용됩니다. |
- whatap.profile_mysql_return_enabled
-
Default : True
Type : BooleanTrue : Mysql 라이브러리 함수의 결과가 False 일때 오류로 표기하는 기능을 활성화합니다.
- whatap.profile_mysql_error_info_enabled
-
Default : True
Type : BooleanTrue : Mysql 라이브러리 함수의 결과값이 False 일때 에러 메세지 정보 수집하는 기능을 활성화합니다.
whatap.profile_mysql_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_mysql_error_ignore_empty
-
Default : True
Type : BooleanFalse :오류 코드 또는 오류 메세시 내용이 없을 때 정상 결과로 표기합니다.
whatap.profile_mysql_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_mysqli_return_enabled
-
Default : True
Type : BooleanTrue : Mysqli 라이브러리 함수의 결과가 False 일때 오류로 표기하는 기능을 활성화합니다.
- whatap.profile_mysqli_error_info_enabled
-
Default : True
Type : BooleanTrue : Mysqli 라이브러리 함수의 결과값이 False 일때 에러 메세지 정보 수집하는 기능을 활성화합니다.
whatap.profile_mysqli_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_mysqli_error_ignore_empty
-
Default : True
Type : BooleanFalse :오류 코드 또는 오류 메세시 내용이 없을 때 정상 결과로 표기합니다.
whatap.profile_mysqli_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_pdo_return_enabled
-
Default : True
Type : BooleanTrue : pdo 라이브러리 함수의 결과가 False 일때 오류로 표기하는 기능을 활성화합니다.
- whatap.profile_pdo_error_info_enabled
-
Default : True
Type : BooleanTrue : Mysql 라이브러리 함수의 결과값이 False 일때 에러 메세지 정보 수집하는 기능을 활성화합니다.
whatap.profile_pdo_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_pdo_error_ignore_empty
-
Default : True
Type : BooleanFalse :오류 코드 또는 오류 메세시 내용이 없을 때 정상 결과로 표기합니다.
whatap.profile_pdo_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_pdo_return_enabled
-
Default : True
Type : BooleanTrue : pdo 라이브러리 함수의 결과가 False 일때 오류로 표기하는 기능을 활성화합니다.
- whatap.profile_pgsql_error_info_enabled
-
Default : True
Type : BooleanTrue : pgsql(Posgressql) 라이브러리 함수의 결과값이 False 일때 에러 메세지 정보 수집하는 기능을 활성화합니다.
whatap.profile_pgsql_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_pgsql_error_ignore_empty
-
Default : True
Type : BooleanFalse :오류 코드 또는 오류 메세시 내용이 없을 때 정상 결과로 표기합니다.
whatap.profile_pgsql_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_oci8_return_enabled
-
Default : True
Type : BooleanTrue : oci8(Oracle) 라이브러리 함수의 결과가 False 일때 오류로 표기하는 기능을 활성화합니다.
- whatap.profile_oci8_error_info_enabled
-
Default : True
Type : BooleanTrue : Mysql 라이브러리 함수의 결과값이 False 일때 에러 메세지 정보 수집하는 기능을 활성화합니다.
whatap.profile_pdo_return_enabled 설정이 false 인 경우는 적용되지 않습니다. - whatap.profile_pdo_error_ignore_empty
-
Default : True
Type : BooleanFalse :오류 코드 또는 오류 메세시 내용이 없을 때 정상 결과로 표기합니다.
whatap.profile_pdo_return_enabled 설정이 false 인 경우는 적용되지 않습니다.
4.10. 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 로 치환한다 여러 개를 등록할 때는 콤마(,)를 사용합니다. 치환패턴 정리 후 보완필요 |
- whatap.profile_curl_return_enabled
-
Default : True
Type : BooleanTrue : curl 라이브러리 함수의 결과가 False 일때 오류로 표기하는 기능을 활성화합니다.
- whatap.profile_curl_error_info_enabled
-
Default : True
Type : BooleanTrue : curl 라이브러리 함수의 결과값이 False 일때 에러 메세지 정보 수집하는 기능을 활성화합니다.
whatap.profile_curl_return_enabled 설정이 false 인 경우는 적용되지 않습니다.-
cURL 라이브러리의 오류 타입은 HttpConnectionReturnFalse
뒤에 오류 번호가 추가된 형식입니다.호출 URL의 http 결과 코드가 400 이상인 경우 오류타입을 추가했습니다.
HttpConnectionServerError([결과코드])예) HttpConnectionReturnFalse(6), HttpConnectionServerError(500)
-
- whatap.profile_curl_error_ignore_empty
-
Default : True
Type : BooleanFalse :오류 코드 또는 오류 메세시 내용이 없을 때 정상 결과로 표기합니다.
whatap.profile_curl_return_enabled 설정이 false 인 경우는 적용되지 않습니다.
4.11. 사용자 수
- 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_cookie_keys
-
Default : "PHPSESSID,ci_session,laravel_session"
Type : String
PHP 내부의 session.name 값을 지정하여 사용자를 식별할 수 있습니다.
기본 "PHPSESSID"를 쿠키의 키 이름으로 사용하지 않고, 다른 이름으로 사용할 때 설정합니다.
콤마를 구분자로 여러개의 값을 설정할 수 있습니다.
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 : "X-Forwarded-For"
Type : String
Client IP(Remote IP)의 정보를 특정 HTTP 헤더의 값으로 변경하여 설정하는 기능을 추가하였습니다. Proxy(프락시) 환경에서 X-Forwarded-For 헤더 값을 Client IP 로 설정할 수 있습니다.
Apache 및 PHP-FPM의 재시작 후 적용됩니다. |
whatap.trace_http_client_ip_header_key_enabled
-
Default : True
Type : BooleanFalse 로 설정하면 HTTP Header 는 무시하고, Remote IP 값으로 클라이언트 아이피를 설정합니다.
4.12. 트랜잭션 추적 옵션
- whatap.trace_active_transaction_slow_time
-
Default : 3000
Type : Millisecond
수집 정보를 확인하는 대시보드의 엑티브트랜잭션 아크이퀄라이저 그래프에서 Slow 구간으로 표기될 수 있는 트랜잭션 응답 시간의 기준을 지정합니다. 트랜잭션의 응답시간이 지정 시간을 초과할 경우 Slow 액티브트랜잭션의 개수에 포함됩니다. - whatap.trace_active_transaction_very_slow_time
-
Default : 8000
Type : Millisecond - whatap.trace_active_transaction_lost_time
-
Default : 30000
Type : Millisecond
트랜잭션의 종료를 기다리는 제한 시간. 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” 형식으로 변환됩니다. 여러 개를 등록 할 때는 콤마(,)를 사용합니다. - whatap.trace_ignore_url_set
-
Default : 0
Type : String
특정 URL을 설정하면 트랜잭션 추적 대상에서 제외됩니다. 설정된 URL은 트랜잭션 정보를 수집하지 않아, 트랜잭션 목록에서 확인되지 않습니다. 트랜잭션 추적 대상에서 제외할 URL을 지정합니다. 여러개를 지정할경우 콤마(,)로 구분합니다. - whatap.trace_ignore_url_prefix
-
Default : 0
Type : String
트랜잭션 추적 대상에서 제외할 URL prefix를 지정합니다. - whatap.trace_useragent_enabled
-
Default : False
Type : Boolean
True : 트랜잭션의 유저 에이전트 정보를 수집합니다. - whatap.trace_referer_enabled
-
Default : False
Type : Boolean
True : 트랜잭션의 Refere 정보를 수집합니다.
4.13. 트랜잭션 연계 추적
- whatap.mtrace_enabled
-
Default : false
Type : Boolean
트랜잰션 연계 추적 기능(MTID)을 사용 여부를 설정합니다. MTID 를 추적하면 등록된 모든 애플리케이션간의 호출을 확인 할 수 있습니다. - whatap.mtrace_rate
-
Default : 10
Type : Percentage
최초 트랜잭션이 발생할 때 발급받는 MTID(Multi Transaction ID)의 발급비율을 설정하는 옵션입니다. - whatap.mtrace_poid_key
-
Default : x-wtap-po
Type : String
MTID 추적에 사용할 Caller 프로젝트 정보를 전달할 Key Name을 설정합니다. - whatap.mtrace_caller_key
-
Default : x-wtap-mst
Type : String
MTID 추적에 사용할 Caller Key Name을 정합니다. - whatap.mtrace_callee_key
-
Default : x-wtap-tx
Type : String
MTID 추적에 사용할 Callee Key Name을 정합니다. - whatap.mtrace_send_url_length
-
Default : 80
Type : Int
Http Caller는 Callee에게 자신의 URL을 넘져줍니다. 이때 URL길이를 제한하고 있습니다. 이 길이를 지정합니다.
4.14. Apdex
- whatap.apdex_time
-
Default : 1200
Type : millisecond
만족 S 기본값은 에이전트 설정 메뉴에서 변경 할 수 있습니다
Apdex는 사용자 만족도에 대한 지표로 활용할 수 있으며, 0 ~ 1 사이의 값을 갖습니다.
(만족 횟수 + (허용 횟수 * 0.5)) / 전체 요청 수
만족 (Satisfied, S) |
업무처리에 전혀 문제가 없음 ≤ 1.2초 (만족 S 기본값) |
허용 (Tolerating, T) |
사용자가 지연을 느끼나 업무처리는 가능함 ≤ 4.8초 (만족 S * 4) |
불만 (Frustrated, F) |
업무처리가 불가능함 > 4.8초 (허용 T 초과 및 오류) |
4.15. 통계
- 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.stat_referer_format
-
Default : 7000
Type : Int
값 | 설명 |
---|---|
0 |
전체 (도메인 + 경로 + 쿼리 파라메터) |
1 |
도메인 (http://www.aa.com) |
2 |
도메인 및 경로(http://www.aa.com/aa.php) |
3 |
경로 (/aa.php) |
- 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
그룹 토폴로지를 위해 임의로 부여합니다.
여러 에이전트를 같이 지정하여ㅡ 해당 그룹명으로 토폴로지를 확인 할 수 있습니다.
4.16. 공유메모리
- whatap.shm_enabled
-
Default : ""
Type : String
공유메모리 사용 여부를 설정합니다.
PHP extension(whatap.so) 와 whatap-php service 간에 공유메모리를 이용한 IPC 기능을 추가했습니다.
shm_key의 값으로 설정된 키로 생성합니다. 이미 키가 사용되고 있다면 다른 키를 설정할 수 있습니다.
whatap-php service에서 공유메모리 생성 및 삭제를 관리합니다. PHP extension 에서는 조회기능만 수행합니다.
Apache 또는 PHP-FPM의 재시작 후 적용됩니다. |
- whatap.shm_key
-
Default : ""
Type : String
공유메모리를 생성할 때 필요한 키 정보입니다.
Apache 또는 PHP-FPM의 재시작 그리고 whatap-php 서비스도 재시작해야 적용됩니다. |
- whatap.active_stat_enabled
-
Default : true
Type : Boolean
액티브 스테이터스 사용 여부를 설정합니다.
공유메모리를 통해 진행중인 요청의 현재 상태를 5초 간격으로 수집합니다.
대시보드 화면에 액티브 스테이터스 그래프가 표기됩니다. 상태는 일반 함수, SQL, DB connection, 외부 HTTP 연결, 소켓 연결이 있으며 각 상태별로 진행중인 요청 개수를 표시합니다.
Apache 또는 PHP-FPM가 재시작되면 진행중인 프로세스가 처리 중에 종료되면, 정상적인 액티브 스테이터스 완료 처리가 되지 않아 오차가 발생할 수 있습니다. 액티브 트랜잭션 수와 많은 차이가 발생하는 경우, 설정에서 whatap.active_stat_enabled를 false로 설정한 후, 대시보드에서 0건으로 초기화 되면 다시 true로 설정합니다. |