BSM Agent Guide

제목 : BSM Agent Guide
작성자 : WhaTap Support
이메일 : support@whatap.io
날짜 : 2019-10-22
버전 : 1.0.0

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

변경사항

변경일 내용 담당자

2019-03-40

  • 에이전트 및 수집서버 가이드 문서 통합

  • 신규 에이전트 및 수집서버 배포
    BSM Agent 1.7.4 / 1.0.4(JDK1.4), 수집서버 1.8.3.2421 (Single)

  • 수집서버 업데이트 절차 추가

  • 라이선스 항목 추가

임재환

2019-10-01

  • PHP 지원 추가

  • URL 호출 통계 API 관련 내용 및 삭제 예정 추가.

  • JAVA 9 관련 내용 추가

임재환

1. 모니터링 에이전트

비즈니스 서비스 모니터링 에이전트를 모니터링 대상 서버(WAS)에 설치하여 모니터링을 진행합니다. 환경별 설치 방식은 애플리케이션 모니터링의 설치 방식과 동일합니다.

1.1. 에이전트 수집 데이터

비즈니스 모니터링은 트랜잭션의 데이터를 기준으로 최소한의 정보를 수집합니다.

  • 호출 URL
    서비스에 접속하여 호출 되는 URL을 수집합니다. 해당 URL을 기준으로 비즈니스 기능을 설정합니다.

  • Referer 정보
    서비스 접속이 어디에서 시작되었는지에 대한 정보를 수집합니다.

  • UserAgent 정보
    서비스 접속을 하는 디바이스에 대한 정보를 수집합니다.

  • 서비스 접속 IP 정보
    서비스 접속을 하는 IP 정보를 수집합니다.

  • 사용자 토큰
    비즈니스 서비스 모니터링에서 임의로 부여하는 사용자 토큰 값을 수집합니다. 사용자 통계를 위한 정보입니다.

  • 자원활용도 정보
    5분 간의 통계 데이터를 수집 (Cpu, Memory, 응답시간, TPS 의 5분간 변화 정보)

  • 에러 정보
    5분 간의 에러 통계 데이터를 수집 (에러 정보, 발생 건수 등)

  • SQL 구문 정보
    트랜잭션에서 실행 SQL 구문정보를 수집 (SQL 구문, 실행시간 등)

1.2. 에이전트 설치

에이전트 관련 설치 및 내용은 개별 설치 안내 문서를 참고합니다.

1.3. Java 애플리케이션 모니터링

애플리케이션 서버가 Java 환경일 경우 설치합니다.
자세한 설치 과정은 Java 모니터링 설치가이드를 참고합니다.

설치 후 아래의 BSM 적용 설정을 진행합니다.

1.3.1. 에이전트

  • JAVA - Ver 1.5.6 / Ver 1.0.1(JDK1.4)

  • BSM - Ver 1.6.0 / Ver 1.0.1(JDK1.4)

bsm.agent-1.6.0.jar, bsm.java14.tracer-1.0.1.jar는 사용하지 않습니다.

1.3.2. BSM 설정

BSM 은 에이전트 설정 파일로 bsm.conf 를 사용합니다. 에이전트 파일이 있는 위치에 bsm.conf 파일을 생성합니다.

라이선스키(license)와 수집서버 주소(bsm.server.host)를 설정합니다.
license=aaaabbbbccccdddeess
bsm.server.host=192.168.0.1
트랜잭션의 상세 정보(SQL)를 수집하기 위한 응답시간 기준을 설정합니다.

profile_basetime
500ms 이하의 응답시간을 가진 트랜잭션의 경우 상세 정보(SQL) 를 수집하지 않습니다.
Default : 500 millisecond

모든 트랜잭션의 상세정보를 수집하기 위해서는 아래와 같이 설정합니다.

profile_basetime=0
호출 URL정보에 파라메터 추가 설정

기능을 구별하기 위해서 호출 URL에HTTP 파라메터 값이 추가로 필요할 경우 Plugin 형태로 적용할 수 있습니다. 수집이 필요한 HTTP 파라메터 이름을 선별하여, 해당 파라메터 값이 있는 경우 호출 URL을 아래와 같은 형식으로 변경 수집합니다.

[ URL ]?[ 파라메터 이름 ]=[ 파라메터 값 ]&[ 파라메터 이름 ]=[ 파라메터 값 ] 예) /aaa/index.do?category=1&board=1

