본문으로 건너뛰기

Web Server Agent 설치

이제 모든 관련 문서를 확인했습니다. 상세한 답변을 작성합니다.


exemONE Web Server Agent 설치 방법 및 설정 상세 가이드

참고 문서:


1. 모듈 설명

exemONE Web Server Agent(exem-webserver-agent)는 Nginx, Apache 등 웹 서버의 성능 지표(트랜잭션, 응답시간, 요청 수 등)를 수집하여 exemONE 수집 서버(Receiver)로 전송하는 모니터링 에이전트입니다.

Web Server 모니터링은 2단계 구조로 이루어져 있습니다:

  1. Web Server Agent: 수집 서버(Receiver)와 통신하는 중간 에이전트 (Binary 또는 Docker로 설치)
  2. Web Module (Nginx Module / Apache Module): 웹 서버에 직접 탑재되어 데이터를 수집하고 Web Server Agent로 전송하는 모듈
[Nginx/Apache] ←→ [Web Module] --12848-→ [Web Server Agent] --9009-→ [Receiver/수집서버]

2. 지원 버전

항목지원 버전
exemONE3.0.506.15.0 릴리즈 버전 이후
JavaJDK 17 이상 (Web Server Agent Binary 설치 시)
Nginx1.14.1, 1.14.2, 1.18.0, 1.20.1, 1.24.0, 1.27.0, 1.28.0
Apache2.4

개별 모듈 최소 버전:

exemone-alerter-v3.0.506.15.6 
exemone-api-v3.0.506.15.18
exemone-core-v3.0.506.15.12
exemone-gateway-v3.0.506.15.1
exemone-ingester-v3.0.506.15.11
exemone-receiver-v3.0.506.15.5
exemone-front-v3.0.506.15.27

3. 통신 포트

출발지도착지TypePort내용
Web Server AgentexemONE 수집 서버 (Receiver)gRPC9009Receiver와의 통신
Web Module (Nginx/Apache)Web Server AgentTCP12848모듈 → Agent 데이터 전송

방화벽에서 9009 포트 (Receiver 연결용)와 12848 포트 (모듈 연결용)를 반드시 오픈해야 합니다.


4. 전체 설치 흐름

Nginx 모니터링 절차:

  1. Web Server Agent 설치 (Binary 또는 Docker)
  2. exemONE 웹 UI에서 Agent 등록
  3. Nginx/Apache에 Web Module 설치 후 웹 서버와 함께 구동

5. [Phase 1] exemONE 웹 UI에서 Agent 등록

단계 1. exemONE 설정 페이지 접속

좌측 메뉴에서 [프로필 > 환경설정] 으로 이동합니다.

단계 2. [관리 > 에이전트] 메뉴 이동

단계 3. 웹서버 에이전트 등록

상단의 [에이전트 추가] 버튼을 클릭합니다.

  • 에이전트 타입은 반드시 "웹 서버" 로 선택
  • [갱신] 버튼을 클릭하면 에이전트 ID엑세스 토큰이 발급됩니다
  • 에이전트 이름은 직접 입력

발급받은 에이전트 ID엑세스 토큰 정보를 반드시 기록해 두시고, [저장] 버튼을 클릭하여 에이전트가 목록에 정상적으로 추가되었는지 확인하세요.


6. [Phase 2] Web Server Agent 설치

Web Server Agent는 2가지 설치 방식을 제공합니다.

설치 방식적합 환경특징
Binary 설치물리 서버, VM 환경bin 파일로 설치, JDK 17 필수
Docker 설치Docker 환경Docker 이미지 로드 후 docker-compose로 실행

6-1. Binary 설치

사전 설정

  1. JDK 17 이상 설치 필수
    • JDK 17 이하 버전만 설치되어 있는 경우, 함께 전달된 zulu17 패키지(예: zulu17.58.21-ca-jdk17.0.15-linux_x64.tar.gz)를 활용하여 JDK 17을 설치
  2. 방화벽 포트 개방: 9009 포트, 12848 포트

