애플리케이션 에이전트

컨테이너 내 Java, Python, Node.js 등의 애플리케이션을 모니터링하기 위한 에이전트 설치 단계입니다.

마이크로 애플리케이션 에이전트의 설치는 와탭의 애플리케이션 모니터링 설치 절차와 동일합니다. 다만 컨테이너화(Containerization) 작업이 추가되는 것이 다릅니다.

설치 안내 페이지에 따라 컨테이너 내 애플리케이션 에이전트 설치 과정을 진행합니다.

Install Application Agents
Figure 1. Install Application Agents

프로젝트 액세스 키 발급

설치 페이지에 존재하는 [프로젝트 액세스 키 발급받기] 버튼을 클릭하여 프로젝트 액세스 키를 발급받습니다. 이미 발급받은 경우에는 액세스 키가 표시됩니다.

whatap kubernetes application agent access key
Figure 2. Install Application Agents

애플리케이션 에이전트 컨테이너화(Containerization)

Java

본 내용은 Docker 컨테이너 기반으로 실행되는 Java 애플리케이션의 JVM Option에 에이전트 적용을 위한 설정을 추가하고, 컨테이너 이미지를 패키징 하는 과정을 설명합니다.

  1. 애플리케이션의 Dockerfile이 있는 디렉토리에 whatap.conf 파일을 생성합니다.

    • Docker 빌드 디렉토리를 생성합니다.

      mkdir -p {Docker build Dir}
    • whatap.conf 파일을 생성합니다.

      cat >{Docker build Dir}/whatap.conf <
      whatap.server.host=13.124.11.223/13.209.172.35
      EOL
whatap.conf 파일은 사용자 쿠버네티스 환경의 ConfigMap 기능을 통해 관리할 수도 있습니다.
  1. Dockerfile에 와탭 에이전트 설치용 이미지를 불러와 다운로드하는 명령어(절차)를 추가합니다.

    RUN mkdir -p /whatap           # 와탭 에이전트용 디렉토리를 사용자 컨테이너에 생성
    COPY --from=whatap/kube_mon /data/agent/micro/whatap.agent.kube.jar /whatap  # 와탭 JAVA 에이전트를 사용자 컨테이너에 복사
    COPY ./whatap.conf /whatap/    # 생성한 whatap.conf 설정 파일을 사용자 컨테이너에 복사
  1. javaagent 옵션을 추가합니다.

    스크립트로 애플리케이션을 기동할 경우

    스크립트에 다음 내용을 추가합니다.

    WHATAP_HOME=/whatap
    WHATAP_JAR=ls ${WHATAP_HOME}/whatap.agent.kube.jar | sort | tail -1
    export JAVA_OPTS="-javaagent:${WHATAP_JAR} -Dwhatap.micro.enabled=true "
    Dockerfile 명령어로 애플리케이션을 기동할 경우

    에이전트 버전을 확인합니다.

    docker run whatap/kube_mon ls /data/agent/micro –

Dockerfile 애플리케이션 기동 명령어에 다음 내용을 추가합니다.

-javaagent:/whatap/whatap.agent.kube.jar -Dwhatap.micro.enabled=true

Dockerfile 샘플

FROM openjdk:8-jdk-slim
RUN mkdir -p /app && mkdir /whatap
WORKDIR /app
COPY --from=whatap/kube_mon /data/agent/micro/whatap.agent.kube.jar /whatap
COPY whatap.conf /whatap
COPY myApp.jar /app/
CMD ["java","-javaagent:/whatap/whatap.agent.kube.jar","-Dwhatap.micro.enabled=true",”-jar”,"/app/myApp.jar"]
EXPOSE 8080
  1. Docker 빌드

    cd docker
    docker build -t $Image_Name.
  1. 사용자 쿠버네티스 환경 내 컨테이너 환경 변수 설정

애플리케이션 에이전트에 필요한 환경 변수 정보를 추가합니다.

OKIND 환경 변수는 Pod에 해당하는 애플리케이션들을 같은 그룹으로 지정하는 역할을 합니다. 만약 Deployment 이름으로 설정하면 Deployment에 속하는 Pod들을 하나로 그룹화합니다.

env:
  - name: NODE_IP
    valueFrom: {fieldRef: {fieldPath: status.hostIP}}
  - name: NODE_NAME
    valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
  - name: POD_NAME
    valueFrom: {fieldRef: {fieldPath: metadata.name}}
  - name: OKIND
    value: <업무 서비스 이름 또는 Deployment 이름>
  - name: license
    value: <프로젝트 액세스 키 / 예) x4beh20bjgp2s-x6uprtmp409mvc-.....>
  1. 와탭 에이전트가 설치된 Docker 이미지로 배포

Node.js