적용 방법은 $WHATAP_HOME(Agent Home) 경로에 plugin 폴더를 생성하고 HttpServiceEnd.x 파일을 생성합니다. HttpServiceEnd.x 파일 내용을 아래 내용을 적용합니다.

아래 구문 중에 String[] paramKeys = new String[]{ … } 구분안에 수집이 필요한 파라메터 이름을 적용합니다. 작성 코드 문법은 Java 배열 문법을 사용합니다.

String serviceName = $ctx.service();
// target : parameter names
String[] paramKeys = new String[]{
    "msg", "ospid", "comid", "cid", "genre"
};
String query = "";
String item, value;
java.util.Enumeration enm = $req.getParameterNames();
if(enm != null) {
    while(enm.hasMoreElements()){
        item = (String)enm.nextElement();
        if(item != null && !item.equals("")) {
            //System.out.println("Plugin:param=" + item+ ",value=" + new String($req.getParameter(item))); if( java.util.Arrays.asList(paramKeys).contains(item)) {
                value = new String($req.getParameter(item));
                if( value != null && !value.equals("")) {
                    query += item + "=" + value + "&";
                }
                break;
            }
        }
    }
}

if(query != null && !query.equals("")) {
    if(query.endsWith("&")) {
        query = query.substring(0,query.length()-1);
    }
    //System.out.println("query_string=" + new String(query));
    $ctx.service(serviceName + "?" + query);
}

Plugin 파일은 변경 되면 자동으로 Agent에서 로딩 및 실행 됩니다.

플러그인 관련 자세한 사항은 Java 에이전트 플러그인 설정 가이드를 참고하세요.

호출 URL 정규화 기능 설정

트랜잭션 URL을 파싱하여 정규화하는 기능을 설정합니다. 패스 파라미터 등을 정규화하여 URL 을 통합합니다.