단계 1. 설치 파일 준비

exem-webserver-agent_${VERSION}.bin 바이너리 설치 파일을 준비합니다.

단계 2. 실행 권한 부여

chmod +x exem-webserver-agent_${VERSION}.bin

단계 3. 설치 파일 실행

./exem-webserver-agent_${VERSION}.bin

단계 4. 설치 안내 및 JAVA 확인

  • [1] 을 입력하면 설치가 시작됩니다
  • JAVA 17 이상이 설치되어 있는 경우: [y] 입력
  • JAVA 17 이상이 설치되어 있지 않은 경우: [n] 입력 시 설치 스크립트가 종료됩니다

단계 5. Agent 정보 입력

exemONE에서 발급받은 Token, Agent ID, Agent Name, Receiver IP 를 입력합니다.

단계 6. 설치 디렉토리 입력

설치할 디렉토리를 입력하면, 해당 경로 아래에 webserver 폴더가 자동으로 생성됩니다.

단계 7. 실행

exem/webserver/bin 폴더에서 실행합니다.

단계 8. 설치 완료 확인

설치가 완료되면 bin 디렉토리의 startAgent.sh 스크립트에 실행 정보가 자동으로 입력됩니다.


6-2. Docker 설치

사전 설정

  • 방화벽 포트 개방: 9009 포트, 12848 포트

단계 1. 설치 파일 압축 해제

exem-webserver-agent-package.tar.gz 파일의 압축을 해제합니다.

단계 2. 도커 이미지 로드

docker load -i exemone-webserver-agent-v3.0.12.tar.gz

단계 3. Docker 설치 관련 환경 변수 설정

수정 파일: exem-webserver-agent-package/.env

#exemONE 실행 유저 ID 
EXEMONE_USER_UID=1000
EXEMONE_USER_GID=1000

#Webserver 패키지 실행 경로 지정
EXEMONE_WEBSERVER_AGENT_PATH=exem-webserver-agent-package

#Webserver docker 이미지 및 버전 입력
WEBSERVER_AGENT_IMAGE=maxgauge/exemone-webserver-agent
WEBSERVER_AGENT_VERSION=v3.0.16

단계 4. Webserver Agent 실행 관련 환경 변수 설정

exemONE에서 발급받은 Token, Agent ID, Agent Name, Receiver IP를 입력합니다.

수정 파일: exem-webserver-agent-package/configs/.env

#Webserver Agent 정보 입력(exemONE 웹페이지에서 발급받은 정보)
WEB_AGENT_NAME=webserver-docker-127
WEB_AGENT_ID=0da17add-a58d-4d86-b4c2-dec8e75c12ca
WEB_AGENT_ACCESS_TOKEN=8dba739c-124f-439b-82d4-822de3310def
WEB_AGENT_RECEIVER_ADDR=10.10.48.127:9009

단계 5. 포트 설정

exem-webserver-agent-package/docker-compose.yml 파일의 ports 항목에 필요한 포트를 추가합니다.

단계 6. 설치 및 실행 권한 부여

chmod +x exem-webserver-agent-package/install.sh

단계 7. Web Agent 구동

cd exem-webserver-agent-package
./scripts/restart.sh


7. [Phase 3] Web Module 설치 (Nginx / Apache)

Web Server Agent 설치 완료 후, 모니터링 대상 웹 서버에 Web Module을 설치해야 합니다.


7-1. Nginx Module 설치

사전 설정

  1. Nginx가 설치되어 있어야 합니다
  2. 수집서버에 연동된 Web Agent가 구동 중이어야 합니다
  3. Nginx 설치 버전을 확인합니다:
$ nginx -V
nginx version: nginx/1.18.0
  1. 바이너리 설치 파일을 준비합니다: setup_exem-nginx-module_{Version}.bin

단계 1. Nginx Module 설치 실행