다음 설치 과정은 Docker 컨테이너로 구동할 Node.js 애플리케이션에 와탭 모니터링을 적용하고 컨테이너 이미지를 패키징 하는 과정을 설명합니다.

  1. 와탭 에이전트 설치

    • 다음 명령어를 통해 Node.js 애플리케이션을 위한 와탭 모니터링 에이전트를 설치합니다.

      npm install --save whatap
    • 업데이트 시에는 다음 명령어를 활용합니다.

      npm update whatap
  1. 에이전트 설정

node_modules/whatap에 있는 whatap.conf 파일을 Node.js 애플리케이션 루트 디렉토리로 복사하고, 복사한 whatap.conf 파일의 내용을 "에이전트 설치" 페이지에서 가이드하는 내용으로 교체합니다.

license=<프로젝트 액세스 키>
whatap.server.host=<와탭 수집서버 IP>
whatap_micro_enabled=true
  1. 에이전트 적용

루트 디렉토리의 Node.js 애플리케이션에 다음과 같은 코드를 추가합니다.

var WhatapAgent = require('whatap').NodeAgent;
  1. Kubernetes 환경변수 및 볼륨

트랜잭션에서 Node 및 Pod 정보를 수집하기 위해 NODE_IP, NODE_NAME, POD_NAME 환경변수를 설정합니다. 와탭 설정파일 및 로그파일용 휘발성 볼륨을 탑재합니다.

env:
  - name: NODE_IP
    valueFrom: {fieldRef: {fieldPath: status.hostIP}}
  - name: NODE_NAME
    valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
  - name: POD_NAME
    valueFrom: {fieldRef: {fieldPath: metadata.name}}

애플리케이션 내에 whatap.conf 파일을 사용하지 않는 경우에는 위 설정에 이어 아래와 같은 추가 설정을 해줍니다.

  - name: license
    value: <프로젝트 액세스 키 / 예) x4beh20bjgp2s-x6uprtmp409mvc-.....>
  - name: whatap_server_host
    value: "<와탭 수집서버 IP / 예) 13.124.11.223/13.209.172.35>"
  - name: whatap_micro_enabled
    value: "true"
  1. 와탭 에이전트가 설치된 Docker 이미지로 배포

Python

하기 설치 과정은 Docker 컨테이너로 실행할 Python 애플리케이션에 와탭 모니터링을 적용하고 컨테이너 이미지를 패키징 하는 과정을 설명합니다.

  1. 와탭 에이전트 설치

    • Python 애플리케이션 도커 이미지 빌드시 whatap-python 패키지를 설치합니다.

      FROM python:3.7
      ...
      RUN pip3 install --upgrade whatap-python
      ...
  1. 에이전트 설정

Python 애플리케이션 시작시 와탭 에이전트가 Injection할 수 있도록 애플리케이션 시작 스크립트를 변경합니다.

설정 파일 및 로그 출력 디렉토리를 환경변수 WHATAP_HOME으로 설정합니다.

export WHATAP_HOME=/whatap_conf

설정파일을 생성합니다.

whatap-setting-config\
--host 13.124.11.223/13.209.172.35\
--license x4beh20bjgp2s-x6uprtmp409mvc-z3sl51qhqps7q7\
--app_name [애플리케이션 이름]\
--app_process_name [애플리케이션 프로세스 이름]
권한 문제가 발생하는 경우
  • 와탭 설정을 위한 $WHATPA_HOME/whatap.conf 파일의 읽기 및 쓰기 권한

  • 와탭 로그를 위한 $WHATPA_HOME/logs 디렉토리와 하위 파일의 읽기 및 쓰기 권한

다음과 같이 $WHATPA_HOME에 권한을 부여합니다.

echo `sudo chmod -R 777 $WHATAP_HOME`
  1. Kubernetes 환경변수 및 볼륨

트랜잭션에서 Node 및 Pod 정보를 수집하기 위해 NODE_IP, NODE_NAME, POD_NAME 환경변수를 설정합니다. 와탭 설정파일 및 로그파일용 휘발성 볼륨을 탑재합니다.

env:
  - name: NODE_IP
    valueFrom: {fieldRef: {fieldPath: status.hostIP}}
  - name: NODE_NAME
    valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
  - name: POD_NAME
    valueFrom: {fieldRef: {fieldPath: metadata.name}}

애플리케이션 내에 whatap.conf 파일을 사용하지 않는 경우에는 위 설정에 이어 아래와 같은 설정을 추가합니다.

  - name: license
    value: <프로젝트 액세스 키 / 예) x4beh20bjgp2s-x6uprtmp409mvc-.....>
  - name: whatap_server_host
    value: "<와탭 수집서버 IP / 예) 13.124.11.223/13.209.172.35>"
  - name: whatap_micro_enabled
    value: "true"
  1. 와탭 에이전트가 설치된 Docker 이미지로 배포