PHP Agent Guide WhaTap Support Version 1.0.0
Table of Contents PHP Agent Guide........................................................................................... 1 1. Install............................................................................................... 2 1.1. 에이전트실행및모니터링개요.......................................................................... 2 1.2. 프로젝트생성및라이센스발급.......................................................................... 3 1.3. 에이전트설치...................................................................................... 6 1.4. 설치오류해결..................................................................................... 16 2. Data............................................................................................... 21 2.1. 트랜잭션성능추적.................................................................................. 21 2.2. 통계 ( 리스트데이터 )................................................................................ 23 2.3. 성능카운터....................................................................................... 27 3. 에이전트제어와상태조회............................................................................... 30 3.1. 부트환경......................................................................................... 30 3.2. 환경변수......................................................................................... 30 3.3. 모듈의존성....................................................................................... 30 3.4. 에이전트상태..................................................................................... 30 3.5. 설정............................................................................................ 30 3.6. 에이전트로그..................................................................................... 30 4. 설정................................................................................................ 31 4.1. 에이전트네이밍.................................................................................... 31 4.2. 에이전트기능제어.................................................................................. 31 4.3. 에이전트통신..................................................................................... 33 4.4. 에이전트로그관리.................................................................................. 33 4.5. 트랜잭션프로파일링................................................................................ 34 4.6. HTTP 트랜잭션추적................................................................................. 35 4.7. DB, SQL......................................................................................... 35 4.8. HTTPC, API Call................................................................................... 36 4.9. 사용자수......................................................................................... 36 4.10. 트랜잭션추적옵션................................................................................. 37 4.11. 트랜잭션연계추적................................................................................. 37 4.12. 통계........................................................................................... 38
Preface PHP Agent Guide 제목 : PHP Agent Guide 작성자 : WhaTap Support 이메일 : support@whatap.io 날짜 : 2019-03-29 버전 : 1.0.0 설명 : 본문서는 WhaTap PHP Monitoring 에이전트에대해설명합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 1
1.1. 에이전트실행및모니터링개요 Chapter 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) 로 실행됩니다. 1.1.2. 구성파일 모니터링정보를수집하기위한트레이서, 수집된정보를서버에전송하기위한에이전트, 트레이서와에이전트를서버에동적으로적용하기위한 설치스크립트파일로구성됩니다. PHP 모니터링서비스를구성하는각파일의역할은다음과같습니다. 파일명 whatap_#_#.so 설명 트레이서 PHP 확장모듈 (PHP Extension module) 로추가되어정보를수집하고수집된정보를에이전트로전송하는라이브러리입니다. whatap-php(whatap_php) 에이전트, 트레이서에서 UDP 로전달된정보를수집서버로전송하는프로그램입니다. /etc/init.d/whatap-php 서비스스크립트 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 2
1.2. 프로젝트생성및라이센스발급 whatap_php whatap.ini whatap-install-#.log whatap-boot-#.log 서비스실행파일 애플리케이션서버의데이터를수집하는 PHP 확장모듈 (PHP Extension module) 의설정정보, 수집서버의주소와서버의프로젝트라이센스키가입력되는파일입니다. 설치과정에대한로그파일입니다. (/usr/whata/php/logs) 에이전트로그파일입니다. (/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 hostname app_process_name 호스트명 1.2. 프로젝트생성및라이센스발급 1.2.1. 프로젝트생성 서버를등록하기위해우선프로젝트를생성합니다. 추가버튼을선택하면아래와같이프로젝트생성창이나타납니다. PHP 아이콘을선택한뒤, 희망하는프로젝트명과데이터서버지역 (Region), 소속하게될그룹을선택한뒤프로젝트를생성합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 3
1.2. 프로젝트생성및라이센스발급 이후, 생성된프로젝트를클릭하여관리화면에진입합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 4
1.2. 프로젝트생성및라이센스발급 1.2.2. 라이센스발급 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 5
1.3. 에이전트설치 프로젝트관리화면에서는우선적으로라이선스를발급받습니다. 라이센스키는프로젝트별로귀속되기때문에, 유출되거나배포되어서는 안됩니다. 반드시본인프로젝트에서버를등록할때에만이용하시기바랍니다. 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 6
1.3. 에이전트설치 패키지저장소 (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) 를자동으로인식하지못하는경우아래와같이선택설치를진행해야 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 7
1.3. 에이전트설치 합니다. 주로 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 기본환경을확인합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 8
1.3. 에이전트설치 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 [Zend Modules] # whatap 모듈실행확인 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 9
1.3. 에이전트설치 whatap-php 서비스 (Service) 상태를확인합니다. $ service whatap-php status PHP 모니터링연결확인 애플리케이션서버목록에서설정된서버가추가되었는지확인합니다 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 이후버전부터정상적인업데이트가지원됩니다. 이전 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 10
1.3. 에이전트설치 버전은삭제후설치를진행해야합니다. 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. 중지 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 11
1.3. 에이전트설치 일시중지 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 12
1.3. 에이전트설치 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 서비스를실행하도록설정합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 13
1.3. 에이전트설치 # 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 송신을허용해야합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 14
1.3. 에이전트설치 배포 Google Cloud SDK 를통해서설정된 app.yaml 파일과 Dockerfile 을배포합니다. $ gcloud app deploy 구글앱엔진인스턴스확인 구글클라우드콘솔에서앱엔진의생성된인스턴스를확인합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 15
1.4. 설치오류해결 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 등. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 16
1.4. 설치오류해결 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 Server MPM: Worker # ZTS 지원안함 # ZTS 지원 PHP-FPM $ sudo php-fpm -i grep Thread Thread Safety => disabled Thread Safety => enabled # ZTS 지원안함 # 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 17
1.4. 설치오류해결 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= export WHATAP_PHP_EXT_SRC= # PHP Extension 경로 (/usr/lib64/php/modules) # 와탭라이브러리경로및파일명 # (/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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 18
1.4. 설치오류해결 이외옵션은 /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) 설치옵션 --withconfig-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) 확인 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 19
1.4. 설치오류해결 $ 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 설정경로확인 을확인합니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 20
2.1. 트랜잭션성능추적 Chapter 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 21
2.1. 트랜잭션성능추적 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 일반적으로아무런제약없이수집되는스텝수 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 22
2.2. 통계 ( 리스트데이터 ) profile_step_heavy_count default : 1000 normal count 를초과한경우에스텝은응답시간이느린스텝과액티브스택스텝만수집합니다. profile_step_heavy_time default:100 heavy count 이내에서의수집되는스텝의기준시간은 profile_step_heavy_time 입니다. 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 23
2.2. 통계 ( 리스트데이터 ) 칼럼설명타입 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 24
2.2. 통계 ( 리스트데이터 ) 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 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 25
2.2. 통계 ( 리스트데이터 ) 칼럼설명타입 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 26
2.3. 성능카운터 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 알고리즘을 통해서머지됩니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 27
2.3. 성능카운터 일일방문 ( 액티브 ) 사용자 (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 호출에대한현황을카운팅합니다. 건수 응답시간 에러건수 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 28
2.3. 성능카운터 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 입니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 29
3.1. 부트환경 Chapter 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 30
4.1. 에이전트네이밍 Chapter 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 통계정보추적기능을활성화합니다. 5 분단위로수집되는트랜잭션, SQL, HTTPCALL, UserAgent, Client IP 등의통계데이터등이해당됩니다. whatap.license Default : NONE Type : String 에이전트설치시서버로부터부여받은라이센스를지정합니다. 라이센스에는에이전트가속한프로젝트와보안통신을위한암호키를포함하고있습니다. whatap.realtime_user_thinktime_max Default : 300000 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 31
4.2. 에이전트기능제어 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 PHP 확장모듈 (PHP Extension module) 에서오류 (Error) 정보를수집하는기능을활성화합니다. PHP 컴파일설치로 php.ini 에 [whatap] 항목이있으면 whatap.ini가아닌 php.ini 에추가합니다. Apache 및 PHP-FPM 의재시작후적용됩니다. whatap.ext.exception_enabled Default : true PHP 확장모듈 (PHP Extension module) 에서예외처리 (Exception) 정보를수집하는기능을활성화합니다. PHP 컴파일설치로 php.ini 에 [whatap] 항목이있으면 whatap.ini가아닌 php.ini 에추가합니다. Apache 및 PHP-FPM 의재시작후적용됩니다. whatap.profile_method_enabled Default : true 실행시간이 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 사용자함수의스택정보를트랜잭션상세정보에서확인할수있습니다. Apache 및 PHP-FPM 의재시작후적용됩니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 32
4.3. 에이전트통신 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_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 로그파일보관기간을설정합니다 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 33
4.5. 트랜잭션프로파일링 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 : 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 트랜잭션 URL의쿼리스트링을함께수집하는기능을활성화합니다. whatap.query_string_urls 에등록된 URL만적용됩니다. whatap.query_string_urls Default : NONE Type : String 트랜잭션에서쿼리스트링을수집할 URL들을등록합니다. whatap.whatap.profile_compile_file_enabled Default :false 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 Copyright c 2019 WhaTap Labs Inc. All rights reserved. 34
4.6. HTTP 트랜잭션추적 실행시간의기준을설정합니다. 설정한시간을초과하여실행되는경우만정보를수집합니다. whatap.profile_compile_file_basetime Apache 을너무작게설정할경우너무많이수집하게되어서버에부하를줄수있습니다. 및 PHP-FPM 의재시작후적용됩니다. 4.6. HTTP 트랜잭션추적 whatap.profile_http_header_enabled Default : false 프로파일내역에 http 헤더정보를기록하고자할때사용합니다. whatap.profile_http_parameter_enabled Default : false 프로파일내역에 http 파라미터정보를기록하고자할때사용합니다. 파라미터는별도보안키를입력해야조회할수있습니다. whatap.profile_http_parameter_url_prefix Default : / Type : String 프로파일내역에 http 파라미터정보를기록할대상 URL의 prefix를정의할때사용합니다. whatap.profile_http_host_enabled Default : false 트랜잭션의 Host 정보를출력합니다. False일경우트랜잭션의 URL에 URI 만표기하고 True 일경우 /xxx.aaa.com/url 형식으로출력됩니다. 4.7. DB, SQL whatap.trace_sql_normalize_enabled Default : true SQL문에서리터럴부분을추출하여 SQL문을정규화하는기능을활성화합니다. 리터럴부분은 "#" 으로표기됩니다. whatap.profile_sql_resource_enabled Default : false 프로파일에서 SQL 이수집될때해당스텝에서사용한 CPU 와메모리사용량을추적합니다. whatap.profile_sql_param_enabled Default : false 프로파일내역에 SQL 파라미터정보를기록하고자할때사용합니다. 파라미터는별도보안키를입력해야조회할수있습니다. 보안 키는 WAS 서버 /usr/whatap/php/paramkey.txt 파일내에 6 자리로지정합니다. paramkey.txt 파일이존재하지않는경우랜덤값으로자동생성됩니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 35
4.8. HTTPC, API Call 4.8. HTTPC, API Call whatap.profile_httpc_resource_enabled Default : false 프로파일에서 HTTP Call 스텝이수집될때해당스텝에서사용한 CPU 와메모리사용량을추적합니다. whatap.trace_httpc_normalize_enabled Default : true 트랜잭션내 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 실시간사용자집계여부를지정합니다. 이값을활성화하는경우아이피또는 PHP 기본쿠키 (PHPSESSID) 및프레임워크쿠키 (ci_session, Laravel_session) 를기준으로사용자를추적합니다. PHP 컴파일설치로 php.ini 에 [whatap] 항목이있으면 whatap.ini가아닌 php.ini 에추가합니다. Apache 및 PHP-FPM 의재시작후적용됩니다. whatap.trace_user_using_ip Default : false 실시간사용자의구분을 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 사용자의구분을 HTTP 헤더의특정값으로구분하고싶을때사용할 HTTP 키를지정합니다. 단, trace_user_using_ip 배타적으로설정을동시에적용할수없다. HTTP키를찾지못하는경우 Cookie를기준으로사용자를구분합니다. PHP 컴파일설치로 php.ini 에 [whatap] 항목이있으면 whatap.ini가아닌 php.ini 에추가합니다. Apache 및 PHP-FPM 의재시작후적용됩니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 36
4.10. 트랜잭션추적옵션 whatap.trace_user_set_cookie Default : false 사용자의구분을하기위해쿠키에 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 : 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 트랜잭션 URL을변환하여일반화하는기능을활성화합니다. whatap.trace_normalize_urls Default : NONE Type : String 트랜잭션 URL을변환하고일반화할대상 URL을지정합니다. 호출 URL패턴을변환하여패스파라미터를제거합니다. 예를들어 /a/{v}/b 라고설정하면해당형식으로호출되는트랜잭션 URL은 /a/{v}/b 형식으로변환됩니다. 여러개를등록할때는콤마 (,) 를사용합니다. 4.11. 트랜잭션연계추적 mtrace_enabled Copyright c 2019 WhaTap Labs Inc. All rights reserved. 37
4.12. 통계 Default : false 트랜잰션연계추적기능 (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 도메인별트랜잭션통계를수집합니다. whatap.stat_domain_max_count Default : 7000 Type : Int 5분동안수집할도메인별트랜잭션통계의최대레코드수입니다. whatap.stat_mtrace_enabled Default : false 멀티서버트랜잭션에서 Callser&Callee간에버전별의존성통계를수집합니다. whatap.mtrace_spec Default: v1 Type : String 현인스턴스의애플리케이션버전을지정합니다. 임의의문자열을지정할수있습니다. 이데이터는호출통계를위해사용됩니다. NOTE: Apache 및 PHP-FPM의재시작후적용됩니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 38
4.12. 통계 whatap.stat_mtrace_max_count Default : 7000 Type : Int 멀티서버트랜잭션에서 Callser&Callee간에버전별의존성통계의최대레코드수입니다. whatap.stat_referer_enabled Default : false Referer별트랜잭션통계를수집합니다. whatap.stat_referer_max_count Default : 7000 Type : Int 5분동안한 JVM에서수집할 Referer별트랜잭션통계의최대레코드수입니다. whatap.tx_caller_meter_enabled Default : false 트랜잭션정보로토폴로지통계를생성합니다. whatap.sql_dbc_meter_enabled Default : false Database 연결정보로토폴로지통계를생성합니다 whatap.httpc_host_meter_enabled Default : false Http 외부호출정보로토폴로지통계를생성합니다. whatap.okind Default : "" Type : String 그룹토폴로지를위해임의로부여합니다. 여러에이전트를같이지정하여ㅡ해당그룹명으로토폴로지를확인할수있습니다. Copyright c 2019 WhaTap Labs Inc. All rights reserved. 39