./setup_exem-nginx-module_{Version}.bin
=====================================================
EXEM NGINX Module Setup
=====================================================
choise work
1. unpack
2. install(default)
:
SETUP TYPE[install]
Delete directory after work?[y(default)/n]:
unpack nginx modules

=====================================================
exem-nginx-module v3.0.8(96163db) Install on linux 3.10
=====================================================
nginx supported version:
> 1.14.1 1.14.2 1.18.0 1.20.1 1.24.0 1.27.0 1.28.0

// 모니터링할 Nginx 버전을 선택합니다.
Install Nginx Version(version|all): 1.24.0

// 설치 디렉토리 및 설정 파일을 선택합니다.
// 미입력 시, 기본값으로 적용됩니다.
Install Directory (/home/exemone/nginx-module):
nginx module config filename(exem_ngx_mod.conf):

// unique id를 미설정 시, Nginx 재구동할 때마다 앱이 개별 등록됩니다.
(optional)Do you want to fix the 'unique id'?[yes(default)/no]:
Group ID to register(default):

// 미입력 시, hostname으로 적용됩니다.
(optional)Module Name to register(exemone-48.130): test

Install Directory [/home/exemone/nginx-module]
Group ID [default]
Module Name [test]
Generated Unique ID [abc4b7c6-8138-438a-8aa3-4005603a26b9]
=====================================================

// nginx 설정 파일에 아래 내용 추가 필요합니다.
+--> Add the following line to 'nginx.conf' >--+
load_module "/home/exemone/nginx-module/modules/ngx_http_exem_module_1.24.0.so";
http {
include /home/exemone/nginx-module/conf/exem_ngx_mod.conf;
}

단계 2. exem_ngx_mod.conf 파일 수정

파일 위치: ~/nginx-module/conf/exem_ngx_mod.conf

############################################
### EXEM Nginx Module Configuration File ###

exem_group_id default;
exem_unique_id abc4b7c6-8138-438a-8aa3-4005603a26b9;

# module name(default: hostname)
# exem_module_name test;

# EXEMBID with host agent
#exem_bid <input host bid>;

# log path (default:logs/exem_ngx_mod.log)
#exem_log_path logs/exem_ngx_mod.log;
# log level (default:none)
#exem_log_level debug;

# connection ip to agent (default:127.0.0.1)
exem_connect_ip 10.10.48.130;

# connection port to agent (default:12848)
#exem_connect_port 12848;

# skip collect exem metrics (default:true)
#exem_skip_metrics_req true;

server {
listen 127.0.0.1:12849;
server_name 127.0.0.1;
location /exem/v1/metrics {
stub_status_exem;
}
}

Nginx Module 설정 옵션 상세

옵션기본값설명
exem_unique_idRandom한 개의 webserver로 묶을 아이디. 미설정 시 webserver 시작 때마다 랜덤 값으로 변경됨
exem_group_id없음화면에서 등록된 그룹 아이디
exem_module_namehostname화면에서 보여질 webserver name. 미설정 시 hostname으로 적용
exem_bidhostname연계된 host agent와 동일한 값으로 적용해야 함. 미설정 시 hostname으로 적용
exem_log_levelnone로그 레벨: none < error < warning < info < debug
exem_log_pathlogs/mod.log로그 파일 경로
exem_log_max_size10로그 파일 최대 크기(MB). 초과 시 새로 작성됨
exem_connect_ip127.0.0.1Web Server Agent에 연결할 IP
exem_connect_port12848Web Server Agent에 연결할 Port

단계 3. nginx.conf 파일 수정

모니터링 대상인 Nginx의 설정 파일에 아래 내용을 추가합니다:

load_module "/home/exemone/nginx-module/modules/ngx_http_exem_module_1.24.0.so";
http {
include /home/exemone/nginx-module/conf/exem_ngx_mod.conf;
}

Nginx 모듈 호환성 에러 발생 시 조치

Nginx 실행 시 모듈 호환성 에러가 발생하면:

