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. 서버 사양
| 구분 | CPU | Memory | SSD - Storage(월) |
|---|---|---|---|
| 최소 | 8 core | 16 GB | 0.5 TB |
| 권장 | 16 core | 32 GB | 1 TB |
인스턴스 개수별 사양:
| 인스턴스 | CPU | Memory | Storage(월) |
|---|---|---|---|
| 5개 | 2 core | 4 GB | 125GB |
| 10개 | 4 core | 8 GB | 250GB |
| 20개 | 8 core | 16 GB | 0.5 TB |
| 40개 | 16 core | 32 GB | 1 TB |
- HDD의 경우 성능이 심하게 떨어지기 때문에 SSD 권장
- 디스크 사용량은 모니터링 대상과 수집 양에 따라 다를 수 있으므로, 구축 후 일별 사용량을 체크하여 필요 시 디스크 증설 또는 보관 주기 수정 필요
- 데이터 없이 Docker만 설치 시 10GB로 설치 가능 (16GB로 사용하는 고객사 있음)
1-3. 화면 해상도 권장 사양
| 구분 | 해상도 |
|---|---|
| 기본(권장) | 1920 x 1080 |
| 최소 | 1366 x 768 (코드상 1200 x 768) |
2. 포트 정보
| Target | 출발지 | 도착지 | Type | Port | 포트 사용 내용 |
|---|---|---|---|---|---|
| exem-host-agent | unix 장비 | Receiver | TCP | 9010 | 범용 TCP 요청 및 응답 |
| exem-host-agent | linux, windows 장비 | Receiver | gRPC | 9009 | 범용 gRPC 요청 및 응답 |
| exem-k8s-agent | 모니터링 대상 장비 | Receiver | gRPC | 9009 | 범용 gRPC 요청 및 응답 |
| exem-container-agent | 모니터링 대상 장비 | Receiver | gRPC | 9009 | 범용 gRPC 요청 및 응답 |
| exem-db-agent | 수집 서버 | Target DB | TCP | DB Listener Port | DB 지표 수집 |
| 개별 db agent | 모니터링 대상 장비 | Receiver | gRPC | 9009 | 범용 gRPC 요청 및 응답 |
| exem-java-agent | 모니터링 대상 장비 | Receiver | TCP | 9010 | 범용 TCP 요청 및 응답 |
| Cloud | - | Receiver | TCP | 443 | 클라우드 데이터 수집 |
| 모니터링 사용자 PC | 사용자 PC | Gateway | HTTPS | 8443 | WEB UI 접속 포트 |
| HTTP | 8080 | WEB UI 접속 포트 | |||
| ClickHouse | TCP | 8123 | 수집 데이터 저장 | ||
| PostgreSQL | TCP | 5432 | 메타 데이터 저장 |
3. 수집 서버 모듈 구성 (총 16개)

설치 후 docker ps로 확인 시, 아래 총 16개 컨테이너가 모두 실행(Up) 상태여야 합니다:
| exemONE 수집 모듈 | 외부 모듈 |
|---|---|
| exemone-db-agent | exemone-cache |
| exemone-cloud-agent | exemone-https |
| exemone-core | exemone-redis |
| exemone-alerter | exemone-kafka |
| exemone-receiver | exemone-postgresql |
| exemone-ingester | exemone-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 실행 전에 설정합니다.
인터넷 안 되는 환경
/etc/docker/daemon.json파일 수정:
{ "data-root": "경로" }

- Docker 실행:
nohup dockerd --data-root {디렉토리 경로} &
이전 데이터 복사가 필요한 경우:
- Docker 데몬 중지
- 새 경로 생성
rsync로 데이터 복사:
rsync -aHAX --numeric-ids /var/lib/docker/ /data/docker/
/var/lib/docker백업 이름 변경daemon.json또는dockerd --data-root로 새 경로 실행docker ps -a,docker images확인
인터넷 가능한 환경 (CentOS 7)
- 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:
- Docker 실행:
sudo systemctl start docker && sudo systemctl enable docker
9. docker-compose 버전 변경 (선택사항)
docker-compose 버전을 업그레이드하려면:
- 실행 중인 컨테이너를 중지:
$EXEMONE_HOME/scripts/shutdown.sh
- 기존 docker-compose 제거:
sudo rm -rf /usr/local/bin/docker-compose
# 또는
sudo yum remove docker-compose-plugin
- 새 docker-compose 파일을 서버에 업로드 후 복사 및 권한 부여:
sudo cp docker-compose-2.40.3 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 버전 확인:
docker-compose version

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

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

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