설치

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

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

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

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

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

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

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

php

RedHat/CentOS

와탭 저장소(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)를 등록합니다.

$ 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)를 등록합니다.

$ 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

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 데몬을 자동으로 설치할 경우에 아래와 같이 적용합니다.

$ 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

whatap-php 실행

install.sh 실행 마지막에 자동 실행됩니다.

nohup을 통해서 실행합니다.

/usr/whatap/php/whatap-php
    Default restart
    Command start, stop, restart, version


## 버전 확인
# /usr/whatap/php/whatap-php version
0.8.5.20201209


## 실행 확인
# ps -elf | grep whatap
  103 root      0:05 ./whatap_php_static -t=4

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

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 <프로세스 이름>

Docker의 entrypoint에 whatap-php 실행 명령어를 추가하여 container 실행 후에 whatap-php 데몬이 시작될 수 있도록 설정합니다.

/usr/whatap/php/whatap-php

구글 앱 엔진 (Google Cloud App Engine)

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

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

$ vi app.yaml
env: flex
runtime: custom

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

AWS Elastic beanstalk

Elastic Beanstalk Configuration files(.ebextensions)를 통해서 설치합니다.
".ebextensions" 디렉토리에 아래 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

Beanstalk에 새로운 버전을 배포하면 PHP 모니터링이 설치됩니다.