setenforce 0

참고: Nginx의 Master가 root로 실행 / Worker 노드가 nginx로 실행 중인 경우, nginx 모듈을 root로 설치하여 실행해야 합니다.


7-2. Apache Module 설치

사전 설정

  1. Apache가 설치되어 있어야 합니다
  2. 수집서버에 연동된 Web Agent가 구동 중이어야 합니다
  3. Apache 설치 버전을 확인합니다:
# apache2 -v
Server version: Apache/2.4.62 (Debian)
Server built: 2024-10-04T15:21:08
  1. 바이너리 설치 파일을 준비합니다: setup_exem-httpd-module_{Version}.bin

단계 1. Apache Module 설치 실행

./setup_exem-httpd-module_{Version}.bin
=====================================================
EXEM HTTPD Module Setup
=====================================================
choise work
1. unpack
2. install(default)
: 2
SETUP TYPE[install]
Delete directory after work?[y(default)/n]: y
unpack httpd modules

=====================================================
exem-httpd-module v3.0.10(344fb88) Install on linux 3.10
=====================================================
Install HTTPD Version(2.4): 2.4
Install Directory (/root/test/httpd-module):
ExEm Connect IP(127.0.0.1): 127.0.0.1
ExEm Connect Port(12848): 12848
Group ID to register(default): apache-group
(optional)Module Name to register(a1cafd406aaf): apache-sample
EXEM BID with host agent(a1cafd406aaf)
httpd module config filename(exem_httpd_mod.conf):
Do you want to fix the 'unique id'?[yes(default)/no]: yes

Install Directory [/root/test/httpd-module]
Connect IP to Agent [127.0.0.1]
Connect Port to Agent [12848]
Group ID [apache-group]
Module Name [apache-sample]
Generated Unique ID [2fc7f9c7-ef23-435f-adb7-b6837389f728]
=====================================================

+--> Add the following line to 'httpd.conf' >--+
# exem module
Include /root/test/httpd-module/conf/exem_httpd_mod.conf

단계 2. exem_httpd_mod.conf 파일 수정

파일 위치: ~/httpd-module/conf/exem_httpd_mod.conf

############################################
### EXEM Httpd Module Configuration File ###

LoadModule exem_module /root/test/httpd-module/modules/mod_exem_24_linux_64.so

<IfModule exem_module>

ExEmGroupID apache-group
ExEmUniqueID 2fc7f9c7-ef23-435f-adb7-b6837389f728

# module name(default: hostname)
ExEmModuleName apache-sample

# EXEMBID with host agent
ExEmBID a1cafd406aaf

# Send data(packet) logging
ExEmDump false

# default ip:127.0.0.1, port:12848
ExEmConnectIP 127.0.0.1
ExEmConnectPort 12848

# default 5 sec
ExEmConnectReconnectSec 5

# do not use 0(zero)
ExEmLogPath logs/mod_exem.log
ExEmLogLevel info

# default 10 Megabyte
ExEmLogMaxSize 10

# metrics configuration (default: 127.0.0.1:12829/exem/v1/metrics)
#ExEmMetricAddr 127.0.0.1:12829
#ExEmMetricLocation /exem/v1/metrics

</IfModule>

Apache Module 설정 옵션 상세

옵션기본값설명
ExEmUniqueIDRandom한 개의 webserver로 묶을 아이디. 미설정 시 시작 때마다 랜덤 값으로 변경됨
ExEmGroupID"default"수집 대상으로 관리될 그룹 아이디
ExEmModuleName없음화면에서 보여질 webserver name (미설정 시 hostname 사용)
ExEmBID없음host agent와 연동에 필요한 ID. hostname이 인프라스트럭처 호스트 목록에 동일 이름이 있을 경우 웹서버와 맵핑이 되지 않습니다
ExEmDumpfalsedebug 용 패킷 덤프 옵션
ExEmConnectIP127.0.0.1Web Server Agent에 연결할 IP
ExEmConnectPort12848Web Server Agent에 연결할 Port
ExEmConnectReconnectSec5Agent와 연결 끊어진 경우 재연결 시간(초)
ExEmLogPathlogs/mod_exem.log로그 파일 경로
ExEmLogLevelinfo로그 레벨: none < error < warning < info < debug
ExEmLogMaxSize10로그 파일 최대 크기(MB). 초과 시 새로 작성됨
ExEmMetricAddr127.0.0.1Agent에서 metric 수집에 필요한 연결 주소
ExEmMetricLocation12829Agent에서 metric 수집에 필요한 연결 URI

