본문으로 건너뛰기

Docker 모드 설치

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


exemONE Docker 모드 신규 설치 가이드

참고 문서:


1. 지원 환경 및 시스템 요구사항

1-1. 지원 OS

구분지원 OS
Docker 모드Linux Redhat(RHEL) 7.x 이상, Linux CentOS 7.x 이상, Linux Rocky 8.x 이상, Ubuntu 20.x 이상, Amazon Linux 2023 이상

1-2. 서버 사양

구분CPUMemorySSD - Storage(월)
최소8 core16 GB0.5 TB
권장16 core32 GB1 TB

인스턴스 개수별 사양:

인스턴스CPUMemoryStorage(월)
5개2 core4 GB125GB
10개4 core8 GB250GB
20개8 core16 GB0.5 TB
40개16 core32 GB1 TB
  • HDD의 경우 성능이 심하게 떨어지기 때문에 SSD 권장
  • 디스크 사용량은 모니터링 대상과 수집 양에 따라 다를 수 있으므로, 구축 후 일별 사용량을 체크하여 필요 시 디스크 증설 또는 보관 주기 수정 필요
  • 데이터 없이 Docker만 설치 시 10GB로 설치 가능 (16GB로 사용하는 고객사 있음)

1-3. 화면 해상도 권장 사양

구분해상도
기본(권장)1920 x 1080
최소1366 x 768 (코드상 1200 x 768)

2. 포트 정보

Target출발지도착지TypePort포트 사용 내용
exem-host-agentunix 장비ReceiverTCP9010범용 TCP 요청 및 응답
exem-host-agentlinux, windows 장비ReceivergRPC9009범용 gRPC 요청 및 응답
exem-k8s-agent모니터링 대상 장비ReceivergRPC9009범용 gRPC 요청 및 응답
exem-container-agent모니터링 대상 장비ReceivergRPC9009범용 gRPC 요청 및 응답
exem-db-agent수집 서버Target DBTCPDB Listener PortDB 지표 수집
개별 db agent모니터링 대상 장비ReceivergRPC9009범용 gRPC 요청 및 응답
exem-java-agent모니터링 대상 장비ReceiverTCP9010범용 TCP 요청 및 응답
Cloud-ReceiverTCP443클라우드 데이터 수집
모니터링 사용자 PC사용자 PCGatewayHTTPS8443WEB UI 접속 포트
HTTP8080WEB UI 접속 포트
ClickHouseTCP8123수집 데이터 저장
PostgreSQLTCP5432메타 데이터 저장

3. 수집 서버 모듈 구성 (총 16개)

설치 후 docker ps로 확인 시, 아래 총 16개 컨테이너가 모두 실행(Up) 상태여야 합니다:

exemONE 수집 모듈외부 모듈
exemone-db-agentexemone-cache
exemone-cloud-agentexemone-https
exemone-coreexemone-redis
exemone-alerterexemone-kafka
exemone-receiverexemone-postgresql
exemone-ingesterexemone-clickhouse
exemone-gateway
exemone-api
exemone-front
exemone-api-agent

4. Docker 모드 신규 설치 절차 (단계별)

[Phase 1] 사전 설정 (root 권한으로 진행)

단계 1. Timezone 설정

mv -f /etc/localtime /etc/localtime.tmp
cp -rf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

단계 2. exemone 계정 생성

제품 운영을 위한 전용 계정을 생성합니다 (sudo 권한 추가).

sudo groupadd -g 1201 exemone
sudo adduser -u 1201 -g 1201 exemone
sudo passwd exemone
> New password: exemsaas
> Retry new password: exemsaas
usermod -aG root exemone

단계 3. 설치 파일 준비

인터넷이 되는 환경에서는 install/update 쉘을 통해 최신 Docker 이미지를 받을 수 있지만, 인터넷이 되지 않는 환경에서는 패키지, 모듈, 외부 컴포넌트, Docker 설치 파일을 사전에 준비해야 합니다.

파일은 제품기술팀에 문의하세요.

# 설치 파일 업로드 후 압축 해제
tar -zxvf exemone-pkg.tar.gz

단계 4. Docker 설치

CASE 1. 일반 Docker 설치

root 계정으로 수행하거나, exemone 계정 이용 시 sudo를 붙여서 수행합니다. 경로: home/exemone/exemone/docker

# 파일 압축 해제
tar -xzvf docker-[version].tgz

