본문으로 건너뛰기

바이너리패키지에서제공

개요

바이너리 패키지 환경에서 api-agent를 설치하는 가이드입니다. exemone-api-agent-v3.0.508.3 버전을 예시로 합니다.

1. 다운로드

다운로드 위치는 상관 없습니다.

cd exemone
mkdir agent
cd agent
<여기에 api-agent 다운로드>

tar -zxvf exemone-api-agent-v3.0.508.3.tar.gz # 압축 해제

2. bins 디렉터리에 실행 바이너리 복사

cd exemone-api-agent-v3.0.508.3
cp exemone-api-agent-v3.0.508.3 /home/exemone/exemone/bins/exemone-api-agent/

3. licenses 생성

cd /home/exemone/exemone/licenses
mkdir exemone-api-agent

cd /home/exemone/exemone/agent/exemone-api-agent-v3.0.508.3
cp -r licenses home/exemone/exemone/licenses/exemone-api-agent

4. .env에 버전 입력

cd /home/exemone/exemone
vi .env
EXEMONE_API_AGENT=exemone-api-agent-v3.0.508.3

5. api-agent 실행&중지 스크립트

cd /home/exemone/exemone/services/exemone-api-agent

  • start.sh
#!/bin/bash
set -e
if [ -z "${EXEMONE_HOME}" ]; then
export EXEMONE_HOME="$(dirname $(dirname $(pwd)))"
echo "set EXEMONE_HOME=$EXEMONE_HOME"
fi
. "${EXEMONE_HOME}/scripts/lib.sh"

# 변수 설정
cur_dir=$(pwd)

# Load .env file if it exists in current directory
if [ -f "${cur_dir}/.env" ]; then
set -a # Enable auto-export
source "${cur_dir}/.env"
set +a # Disable auto-export
fi
service_name=$(basename "${cur_dir}")
pid_file=${cur_dir}/${service_name}.pid
binary_file=${EXEMONE_HOME}/bins/exemone-api-agent/${EXEMONE_API_AGENT}
config_file=${cur_dir}/configs/agent.yaml
signal_file=${cur_dir}/signal.act
lockfile=${cur_dir}/${service_name}.lock

(
flock -n 200 || { log INFO "${service_name} start.sh already running. Exiting."; exit 1; }

log INFO "Start ${service_name} init"
# LD_LIBRARY_PATH 설정
if [[ -z "${LD_LIBRARY_PATH}" ]]; then
export LD_LIBRARY_PATH=${EXEMONE_HOME}/libs
elif [[ ! ${LD_LIBRARY_PATH} =~ ${EXEMONE_HOME}/libs ]]; then
export LD_LIBRARY_PATH="${EXEMONE_HOME}/libs:${LD_LIBRARY_PATH}"
fi

# 기존에 실행중인 프로세스 종료
if [ -f "${pid_file}" ]; then
log "INFO" "Stop ${service_name} process before start process"
stop_process "${service_name}" "${pid_file}"
fi

# 실행중인 signal이 있으면 제거
if [ -f "${signal_file}" ]; then
rm -f "${signal_file}"
fi

# 프로세스 시작
log "INFO" "Start ${service_name} process"
nohup "${binary_file}" start --config "${config_file}" > /dev/null 2>&1 & echo -n $! > "${pid_file}"

# 프로세스 시작 확인
sleep 1
check_process "${service_name}" "${pid_file}"
) 200>"${lockfile}"

stop.sh

#!/bin/bash
set -e
if [ -z ${EXEMONE_HOME} ]; then
export EXEMONE_HOME="$(dirname $(dirname $(pwd)))"
echo "set EXEMONE_HOME=$EXEMONE_HOME"
fi
. ${EXEMONE_HOME}/scripts/lib.sh

# 현재 디렉토리 이름
cur_dir=$(pwd)
service_name=$(basename ${cur_dir})
pid_file=${cur_dir}/${service_name}.pid
signal_file=${cur_dir}/signal.act

touch ${signal_file}
stop_process ${service_name} ${pid_file}

version.sh

set -e
if [ -z ${EXEMONE_HOME} ]; then
export EXEMONE_HOME="$(dirname $(dirname $(pwd)))"
echo "set EXEMONE_HOME=$EXEMONE_HOME"
fi
. ${EXEMONE_HOME}/scripts/lib.sh

# 현재 디렉토리 이름
cur_dir=$(pwd)
service_name=$(basename ${cur_dir})
binary_path=${EXEMONE_HOME}/bins/exemone-api-agent/${EXEMONE_API_AGENT}

${binary_path} version

6. 권한 부여

cd services/exemone-api-agent/
chmod +x *.sh

7. observer 동작을 위한 파일 추가

cd /home/exemone/exemone/services/exemone-api-agent vi observer.properties

monitoring=true

8. onectl 파일 수정

수정 사항이 많기 때문에 기존 onectl 파일을 해당 onectl 파일로 대체합니다.

권한 부여

chmod +x onectl

동작 예시

실행

[exemone@localhost exemone]$ ./onectl start api-agent
Starting service : exemone-api-agent
[2025-11-05 13:17:25] EXEMONE INFO Start exemone-api-agent init
[2025-11-05 13:17:25] EXEMONE INFO Start exemone-api-agent process
[2025-11-05 13:17:26] EXEMONE INFO exemone-api-agent process is started. pid: 1499726

로그 확인

[exemone@localhost exemone]$ ./onectl log api-agent
Selected service: exemone-api-agent
2025-11-05 13:06:13 INF receive start service=url-agent
2025-11-05 13:06:13 INF send loop start service=url-agent
2025-11-05 13:06:18 INF [STAT][INIT] service=url-agent
2025-11-05 13:17:25 INF [SNED] send agent info service=url-agent
2025-11-05 13:17:25 INF check instance start service=url-agent
2025-11-05 13:17:25 INF receive loop start service=url-agent
2025-11-05 13:17:25 INF send loop start service=url-agent
2025-11-05 13:17:25 INF receive start service=url-agent
2025-11-05 13:17:25 INF collect start service=url-agent
2025-11-05 13:17:30 INF [STAT][INIT] service=url-agent

버전 확인

[exemone@localhost exemone]$ ./onectl ver api-agent
Checking version of service : exemone-api-agent
exemONE service Version: v3.0.508.3, CommitID: 4887b2d5
BuildTime: Mon Nov 3 06:50:07 UTC 2025, Build With go1.20.4

중지

[exemone@localhost exemone]$ ./onectl stop api-agent
Stoping service : exemone-api-agent
[2025-11-05 13:18:16] EXEMONE INFO Stop exemone-api-agent process. pid: 1499726