Logpresso 프로세스 재기동 시 OS 계정 변경에 따른 Permission denied 원인과 조치 방법

개요

  • Logpresso 프로세스 재기동 시 OS 기동 계정이 변경되면 기존 인덱스/UDP 큐 파일에 Permission denied가 발생한다.

  • 에러가 발생한 핵심 원인은 재기동 시 이전과 다른 계정으로 프로세스를 기동하여 기존 파일 소유권과 불일치하는 것이다.

  • UDP 수신 서버(syslog.close / syslog.open) 재시작 및 데이터 디렉토리 소유권 정리 후 동일 계정으로 재기동하여 해결한다.

적용 대상

  • 제품: Logpresso Sonar

  • 버전:

    • 취약/영향 버전: 전 버전 (기동 계정 불일치 환경)

    • 검증 버전: -

    • 패치/권장 버전: -

  • 대상 환경:

    • OS/배포판: Linux

    • 구성(단일/클러스터, 수집/전달/분석 노드 등): 전체 노드 타입 해당

배경 / 문제 설명

  • 증상: 프로세스 재기동 후 로그 인입량 급감(정상 대비 ~1/10). UdpServer cannot open file for write 에러가 3~5초 간격으로 지속 발생. LogIndexerEngine Permission denied 에러가 다 건 발생.

  • 영향도: 전체 로그 수집 사실상 중단. 수신된 로그가 인덱스 파일에 기록되지 못해 드롭됨.

  • 원인(추정 포함):

    • 장애 복구 시 root로 재기동 → 이 시점에 생성된 인덱스/UDP 큐 파일의 소유자가 root로 기록됨.

    • 이후 정상 운영 계정(logpresso)으로 재기동할 때 해당 파일에 쓰기 권한이 없어 Permission denied 발생.

재현 방법 (선택)

  1. 정상 운영 계정(예: logpresso)으로 운영 중 비정상 종료 발생

  2. 장애 복구 과정에서 root 계정으로 프로세스 재기동 → 신규 생성되는 인덱스/UDP 큐 파일의 소유자가 root로 변경됨

  3. 이후 정상 운영 계정(logpresso)으로 다시 재기동 → logpresso 계정이 root 소유 파일에 쓰기 불가 → Permission denied → 로그 수집 장애

해결 방법

방법 (대안)

  • 데이터 디렉토리 소유권을 정리하고 올바른 계정으로 재기동한다.
# 프로세스 정지 후 진행 권장
chown -R <올바른_계정>:<올바른_그룹> /data/logpresso-data/
chown -R <올바른_계정>:<올바른_그룹> /[패키지경로]
chown -R <올바른_계정>:<올바른_그룹> /[쿼리 내 사용되는 파일] ex) textfile, csvfile 등 쿼리에 사용되는 파일# 프로세스 정지 후 진행 권장chown -R <올바른_계정>:<올바른_그룹> /data/logpresso-data/chown -R <올바른_계정>:<올바른_그룹> /[패키지경로]chown -R <올바른_계정>:<올바른_그룹> /[쿼리 내 사용되는 파일] ex) textfile, csvfile 등 쿼리에 사용되는 파일

# systemctl 서비스 파일의 User= 설정 확인
cat /etc/systemd/system/logpresso.service | grep User

# 올바른 계정으로 재기동
systemctl start logpresso

# 기동 계정 재확인
ps -o user,pid,cmd -p $(pgrep -f araqne-core)

주의사항 / 호환성 영향

  • 운영 중 chown -R은 I/O 부하를 유발할 수 있으므로 가능하면 프로세스 정지 후 수행 필요

검증 방법

# UDP write 에러 해소 확인 (0건이어야 정상)
grep "cannot open file for write" /path/to/araqne.log | tail -5

# Permission denied 에러 해소 확인
grep "Permission denied" /path/to/araqne.log | tail -5

# 프로세스 기동 계정 확인
ps -o user,pid,cmd -p $(pgrep -f araqne-core)

# 데이터 디렉토리 소유권 확인
ls -la /data/logpresso-data/logpresso-index/online/

결론

  • 프로세스 재기동 시 반드시 기존과 동일한 OS 계정으로 기동해야 한다. systemd(systemctl) 또는 logpresso 런처의 User= 설정을 사전에 문서화하고, 장애 복구 시에도 root 직접 기동은 금지한다.

  • UDP write 에러(cannot open file for write)가 발생하면 syslog.close / syslog.open으로 즉시 해소할 수 있다.

  • 재기동 후 반드시 araqne.log에서 Abnormal shutdown detected, Permission denied, cannot open file for write 발생 여부를 즉시 확인한다.

1개의 좋아요