trace_normalize_enabled=true
trace_auto_normalize_enabled=true
trace_normalize_urls=/a/{v}/b, /product/remove/employee/{region}/*, /aa/{id}/cc/*
  • trace_normalize_enabled
    default: true
    트랜잭션 URL을 파싱하여 정규화하는 기능을 활성화합니다. False로 변경시 패스파라미터 파싱이 비활성화됩니다.

  • trace_normalize_urls
    default: ""
    트랜잭션 URL을 파싱하여 정규화합니다. 호출URL 패턴을 파싱하여 패스파라미터를 제거합니다.
    a/{v}/b 라고 선언하면 a/123/b, a/3235/b 등을 a/{v}/b로 치환합니다.

    /product/remove/employee/{region} 라고 선언하면
    /product/remove/employee/daejun ⇒ /product/remove/employee/{region} 로 치환합니다.

    여러개를 등록할 때는 콤마(,)를 사용합니다.

  • trace_auto_normalize_enabled
    default: true

    트랜잭션 URL 정규화할때 패턴값을 어노테이션에서 추출하여 자동으로 파싱하는 기능을 활성화합니다.

호출 URL정보를 하나의 URL로 취합하여 제외하는 설정

도메인 정보(호스트) 또는 Uri 정보를 비교하여 제외 URL을 선별하여, 제외할 URL을 “/IGNORE_URL” 1개로 통합합니다. URL 수집 개수를 줄이고 해당 URL을 성과관리 대상에서 제외할 수 있습니다.

제외할 URL http://aaa.aaa.com/aaa/*

수집되는 URL http://aaa.aaa.com/aaa/index.do

최종 대체되어 수집되는 URL (대체될 URL은 별도 설정할 수 있습니다.)
/IGNORE_URL

적용 방법은 $WHATAP_HOME(Agent Home) 경로에 plugin 폴더를 생성하고 HttpServiceEnd.x 파일을 생성합니다. HttpServiceEnd.x 파일 내용을 아래 내용을 적용합니다.

작성 코드 문법은 Java 배열 문법을 사용합니다.

아래 구문 중에 String[] hostOnly = new String[]{ … } 구문 안에 제외할 도메인 정보를 적용합니다. 도메인과 Uri Prefix 를 동시에 설정하려면 tartgetHost, TargetHostUriPrefix 정보를 설정합니다.

String serviceName = $ctx.service();
// 도메인 정보
String hostName = $req.getHeader("Host");
String ignoreServiceName = "/IGNORE_URL";
// Debug print to agent log
//long sTime = System.currentTimeMillis();
//log("hostName=" + hostName + "," + "serviceName=" + serviceName);

// target : host only
String[] hostOnly = new String[]{
    "aaa.aaa.com", "bbb.bbb.com "
};

// target : host and uri prefix
String targetHost = "ccc.ccc.com";
String[] targetHostUriPrefix = new String[] {
    "/jung/", /dada/, /kkk/
};
int len = targetHostUriPrefix.length;
String targetHost1 = "ddd.ddd.com";
String[] targetHostUriPrefix1 = new String[] {
    "/jobcenter/", "/seoulgangnam/", "/seoulseocho/", "/seoul/"
};
int len1 = targetHostUriPrefix1.length;
if( hostName != null && !hostName.equals("") ) {
    // hostOnly
    if( java.util.Arrays.asList(hostOnly).contains(hostName) ) {
        $ctx.service(ignoreServiceName);
    } else {
        if ( targetHost.equals(hostName) ) {
            for(int i=0; i<len; i++) {
                if( serviceName.startsWith(targetHostUriPrefix[i] ) ) {
                    $ctx.service(ignoreServiceName);
                    break;
                }
            }
        } else if ( targetHost1.equals(hostName) ) {
            for(int i=0; i<len1; i++) {
                if( serviceName.startsWith(targetHostUriPrefix1[i] ) ) {
                    $ctx.service(ignoreServiceName);
                    break;
                }
            }
        }
    }
}

Plugin 파일은 변경 되면 자동으로 Agent에서 로딩 및 실행 됩니다.

플러그인 관련 자세한 사항은 Java 에이전트 플러그인 설정 가이드를 참고하세요.

JAVA 1.4 환경 설치

JAVA 1.4.x 환경에 맞는 별도의 bsm.java14.tracer-x.x.x.jar 파일을 기준으로 설치를 진행합니다.

  • Ver 1.0.4 – JDK 1.4 환경

JAVA 1.4 환경에서는 Xbootclasspath 옵션을 통해 에이전트를 설정합니다.

두개 이상의 에이전트 설정은 권장하지 않습니다. 기존 다른 에이전트가 설정되어 있다면 해당 에이전트를 대체하는 것을 권장합니다.

setup.sh 를 통해서 boot 파일을 생성합니다.

setup.sh 예시

#!/usr/bin/env bash
EXE_JAR=`ls bsm.java14.tracer* | sort | tail -1`
echo JAVA_HOME=${JAVA_HOME}
${JAVA_HOME}/bin/java ${JAVA_OPTS} -cp $EXE_JAR whatap.agent.setup.BSMMain -httpc false -socket false -thread false -jdk $1

boot 파일 생성

rt.jar를 사용하여 빌드합니다.

$setup.sh $JAVA_HOME/jre/lib/rt.jar

IBM AIX 환경에서는 rt.jar 대신 core.jar를 사용합니다.

$setup.sh ${JAVA_HOME}/jre/lib/core.jar

boot 파일 생성 확인 xxxxxxx.boot-1.0.0.jar jar 파일 내부에 ClassLoader 하나만 있는 지 확인합니다.

jar -tvf bsm.java14.boot-x.x.x.jar

JVM 옵션 설정

-Xbootclasspath/p:/bsm/bsm.java14.boot-x.x.x.jar:/bsm/bsm.java14.tracer-x.x.x.jar

테스트 Hello.java

public class Hello {
    public static void main(String[] args) throws Exception {
        while (true) {
            process();
            Thread.sleep(5000);
        }
    }

    private static void process() throws Exception {
        System.out.print(".");
        Thread.sleep(2000);
    }
}

Hello.java 컴파일

javac Hello.java

JVM 옵션을 적용하여 Hello 실행

java -Xbootclasspath/p:/bsm/bsm.java14.boot-x.x.x.jar:/bsm/bsm.java14.tracer-x.x.x.jar Hello

프로젝트의 서버 정보에 Agent가 추가되는 지 확인합니다.

JAVA 1.4 환경 설치 (제니퍼 APM과 같이 설치)

기본JAVA1.4 설치 과정에서의 boot.jar를 java의 rt.jar 대신 제니퍼 에이전트의 boot.jar(lwst.jdk4.jar)를 대상으로 생성합니다.

제니퍼 에이전트와 충돌이 발생할 수 있습니다.
운영환경과 동일한 환경에서 미리 테스트를 진행한 후 적용하길 권장합니다.
제니퍼 에이전트를 제거하여 BSM에이전트만 설정할 경우는
boot.jar를 java rt.jar의 ClassLoader를 대상으로 다시 생성해야 합니다.
제니퍼 Boot.jar 확인

제니퍼 jar 파일의 내부를 확인하여 java.lang.ClassLoader가 있는 제니퍼의 jar 파일을 찾습니다. 제니터 4.5 기준 lwst.jdk4.jar 입니다. (파일명은 다를 수 있습니다)

BSM Boot.jar 생성

bsm의 boot.jar 생성을 위한 setup.sh 의 파라메터로 제니퍼 APM 파일의 전체 경로를 입력합니다. 제니퍼 boot.jar를 사용하여 빌드합니다

$setup.sh /aaa/bbb/lwst.jdk4.jar

bsm.java14.boot-x.x.x.jar 생성을 확인합니다.

테스트

Hello.java 에 제니퍼 에이전트와 BSM 에이전트를 설정하여 테스트 진행합니다.

Xbootclasspath/p 옵션에서 반드시 제니퍼 APM 설정 보다 먼저 적용합니다.
java -Xbootclasspath/p:/bsm/bsm.java14.boot-x.x.x.jar:/bsm/bsm.java14.tracer-x.x.x.jar:[제니퍼 에이전트] Hello

제니퍼 에이전트와 충돌이 발생하면, 실행 중에 문제가 발생하거나 JVM Crash가 발생할 수 있습니다.

오류 대처 사항

Hello.java 또는 WAS서버 상에서 오류가 발생 할 경우 Hooking 옵션을 모두 중지하여 테스트를 진행합니다. 정상 작동을 확인한 후에는 Hooking 옵션을 Http, jdbc, httpc 순서대로 하나씩 재 설정하여 오류가 없는 지 확인합니다.

BSM은 최소 http, jdbc, httpc 옵션으로 정상 진행할 수 있습니다. 옵션

_enable_asm_http=false
_enable_asm_jdbc=false
_enable_asm_httpc=false
_enable_asm_nonhttp=false
_enable_asm_method=false
_enable_asm_etc=false
trace_thread_start_enabled=false - 기본 false
설정을 변경할 경우 적용하기 위해서는 WAS 재시작 필요
IBM JAVA 1.5 환경 설치

AIX , IBM JAVA 1.5 환경은 별도 Agent 설치 필요합니다.

JAVA 9 이상 환경 설치
현재는 지원하고 있지 않습니다.
지원이 필요할 경우 별도 문의 바랍니다.

Java 9 이상 환경은 기존 에이전트로 지원이 불가능하며 별도의 에이전트가 필요합니다. 지원하기 위해 별도의 적용 기간이 필요합니다.

1.4. PHP 애플리케이션 모니터링

애플리케이션 서버가 PHP 환경일 경우 설치합니다. 자세한 설치 과정은 PHP 모니터링 설치가이드를 참고합니다.

PHP 설치 가이드

설치 및 BSM 적용 설정을 진행합니다.

1.4.1. 에이전트

PHP 에이전트는 BSM 라이선스만 지원합니다.
수집서버 Ver 1.3.8.2421에서 적용 가능합니다.

1.4.2. 설치

대상 서버의 운영체제에 맞는 설치 패키지 파일을 다운로드 합니다.
rpm, dpkg, pkg 등을 이용하여 설치 합니다.
패키지 설치 이후에는 PHP 모니터링 설치가이드를 참고합니다.

root 권한으로 설치를 진행합니다.

  • Redhat / Linux

rpm -Uvh opsnowbsm-php-0.4-10.x86_64.rpm
  • Debian / Linux

dpkg -i opsnowbsm-php_0.4.10_amd64.deb
  • FreeBSD

pkg install opsnowbsm-php-0.4.10.txz

shell script를 통해서 php 설정을 진행합니다.

/usr/opsnowbsm/php/install.sh
설치 디렉토리는 /usr/opsnowbsm/php 입니다.
PHP 모니터링 설치가이드와 설치 절차는 동일하지만, 설치 경로와 설정 접두어가 whatap 에서 opsnowbsm 으로 변경됩니다.

1.4.3. BSM 설정

트랜잭션의 상세 정보(SQL)를 수집하기 위한 응답시간 기준을 설정합니다.

opsnowbsm.profile_basetime
500ms 이하의 응답시간을 가진 트랜잭션의 경우 상세 정보(SQL) 를 수집하지 않습니다.
* Default : 500

모든 트랜잭션의 상세정보를 수집하기 위해서는 아래와 같이 설정합니다.

opsnowbsm.profile_basetime=0
호출 URL정보에 파라메터 추가 설정
지원하지 않습니다.
호출 URL 정규화 기능 설정

트랜잭션 URL을 파싱하여 정규화하는 기능을 설정합니다. 패스 파라미터 등을 정규화하여 URL 을 통합합니다.

JAVA 에이전트는 trace_auto_normalize_enabled 이 기본적으로 적용되어 어노테이션을 사용하는 경우 자동 적용 되지만,
PHP 에이전트는 자동 적용은 지원하지 않습니다.적용할 URL을 설정에 적용해야 합니다.
opsnowbsm.trace_normalize_enabled=true
opsnowbsm.trace_normalize_urls=/a/{v}/b, /product/remove/employee/{region}/*, /aa/{id}/cc/*
  • opsnowbsm.trace_normalize_enabled
    default: true
    트랜잭션 URL을 파싱하여 정규화하는 기능을 활성화합니다. False로 변경시 패스파라미터 파싱이 비활성화됩니다.

  • opsnowbsm.trace_normalize_urls
    default: ""
    트랜잭션 URL을 파싱하여 정규화합니다. 호출URL 패턴을 파싱하여 패스파라미터를 제거합니다.
    a/{v}/b 라고 선언하면 a/123/b, a/3235/b 등을 a/{v}/b로 치환합니다.

    /product/remove/employee/{region} 라고 선언하면
    /product/remove/employee/daejun ⇒ /product/remove/employee/{region} 로 치환합니다.

    여러개를 등록할 때는 콤마(,)를 사용합니다.

호출 URL정보를 하나의 URL로 취합하여 제외하는 설정
지원하지 않습니다.

1.5. 소프트웨어 프록시

1.5.1. 개요

모니터링 서버로 부터의 외부망에의 직접적인 접근을 차단하고 단일 채널을 통해 외부로의 접속을 허용하고자 하는 경우, TCP/UDP Proxy 서버를 구성하여 WhaTap 서버에 데이타를 전송 할 수 있습니다.

사용자가 직접 Proxy 서버를 구성하기 어려운 상황이라면, WhaTap이 제공하는 Software 기반의 WhaTap Proxy를 활용 할 수 있습니다 이를 통해 사용자는 다수의 서버가 직접 외부망에 접속하지 직접 접속하지 않고, WhaTap Proxy를 경유하도록 제어 할 수 있습니다.

Proxy

아래는 행정망과 인터넷망이 분리된 구조에서 NIA 수집서버를 사용하기 위한 구조입니다. WAS 서버에서 직접 외부의 수집서버(NIA 수집서버)로 연결 할 수 없을 경우의 구성도 입니다. 인터넷 망으로 연결 가능한 서버에 소프트웨어 프록시 서버를 설치하여 데이터를 중계합니다

proxy1
  • WAS 서버에서 Proxy(S/W) 서버로 데이터를 전송. Outbound 6600 port (Port 는 변경 가능)

  • Proxy(S/W) 서버에서 인터넷망을 통해서 NIA 수집서버 로 데이터 전송. Outbound 6600 Port

1.5.2. 설치

설치 과정은 에이전트의 설치 과정과 동일합니다.

WhaTap Proxy를 설치할 서버에 다운로드 받은 에이전트 파일의 압축을 해제합니다. 이후 압축 해제 경로를 $WHATAP_HOME로 기술합니다.

1.5.3. 설정

WhaTap Proxy의 설정은 $WHATAP_HOME 하위의 proxy.conf 파일을 생성하여 설정합니다.

whatap.conf 설정의 whatap.server.host의 설정을 복사합니다.

proxy의 리스닝 포트를 지정합니다.

proxy.conf 예시

whatap.server.host=52.78.209.94/52.78.224.235
listen_port=6600

어플리케이션 서버에 탑재된 에이전트 설정을 수정하여 WhaTap Proxy로 데이터를 전송할 수 있도록, whatap.conf 설정의 호스트와 포트 설정을 변경합니다.

whatap.conf 예시

license=...
whatap.server.host={WhaTap Proxy를 설치한 서버의 IP}
whatap.server.port=6600

WhaTap Proxy 실행 스크립트를 생성하고 실행 권한을 부여합니다.

proxy.sh 예시 (Windows proxy.bat)

#!/usr/bin/env bash EXE_JAR=`ls *.proxy* | sort | tail -1` ${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar $EXE_JAR

실행권한 부여

$ chmod +x proxy.sh
실행

proxy.sh를 실행하고, {PID}.proxy.run 파일이 생성되는 것을 확인합니다.

./proxy.sh &

$WHATAP_HOME/logs 하위의 로그 파일을 확인합니다.

20161116 10:19:14 [WhaTap] LISTEN PORT: 6600
종료

{PID}.proxy.run 파일을 삭제합니다.

에이전트 Ping

모니터링 기능을 적용하기에 앞서 Tracer와 서버 간의 통신에 문제가 없는지 확인하기 위한 기능을 제공합니다. 사용자는 ping.sh (Windows ping.bat) 를 실행하여 에이전트를 통해 가상의 모니터링 정보를 서버로 송신할 수 있으며, whatap.io 사이트에 정보가 정상 송신되는 지 확인 할 수 있습니다.

실행

$ ./ping.sh JAVA_HOME=/jdk1.8.0_111
_ ____ ______
| | /| / / / ___ /_ __/__ ____
| |/ |/ / _ \/ _ `// / / _ `/ _ \
|__/|__/_//_/\_,_//_/ \_,_/ .__/
/_/
Just Tap, Always Monitoring
WhaTap Agent version 0.4.5
20161207 20161208 09:02:25.003 SEND PING DATA
20161208 09:02:25.510 SEND PING DATA
...

1.5.4. 확인

에이전트가 설치된 서버와 수집 서버 간의 통신이 정상적으로 수행되었다면 whatap.io 사이트에서 하기와 같은 화면을 확인 할 수 있습니다.

proxy ping

2. 설치형 서버 구축

와탭 수집서버를 설치 합니다.
자세한 설치 과정은 수집서버 설치가이드를 참고합니다.

설치 후 아래의 BSM 적용 설정을 진행합니다.

2.2. 라이선스 설정

발급받은 라이선스 내용을 설정합니다.
대상 아이피, 라이선스 키를 account.conf 에 설정합니다.

whatap_package/conf/account.conf

owner=[라이선스 대상 아이피]
license=[라이선스 키]

2.3. BSM 설정

BSM 기능은 데이터 수집만 진행합니다.
수집된 데이터는 API를 통해서 전달합니다.

2.3.1. Internal API 접근 IP 설정

BSM API 연결에 대한 IP 정보로 접근을 제어합니다. 시스템이 같은 서버 내부에 설치 될 경우 로컬 접속만 허용하도록 설정합니다.

Front 서버 설정 파일에 추가힙니다.

$ vi whatap_package/conf/front.conf

internal_api_ip_based=true
internal_api_ip_allowed=127.0.0.1

2.3.2. internal_api_key 변경

프로젝트 생성 API를 사용하기 위한 internal_api_key를 변경합니다. 수집서버 설치 후 대소문자, 숫자, 특수문자 조합 12자 이상의 internal_api_key 를 설정합니다.

Front 서버 설정 파일에 추가힙니다.

$ vi whatap_package/conf/front.conf

internal_api_key=afEG2Ges#sg@

2.3.3. URL 호출 통계 API 사용을 위한 설정

해당 API는 추후 삭제 될 예정입니다.
전체 URL에 대한 정보를 조회할 수 있는 트랜잭션 정보 조회 API로 대체해서 사용합니다.

URL별 호출 통계 API을 사용하기 위해서는 아래 설정을 추가합니다. URL별 호출 통계는 10000건의 데이터에 대해 결과를 조회할 수 있습니다. (건수 내림차순 정룔로 10000건입니다.)

Yard 서버 설정 파일에 추가합니다.

$ vi whatap_package/conf/yard.conf

bsm_enabled=true

시스템에서 사용하는 URL이 10000건을 넘는 경우 아래 설정으로 버퍼 크기를 증가시켜 더 많은 URL통계를 확인할 수 있습니다.

$ vi whatap_package/conf/yard.conf

bsm_read_buffer_size=10000
버퍼 크기를 너무 증가시킬 경우 yard 서버의 메모리 증가로 수집서버에 부하를 발생시킬 수 있습니다.

특정 프로젝트를 대상으로 BSM 기능을 적용하려면 bsm_enable_pcodes 설정을 추가합니다. 여러 개의 프로젝트는 pcode 를 콤마(,) 구분으로 나열합니다

2.3.4. 트랜잭션 (SQL) API를 위한 설정

트랜잭션(SQL) API를 통해서 5분간의 트랜잭션 및 SQL 구문정보를 출력할 때 Disk IO를 조정하기 위한 설정입니다.
5분 간의 데이터가 너무 많아 서버에 부하가 발생할 경우, 데이터 추출 중 Sleep 구문을 통해 서버부하를 조절합니다.

  • bsm_read_tx_per_size
    1000 건의 데이터를 출력할 때 마다 bsm_read_tx_sleep_ns 에 설정된 nanosecond 만큼 Sleep을 실행합니다.
    Default : 1000

  • bsm_read_tx_sleep_ns
    Sleep 을 실행하는 nanosecond
    Default : 1000000

$ vi whatap_package/conf/yard.conf bsm_read_tx_per_size=10000
bsm_read_tx_sleep_ns=1000000

Yard 로그에서 해당 API요청에 대한 로그를 확인할 수 있습니다. 프로젝트 코드, 실행 메모리 사용량, 실행 시간, 전체 데이터 건수

$ tail -f whatap_package/log/yard.log
[2018-11-05 03:15:41,296][INFO ][i.w.y.web.rest.service.BsmSelector.selectAllProfileListWithSqlByPcode(1253)] BSM TX Projects: #1 185.8m 22271 ms total 20453

2.4. 관리자 계정

기본 admin 계정은 admin@whatap.io, 비밀번호는 admin 입니다.

2.5. BSM 계정 생성

BSM 프로젝트 생성은 한 개의 계정으로만 진행합니다.

수집서버 설치 시에 필요한 일반 계정을 API 를 통해 생성합니다.

(관리자 계정(admin@whatap.io)으로 로그인하여 “사이트관리 > 계정관리” 에서 생성할 수 있습니다.)

기존에 고정으로 사용하는 계정은 아래와 같습니다.

2.7. 로고 변경

설치형 서버 구축 후 WhaTap 로고 이미지를 변경할 수 있습니다. 정해진 경로와 파일명으로 직접 올리거나, 사이트 관리자에서 변경 가능합니다.

2.7.1. 로고 이미지

이미지는 png, gif, jgeg 형식이 가능합니다.

  • Header Logo : 100 X 22 Pixels
    ( 경로 : ${WHATAP_HOME}/logos/apm.whatap.io.header.png )

  • Sidebar Logo : 90 X 76 Pixels
    ( 경로 : ${WHATAP_HOME}/logos/apm.whatap.io.sidebar.png )

  • Login Logo : 230 X 50 Pixels
    ( 경로 : ${WHATAP_HOME}/logos/apm.whatap.io.login.png )

  • Report Logo : 78 X 18 Pixels
    ( 경로 : ${WHATAP_HOME}/logos/apm.whatap.io.report.png )

2.7.2. 사이트 접속 및 변경

관리자 계정(admin@whatap.io)으로 접속 후 사이트 관리자에서 기존 로고 이미지를 변경합니다. 오른쪽 상단의 계정 메뉴에서 “사이트 관리” 선택한 후, 왼쪽 메뉴의 “설정” > “Site Logo” 메뉴에서 이미지를 업로드합니다.

logo 4
logo 5
logo 6

2.8. 수집서버 업데이트

2.8.1. 업데이트

신규버전의 lib 디렉토리에 있는 모든 파일을 기존 설치된 lib 디렉토리로 복사합니다.
수집서버를 재시작 하면 최신버전의 수집서버가 실행됩니다.

2.8.2. BSM 수집서버 1.2.2.2153 버전에서 1.3.8.2421로 업데이트

① 기존에 설치된 수집서버를 중지합니다.

$ whatap_package/bin/control.sh single stop

logs directory exists.
front is Running(21232)
front Will be stopped
keeper is Running(21260)
keeper Will be stopped
proxy is Running(21298)
proxy Will be stopped
yard Not Running yard_checker.sh Not Running

② 신규 버전의 lib 디렉토리의 jar파일들을 설치된 수집서버의 /lib 디렉토리로 복사합니다.

③ 신규 버전의 bin 디렉토리의 모든 파일을 설치된 수집서버의 /bin 디렉토리로 복사합니다.

④ bin 디렉토리에 있는 스크립트 파일에 실행 권한을 부여합니다.

$ chmod +x *.sh

⑤ 수집 서버 lib 디렉토리에 h2.sql 파일을 생성하고 내용을 저장합니다.

$ vi h2.sql alter table EVENTPOLICY alter column rules text;

⑥ 생성한 h2.sql 파일로 기존 데이터베이스의 변경사항을 업데이트합니다.

$ java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:file://home/whatap_package/db/monitor_apm -driver org.h2.Driver -user sa -script h2.sql

⑦ 수집 서버를 시작하면 최신 버전의 lib를 찾아서 로딩 합니다.

$ whatap_package/bin/control.sh single start

logs directory exists.
front Not Running front
Will be started keeper
Not Running keeper
Will be started proxy
Not Running proxy
Will be started
yard Not Running
yard Will be started

⑧ 신규 버전이 로딩되었는 지 확인합니다.

$ ps -elf | grep whatap

0 S root 22455 1 0 80 0 - 28279 wait Apr25 ? 00:00:00 bash /home/whatap_package_lastest/bin/keeper.sh

0 S root 22470 22455 0 80 0 - 678354 futex_ Apr25 ? 00:07:46 java -Djava.security.egd=/dev/./urandom -Dwhatap.server.home=/home/whatap_package_lastest -Dwhatap.conf.path=/home/whatap_package_lastest/conf -Xmx128m -Duser.timezone=GMT -jar /home/whatap_package_lastest/lib/whatap.server.keeper-1.3.8.2421.jar

0 S root 22495 1 0 80 0 - 28279 wait Apr25 ? 00:00:00 bash /home/whatap_package_lastest/bin/proxy.sh 0 S root 22512 22495 0 80 0 - 781230 futex_ Apr25 ? 00:47:13 java -Djava.security.egd=/dev/./urandom -Dwhatap.server.home=/home/whatap_package_lastest -Dwhatap.conf.path=/home/whatap_package_lastest/conf -Xms512m -Xmx512m -Duser.timezone=GMT -jar /home/whatap_package_lastest/lib/whatap.server.proxy-1.3.8.2421.jar

0 S root 22534 1 0 80 0 - 28312 wait Apr25 ? 00:03:31 bash /home/whatap_package_lastest/bin/yard_checker.sh 0 S root 22590 1 0 80 0 - 28279 wait Apr25 ? 00:00:00 bash /home/whatap_package_lastest/bin/yard.sh

0 S root 22606 22590 2 80 0 - 1223488 futex_ Apr25 ? 02:05:47 java -Djava.security.egd=/dev/./urandom -Dwhatap.server.home=/home/whatap_package_lastest -Dwhatap.conf.path=/home/whatap_package_lastest/conf -Xmx2048m -Duser.timezone=GMT -XX:OnOutOfMemoryError=kill -9 %p -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/home/whatap_package_lastest/logs/gc.201904251035.log -jar /home/whatap_package_lastest/lib/whatap.server.yard-1.3.8.2421.jar

0 S root 24173 1 0 80 0 - 28279 wait 14:06 pts/0 00:00:00 bash /home/whatap_package_lastest/bin/front.sh 0 S root 24188 24173 3 80 0 - 924578 futex_ 14:06 pts/0 00:04:09 java -Djava.security.egd=/dev/./urandom -Dwhatap.server.home=/home/whatap_package_lastest -Dwhatap.conf.path=/home/whatap_package_lastest/conf -Xmx512m -Duser.timezone=GMT -jar /home/whatap_package_lastest/lib/whatap.server.front-1.3.8.2421.jar

2.9. 라이선스

라이선스 발급 요청시에 BSM 라이선스 인지 APM 라이선스인지 구분이 필요합니다.

라이선스 요청시 license@whatap.io 메일에 추가로 jhlim@whatap.io 계정을 참조로 부탁드립니다.
또한 APM, BSM 구분을 명확히 전달 부탁드립니다.

  • 신규 배포된 JAVA 에이전트 버전 1.7.4 (JDK14 버전 1.0.4) 버전은 BSM 에이전트와 BSM 라이선스를 사용합니다.

  • 이전 배포된 에이전트는 JAVA 에이전트를 사용하며 APM 라이선스를 사용합니다.
    (에이전트 파일에 whatap 이름이 있는 에이전트들은 모두 APM 라이선스를 사용합니다.)

2.9.1. 라이선스 종류

APM 라이선스

BSM 라이선스 대상이 아닌 경우 모두 APM 라이선스에 적용 됩니다. bsm.agent-1.6.0.jar, bsm.java14.tracer-1.0.1.jar 는 사용하지 않습니다.

2.9.2. 라이선스 확인 및 갱신

관리자 계정(admin@whatap.io)으로 접속 후 연결 URL을 직접 입력하여 이동합니다.

현재 라이선스 정보와 사용중인 에이전트 코어 및 개수를 확인할 수 있습니다.

  • Send
    변경 또는 기존 입력된 라이선스 키로 라이선스 정보를 업데이트 합니다.

  • Start Metering
    미터링 정보를 확인하여 사용중인 에이전트 코어 및 개수를 확인할 수 있습니다.

admin license checker