Docker Go 설치
관리 > 에이전트 설치 > 하단의 애플리케이션 설치 클릭 > 설치 안내 중 Docker Go 탭 선택
Docker 컨테이너 기반으로 실행하는 Go 애플리케이션에 와탭 모니터링 에이전트를 적용하고 컨테이너 이미지를 패키징하는 과정을 다음과 같이 안내합니다.
EKS Fargate는 지원 예정입니다.
에이전트 다운로드
Go 애플리케이션 도커 이미지 빌드 시 whatap-agent 패키지를 설치하세요.
- x64
- AArch64
RUN wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/x86_64/whatap-agent.tar.gz
RUN tar -xvzf whatap-agent.tar.gz -C /
RUN wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/alpine/aarch64/whatap-agent.tar.gz
RUN tar -xvzf whatap-agent.tar.gz -C /
에이전트 설정
사용자 애플리케이션 실행 경로에 와탭의 액세스 키, 서버 IP 주소 정보를 입력한 whatap.conf 파일을 생성하세요. 특정 경로를 사용할 경우 WHATAP_HOME
환경변수로 설정할 수 있습니다.
RUN echo "accesskey={액세스 키}" >> whatap.conf
RUN echo "whatap.server.host={수집 서버 IP 주소}" >> whatap.conf
액세스 키가 Docker Public 상태의 이미지에 노출되지 않도록 주의하세요.
WHATAP_HOME
환경변수 설정하기
whatap.conf 파일 경로를 WHATAP_HOME
환경변수로 설정할 수 있습니다. WHATAP_HOME
경로를 우선 생성하세요. 애플리케이션 실행 문구 앞에 WHATAP_HOME
설정을 추가합니다.
mkdir ./whatap_home
echo "license={액세스 키}" >> ./whatap_home/whatap.conf
echo "whatap.server.host={수집 서버 IP 주소}" >> ./whatap_home/whatap.conf
# run application
WHATAP_HOME=./whatap_home ./app
Go 라이브러리 설정하기
Go 애플리케이션 소스 코드에 github.com/whatap/go-api 패키지를 추가하세요.
go get github.com/whatap/go-api
trace.Init()
, trace.Shutdown()
함수로 초기화 및 종료를 설정하세요. trace.Start()
, trace.End()
함수로 트랜잭션의 시작 종료를 설정하세요.
import "github.com/whatap/go-api/trace"
func main(){
trace.Init(nil)
//It must be executed before closing the app.
defer trace.Shutdown()
ctx, _ := trace.Start(context.Background(), "Start Tx")
...
trace.End(ctx, err)
}
라이브러리 설정에 대한 자세한 내용은 다음 문서를 참조하세요.
컨테이너 환경변수 설정
Docker 빌드 후 쿠버네티스 환경 내 컨테이너 환경변수를 설정하세요. 애플리케이션 배포 yaml 파일에 다음 내용을 추가하세요.
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}}
다음 예시를 참조하세요.
apiVersion: v1
kind: Pod
metadata:
name: # Pod Name
labels: # Pod Labels
spec:
containers:
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}}
환경변수 역할
-
NODE_IP
: 현재 파드가 호스팅된 노드(Node)의 IP 주소를 수집합니다. -
NODE_NAME
: 현재 파드가 실행 중인 노드의 이름을 수집합니다. -
POD_NAME
: 현재 파드의 이름을 수집합니다.
에이전트 실행
- Command
- Supervisor
애플리케이션 시작 명령어 앞에 추가로 whatap-agent 시작 명령어를 추가하세요.
sh -c "/usr/whatap/agent/whatap-agent start && [애플리케이션 시작 명령어]"
Supervisor로 애플리케이션을 시작하는 경우 다음 코드를 참조해 whatap-agent 서비스를 추가하세요.
RUN echo "[program:whatap-agent]" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "command = sh -c ‘/usr/whatap/agent/whatap-agent start’" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "user = root" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "startsecs = 0" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "autostart = true" >> /etc/supervisor/conf.d/whatap.conf
RUN echo "autorestart = false" >> /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
다음 명령어를 실행해 와탭 서비스가 정상 실행되었는지 확인하세요. 애플리케이션 서버가 실행되면 에이전트가 모니터링 정보를 수집하기 시작합니다.
ps -ef | grep whatap_agent
에이전트 설치 확인
에이전트를 제대로 설치했는지 확인하려면 대시보드 > 애플리케이션 서비스 대시보드 메뉴로 이동하세요.
다운로드한 파일을 직접 설치한 다음, 대시보드 메뉴에서 에이전트를 확인할 수 없다면 다음 사항을 확인하세요.
-
컨테이너에서
ps -ef | grep whatap_agent
명령어를 실행해 에이전트 옵션을 적용했는지 확인하세요. -
컨테이너의
WHATAP_HOME
/logs 또는 애플리케이션 실행 경로의 logs 디렉터리를 확인하세요. 에이전트 로그는 logs/whatap-{boot or install}
-yyyymmdd.log 형식의 파일명으로 출력됩니다.