단계 3. Apache 설정 파일 수정 및 재기동

모니터링 대상인 Apache 설정 파일에 exemONE Apache Module 설정 파일 경로를 include합니다.

고객사 Apache 환경에 따라 설정 파일이 다를 수 있습니다:

  • Debian/Ubuntu 계열: /etc/apache2/apache2.conf
  • Red Hat 계열: /etc/httpd/conf/httpd.conf
# exem module
Include /root/test/httpd-module/conf/exem_httpd_mod.conf


8. CPU / Memory 지표 모니터링 설정 (선택)

Web Server 화면에서 Process CPU, Process Memory 등 사용량을 함께 보려면 추가 설정이 필요합니다.

사전 조건: Web Module 서버에 host-agent가 설치되어 있어야 합니다.

단계 1. Web Module의 EXEMBID 설정

Web Module conf 폴더에서 EXEMBID (Nginx: exem_bid, Apache: ExEmBID)를 설정합니다. 빈 값이면 hostname으로 저장됩니다.

주의: infrastructure에 동일한 hostname이 있다면 해당 EXEMBID 부분을 변경해야 합니다.

단계 2. Host Agent의 EXEMBID 동일 설정

Web Module에 설정한 EXEMBID와 동일하게 host-agent에도 설정해야 합니다. host-agent도 EXEMBID를 따로 설정하지 않으면 hostname을 가져옵니다.

확인 방법

설정이 완료되면 webServer 화면에서 Process 관련 필드에 데이터가 표시됩니다.

webserver > webserver Detail > metric 탭에서 Process 태그가 붙어있는 지표를 확인할 수 있습니다.


9. 주의사항

  1. exemONE 버전 확인 필수: Web Server Agent는 exemONE 3.0.506.15.0 이후 버전에서만 지원됩니다.
  2. JDK 17 이상 필수 (Binary 설치 시): JDK 17 미만 버전에서는 Agent가 구동되지 않습니다.
  3. 방화벽 포트 2개 개방 필수: 9009 (Receiver 연결), 12848 (모듈 연결) 포트가 모두 개방되어야 합니다.
  4. 설치 순서 준수: Web Server Agent를 먼저 설치하고 구동한 후, Web Module(Nginx/Apache)을 설치해야 합니다.
  5. Unique ID 설정 권장: unique id를 설정하지 않으면 Nginx/Apache 재구동할 때마다 앱이 개별 등록되므로, 설치 시 unique id를 고정하는 것을 권장합니다.
  6. Nginx 버전 호환성: 지원되는 Nginx 버전(1.14.1, 1.14.2, 1.18.0, 1.20.1, 1.24.0, 1.27.0, 1.28.0)만 모니터링 가능합니다.
  7. SELinux 에러 발생 시: Nginx 실행 시 모듈 호환성 에러가 발생하면 setenforce 0 명령으로 조치합니다.
  8. Nginx Master/Worker 권한: Nginx Master가 root로, Worker가 nginx로 실행되는 환경에서는 nginx 모듈을 root로 설치하여 실행해야 합니다.
  9. EXEMBID 일치 필수: CPU/Memory 지표 연계를 위해 Web Module과 host-agent의 EXEMBID가 반드시 동일해야 합니다.
  10. 패키지 파일 준비: 설치 파일은 제품기술팀에 문의하여 준비합니다.