본문으로 건너뛰기

exemONE Docker 모드 패치 방법 및 절차

지원 환경

순번항목내용
1운영체제CentOS 7 이상
2CPU / Memory8 core / 16 GB 이상 (인스턴스 1대 기준)
3설치 유형도커 패키지 설치 환경에 한함
4인터넷 환경인터넷 접속 불가능한 환경에서도 실행 가능

전제 조건: 하위 버전 → 504 업데이트 시 PostgreSQL 17 업그레이드 진행이 필요합니다.

또한 패키지 업데이트의 경우 다운그레이드(예: 504버전 → 412버전)가 불가능하므로 작업 전 기존 데이터(ClickHouse, PostgreSQL)를 반드시 백업 후 진행하시기 바랍니다.


1. 모듈별 사용 포트 정보

순번Target출발지도착지TypePort포트 사용 내용
1exem-host-agentLinux, Windows 장비exemONE 수집 서버 (Receiver)gRPC9009범용 gRPC 요청 및 응답
2exem-host-agentUnix 장비exemONE 수집 서버 (Receiver)TCP9010범용 TCP 요청 및 응답
3exem-k8s-agent / exem-container-agent모니터링 대상 장비exemONE 수집 서버 (Receiver)gRPC9009범용 gRPC 요청 및 응답
4exem-db-agent / 개별 db agent모니터링 대상 장비exemONE 수집 서버 (Receiver)gRPC9009범용 gRPC 요청 및 응답
5exem-db-agentexemONE 수집 서버모니터링 대상 Target DBTCPDB Listener PortDB 지표 수집
6exem-java-agent모니터링 대상 장비exemONE 수집 서버 (Receiver)TCP9010범용 TCP 요청 및 응답
7Cloud-exemONE 수집 서버 (Receiver)TCP443-
8모니터링 사용자 PC사용자 PCexemONE 수집 서버 (Gateway)TCP(https)8443WEB UI 접속 포트
9모니터링 사용자 PC사용자 PCexemONE 수집 서버 (Gateway)HTTP8080WEB UI 접속 포트
10exemONE repo (ClickHouse)--TCP8123수집한 데이터 저장
11exemONE repo (PostgreSQL)--TCP5432meta 데이터 저장

2. 모듈별 설정 파일 경로 (Docker 모드)

Docker 모드는 $EXEMONE_HOME/containers/{모듈명}/configs/ 경로에 설정 파일이 위치합니다.

순번모듈명설정 파일 경로
1exemone-api$EXEMONE_HOME/containers/exemone-api/configs/application.yaml
2exemone-receiver$EXEMONE_HOME/containers/exemone-receiver/configs/receiver.yaml
3exemone-db-agent$EXEMONE_HOME/containers/exemone-db-agent/configs/agent.yml
4exemone-cloud-agent$EXEMONE_HOME/containers/exemone-cloud-agent/configs/agent.yml
5exemone-postgresql$EXEMONE_HOME/containers/exemone-postgresql/data/postgresql.conf
6docker-compose$EXEMONE_HOME/installer/exemone/docker-compose.yml
7.env (버전 관리)$EXEMONE_HOME/installer/exemone/.env

참고: Docker 모드에서 포트 변경 시 docker-compose.yml에서 정의된 외부 포트를 변경 후 서비스를 재구동합니다. 각 모듈에 정의된 내부 통신 포트는 변경하지 않아도 됩니다.


3. 패치 전 진행 사항 확인

순번구분내용
1단일 모듈 패치"단일 모듈 업데이트" 절차 진행
2패키지 업데이트 (모듈 버전 변경)"전체 모듈 업데이트" 절차 진행
3하위 버전 → 504 업데이트PostgreSQL 13 → 17.2 업그레이드 별도 진행 필요
4다운그레이드불가 (작업 전 ClickHouse, PostgreSQL 데이터 백업 필수)

4. 단일 모듈 업데이트

특정 모듈만 패치할 경우 아래 절차를 따릅니다.

4-1. 사전 설정 - 이미지 저장 폴더 생성 (둘 중 하나 선택)

순번경로명령어
1home/exemone/exemone/imagemkdir patch
2home/exemone/exemone/installer/exemone/mkdir image

4-2. 패치 이미지 업로드

순번단계내용
1패치할 모듈 이미지를 위에서 생성한 폴더에 업로드합니다.-

4-3. Image Load

경로: 이미지를 저장했던 폴더

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

4-4. .env 파일 버전 변경

경로: home/exemone/exemone/installer/exemone

vi .env

변경 예시 (exemone-front-v3.0.504.15.16.tarexemone-front-v3.0.504.15.17.tar):