# Docker 실행 파일 복사
sudo cp docker/* /usr/bin

# 백그라운드에서 Docker 실행
sudo nohup dockerd &

# id 1001로 docker 그룹 생성
sudo groupadd -g 1001 docker

# exemone 계정을 docker 그룹에 추가
sudo usermod -aG docker exemone

# 일반 사용자도 도커 명령어 쓸 수 있게 권한 설정
sudo chown root:docker /var/run/docker.sock
CASE 2. Amazon Linux Docker 설치
# 1. RPM 압축 해제
tar -xvzf docker-20.10.25-1.amzn2.0.4.x86-64.rpm.tar.gz

# 2. 모든 RPM 설치
sudo rpm -iv *

# 3. Docker 서비스 등록 및 시작
sudo systemctl enable docker --now

# 4. 사용자에게 Docker 권한 부여 후 재접속
sudo usermod -aG docker [user_id]

docker ps 명령어 실행 시 아래 이미지처럼 나오면 Docker 설치 완료:

단계 5. Docker-compose 설치

# 파일 복사
sudo cp docker-compose-2.24.6 /usr/local/bin/docker-compose

# 실행 가능하도록 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 버전 확인
docker-compose version

[Phase 2] 제품 설치 (exemone 계정으로 진행)

단계 1. exemone 계정 로그인

su - exemone

단계 2. exemONE 패키징 압축 해제

# 경로 변경
cd /home/exemone/

# 파일 압축 해제 (이전에 압축 해제했다면 스킵)
tar -zxvf exemone-installer-v.tar.gz

단계 3. exemONE 파일 압축 해제

경로: /home/exemone/exemone/installer

tar -xvzf exemone.tar.gz

단계 4. Docker 이미지 전체 로드

경로: /home/exemone/exemone/image

ls *.tar.gz | xargs -L 1 docker load -i

단계 5. 설치 진행

경로: /home/exemone/exemone/install/exemone

./install.sh

단계 6. 설치 확인

Docker 프로세스를 확인합니다.

docker ps

확인 사항:

  • 총 16개 컨테이너가 모두 표시되어야 정상
  • STATUS 항목에서 Restarting 표시 없이, Up X minutes로 정상 기동 확인


5. docker-compose 설정

5-1. docker-compose.yml 파일 위치

$EXEMONE_HOME/installer/exemone/docker-compose.yml

$EXEMONE_HOME은 일반적으로 /home/exemone/exemone/installer/exemone입니다.

5-2. .env 파일 (모듈 버전 관리)

경로: $EXEMONE_HOME/installer/exemone/.env

.env 파일에서 각 모듈의 Docker 이미지와 버전을 관리합니다.

vi .env
# .env 파일 예시
FRONT_IMAGE=maxgauge/exemone-front
FRONT_VERSION=v3.0.504.15.16
# ... (각 모듈별 IMAGE와 VERSION 정의)

5-3. docker-compose.yml 포트 변경 방법

docker-compose.yml에서 정의된 외부 포트를 변경 후 서비스를 재구동합니다. 각 모듈에 정의된 port 정보는 내부 통신이므로 변경하지 않아도 됩니다.

예시: API 포트 변경

vi exemone/installer/exemone/docker-compose.yml
  • 디폴트 값인 8081을 원하는 값으로 변경

  • 포트 변경 후 재기동:
./onectl restart api

5-4. docker-compose 로그 설정

docker-compose.yml 파일에서 모든 모듈의 로그 사이즈 및 파일 개수를 설정할 수 있습니다.

기본값:

  • max-size: 100M (파일당 최대 크기)
  • max-file: 2 (최대 파일 개수)

변경 후 적용:

$EXEMONE_HOME/scripts/restart.sh

6. 관리 스크립트

Docker 모드에서는 $EXEMONE_HOME/scripts/ 디렉토리의 쉘 스크립트로 모듈을 관리합니다.

스크립트설명
./install.sh신규 설치 (네트워크, 환경설정, 컨테이너 빌드 및 실행)
./scripts/startup.sh전체 모듈 시작
./scripts/shutdown.sh전체 모듈 중지
./scripts/restart.sh전체 모듈 재시작
./scripts/startup.sh [모듈명]특정 모듈 시작 (예: ./scripts/startup.sh postgresql)
./scripts/shutdown.sh [모듈명]특정 모듈 중지 (예: ./scripts/shutdown.sh api)
./scripts/restart.sh [모듈명]특정 모듈 재시작 (예: ./scripts/restart.sh front)
docker ps전체 컨테이너 상태 확인

7. 설치 후 정상 작동 확인 리스트

7-1. 수집 서버 프로세스 확인

docker ps
  • IMAGE NAMES로 총 16개 모듈이 모두 보여야 정상
  • STATUS 항목에서 Restarting 표시 없이 Up X minutes 확인

7-2. 비정상 모듈 로그 확인

Restarting 표시되는 컨테이너가 있으면:

tail -f $EXEMONE_HOME/containers/재기동중인 모듈/logs/모듈명.log | grep ERR
# 예시:
tail -f $EXEMONE_HOME/containers/exemone-core/logs/core.log | grep ERR

7-3. 웹 화면 접속 확인

  • 브라우저에서 https://[수집서버IP]:8443 또는 http://[수집서버IP]:8080으로 접속
  • 로그인이 정상적으로 되는지 확인
  • 로그인 실패 시 exemone-api 로그 확인 필요

7-4. 에이전트 상태 확인

  • HOST 기본 뷰: Active / Inactive 상태 확인

  • Database 기본 뷰: Active / No Signal 상태 확인

  • Kubernetes Pod 뷰: Running 상태 확인

  • WAS 기본 뷰: Active 상태 확인

inactive 또는 nosignal인 경우, 수집서버 ↔ 타겟 서버 간 네트워크 및 포트(9009/9010) 방화벽 확인이 필요합니다.


8. Docker 경로 변경 (선택사항)

Docker 데이터 저장 경로를 변경하려면, Docker 설치 후 dockerd 실행 전에 설정합니다.

인터넷 안 되는 환경

  1. /etc/docker/daemon.json 파일 수정:
{ "data-root": "경로" }

  1. Docker 실행:
nohup dockerd --data-root {디렉토리 경로} &

이전 데이터 복사가 필요한 경우:

  1. Docker 데몬 중지
  2. 새 경로 생성
  3. rsync로 데이터 복사:
rsync -aHAX --numeric-ids /var/lib/docker/ /data/docker/
  1. /var/lib/docker 백업 이름 변경
  2. daemon.json 또는 dockerd --data-root로 새 경로 실행
  3. docker ps -a, docker images 확인

인터넷 가능한 환경 (CentOS 7)

  1. docker.service 파일 수정:
sudo vim /lib/systemd/system/docker.service

# 기존:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 변경:
ExecStart=/usr/bin/dockerd --data-root /경로/docker -H fd:
  1. Docker 실행:
sudo systemctl start docker && sudo systemctl enable docker

9. docker-compose 버전 변경 (선택사항)

docker-compose 버전을 업그레이드하려면:

  1. 실행 중인 컨테이너를 중지:
$EXEMONE_HOME/scripts/shutdown.sh
  1. 기존 docker-compose 제거:
sudo rm -rf /usr/local/bin/docker-compose
# 또는
sudo yum remove docker-compose-plugin
  1. 새 docker-compose 파일을 서버에 업로드 후 복사 및 권한 부여:
sudo cp docker-compose-2.40.3 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. 버전 확인:
docker-compose version

  1. exemONE 다시 시작:
$EXEMONE_HOME/scripts/startup.sh

10. 모듈 패치 방법 (설치 후)

단일 모듈 패치

  1. 패치 이미지를 서버에 업로드 후 로드:
ls *.tar.gz | xargs -L 1 docker load -i
  1. .env 파일에서 패치할 버전 변경:
vi .env
# 변경 전
FRONT_VERSION=v3.0.504.15.16
# 변경 후
FRONT_VERSION=v3.0.504.15.17
  1. 해당 모듈 재시작:
./scripts/restart.sh front
  1. 재기동 확인:
docker ps

전체 모듈 패치

  1. 전체 모듈 종료:
./scripts/shutdown.sh
  1. 이미지 로드:
ls *.tar.gz | xargs -L 1 docker load -i
  1. .env 파일에서 모든 모듈 버전 변경

  2. 전체 재시작:

./scripts/restart.sh


11. 주의사항

  1. 사전 설정은 반드시 root 권한, 제품 설치는 반드시 exemone 계정으로 진행해야 합니다.
  2. SSD 필수: HDD 사용 시 심각한 성능 저하가 발생합니다.
  3. 인터넷 불가 환경: Docker 이미지 파일을 사전에 준비하여 수동 로드(docker load -i)해야 합니다.
  4. 패키지 파일 준비: 설치 파일(exemone-pkg.tar.gz, exemone-installer-v.tar.gz)은 제품기술팀에 문의하여 준비합니다.
  5. docker-compose 포트 변경 시: docker-compose.yml의 외부 포트만 변경하면 됩니다. 내부 통신 포트는 변경하지 않아도 됩니다.
  6. 패키지 업데이트(버전 변경) 시: 다운그레이드가 불가능하므로, 작업 전 기존 데이터 백업(ClickHouse, PostgreSQL) 후 진행하세요. 상세 가이드: 데이터 백업 후 패키지 패치
  7. 2024년 5월 29일 이전 패키지: restart.shrun_docker_compose build --no-cache ${SERVICE} 라인이 빠져있을 경우 추가해야 합니다.
  8. ClickHouse 로그 레벨: {exemone 설치 경로}/containers/exemone-clickhouse/config.d/config.xml에서 변경 가능하며, 재시작 없이 바로 적용됩니다.