// 변경 전
FRONT_IMAGE=maxgauge/exemone-front
FRONT_VERSION=v3.0.504.15.16

// 변경 후
FRONT_IMAGE=maxgauge/exemone-front
FRONT_VERSION=v3.0.504.15.17

4-5. 이미지 재실행

경로: home/exemone/exemone/installer/exemone/scripts

./restart.sh {패치할 이미지}

예시:

./restart.sh front

4-6. 재기동 컨테이너 확인

docker ps


5. 전체 모듈 업데이트

전체 패키지 버전 업데이트 시 아래 절차를 따릅니다.

5-1. 전체 모듈 종료

경로: home/exemone/exemone/installer/exemone/scripts

./shutdown.sh

5-2. Image Load

경로: 이미지를 저장했던 폴더

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

5-3. .env 파일 버전 변경

경로: home/exemone/exemone/installer/exemone

vi .env

변경 예시:

// 변경 전
FRONT_IMAGE=maxgauge/exemone-front
FRONT_VERSION=v3.0.504.15.16

// 변경 후
FRONT_IMAGE=maxgauge/exemone-front
FRONT_VERSION=v3.0.504.15.17

5-4. 네트워크, 환경설정, 컨테이너 빌드 및 실행

경로: home/exemone/exemone/installer/exemone

./restart.sh

5-5. 재기동 컨테이너 확인

docker ps


6. 대용량 패키지 업데이트 (데이터 백업 후 패키지 패치)

PostgreSQL 및 ClickHouse 데이터를 백업한 후 패키지를 패치하는 방법입니다.

6-1. PostgreSQL 백업

api 중지 (api 미중지 시 마이그레이션이 중복 발생할 수 있습니다)

./scripts/shutdown.sh api

postgresql 컨테이너 접속 및 데이터 백업

cd %exemone_home%/installer/exemone
docker exec -it exemone-postgresql bash
cd /var/lib/postgresql
pg_dumpall -U postgres > 250212.sql
exit

docker cp exemone-postgresql:/var/lib/postgresql/250212.sql .

postgresql 종료 및 볼륨 백업

./scripts/shutdown.sh postgresql
mv containers/exemone-postgresql/data containers/exemone-postgresql/data_bak
mkdir containers/exemone-postgresql/data

6-2. 전체 컨테이너 종료

경로: {$EXEMONE_HOME}/scripts

./shutdown.sh

이전 폴더는 폴더 자체를 백업 후 작업합니다.

6-3. 새 패키지 압축 해제

tar -xvzf exemone-pkg.gz
cd /home/exemone/exemone/installer
tar -xvf exemone.tar.gz

6-4. ClickHouse 백업 파일 복사

신규 설치한 exemone 폴더로 이동 후 기존 ClickHouse 데이터를 복사합니다.

cp -r {기존 EXEMONE_HOME}/containers/exemone-clickhouse/ {신규 EXEMONE_HOME}/containers/exemone-clickhouse/

6-5. 새로운 패키징 이미지 로드

경로: {$EXEMONE_HOME}/../../image

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

6-6. exemONE 설치

경로: {$EXEMONE_HOME}/scripts

./install.sh

6-7. PostgreSQL 재시작 및 데이터 복원

./scripts/startup.sh postgresql
docker cp 250212.sql exemone-postgresql:/var/lib/postgresql/
docker exec -it exemone-postgresql bash
cd /var/lib/postgresql
psql -d postgres -U postgres < 250212.sql

6-8. api 재구동

경로: {$EXEMONE_HOME}/scripts

./restart.sh api

7. 주의사항 및 참고

순번항목내용
1지원 OSCentOS 7 이상만 지원
2다운그레이드 불가패키지 업데이트 후 이전 버전으로 다운그레이드 불가. 작업 전 ClickHouse, PostgreSQL 데이터 반드시 백업
3PG 업그레이드하위 버전 → 504 업데이트 시 PostgreSQL 13 → 17.2 업그레이드 별도 진행 필요
4api 중지 순서PostgreSQL 백업 작업 시 api를 먼저 중지해야 마이그레이션 중복 발생을 방지할 수 있음
5restart.sh 누락 라인2024년 5월 29일 이전 패키지의 경우 restart.sh에 아래 라인이 없으면 추가 필요: run_docker_compose build --no-cache ${SERVICE}
6포트 변경Docker 모드에서 포트 변경 시 docker-compose.yml의 외부 포트만 변경 후 서비스 재구동
7DuplicationAgentError 발생 시PostgreSQL 컨테이너에서 SELECT access_token FROM xm_agent WHERE agent_id = 'default'; 쿼리로 access_token 확인 후 agent.yml에 설정

참고 문서