Cloudera Manager 의 사용자 정의 알림 스크립트가 실행되지 않아 출력 파일이 갱신되지 않는 장애를 추적한 기록이다. 스크립트 자체는 정상이었고, 원인은 Cloudera Management Service 의 역할 간 이벤트·메트릭 전달 체인이 끊긴 것이었다.
| 발생 위치 | 에러 | 의미 |
|---|---|---|
| 각 역할 → Event Server | Failed to publish event ... Connection refused (7184) |
이벤트가 Event Server 로 전달되지 않음 |
| Event Server → Host Monitor | Could not publish metrics to HMON: Connection refused |
Event Server 의 메트릭 전송 실패 |
| Host Monitor → Service Monitor | Failed to send messages to SMON: Connection refused |
HMON 의 전송 실패 |
| Alert Publisher (재시작 시) | Failed delivery ... queue full |
밀린 이벤트 폭주로 내부 전달 큐 초과 |
Event Monitor 에서 다음 오류가 먼저 보이기도 한다.
BasicScmProxy: Exception while getting current fragments hashes
Connection refused (Connection refused)
BasicScmProxy 는 Management Service 의 각 역할이 CM 서버에서 설정 조각을 가져올 때 쓰는 내부 클라이언트다. 자바의 Connection Refused 는 해당 포트에서 리스닝하는 프로세스가 없을 때 주로 나며, 방화벽이 원인인 경우는 상대적으로 드물다.
Management Service 의 각 역할(Event Server · Host Monitor · Service Monitor · Alert Publisher)은 서로 이벤트와 메트릭을 주고받는 체인 구조다. 재시작 과정에서 역할 간 통신이 끊기면 체인의 앞 구간부터 연쇄적으로 실패한다.
알림 전달 경로는 이벤트 발생 → Event Server(7184) → Alert Publisher poll → 스크립트 실행 순서다. 앞 구간이 막혀 있으면 이벤트가 Alert Publisher 까지 도달하지 못하므로 스크립트가 호출될 기회 자체가 없다. 스크립트가 잘못된 것이 아니다.
재시작 직후의 queue full 은 통신이 끊긴 동안 Event Server 에 쌓인 백로그가 Alert Publisher 재기동 직후 한꺼번에 유입되며 내부 큐가 일시적으로 넘친 것이다. 재시작 직후에만 나타나고 이후 재발하지 않으면 일시적 현상으로 본다.
systemctl status cloudera-scm-server
ss -tlnp | grep 7180
curl http://<cm-host>:7180
tail -100 /var/log/cloudera-scm-server/cloudera-scm-server.log
CM 서버 프로세스는 떠 있는데 포트가 열려 있지 않다면 서버 로그를 본다. DB 연결 실패로 기동 중 멈춰 있는 경우가 많다. 에이전트 쪽은 /etc/cloudera-scm-agent/config.ini 의 server_host 설정도 확인한다.
기동 순서 문제가 가장 흔하다. 서버 재부팅이나 업그레이드 후 CM 서버가 완전히 올라오기 전에 Management Service 가 먼저 시작되면 이 오류가 발생한다.
CM 서버가 정상 기동한 것을 확인한 뒤 Cloudera Management Service 를 전체 중지하고 다시 시작한다. 개별 역할만 재시작하는 것보다 CM 이 순서를 보장하는 전체 재시작이 안전하다. queue full 은 백로그가 소화되면서 자연히 해소된다.
마무리는 Administration → Alerts 의 Send Test Alert 로 end-to-end 검증을 하고, 스크립트 출력 파일이 갱신되는지 확인한다.
exit 0)하는 구조를 유지하며, 출력 경로는 cloudera-scm 계정이 쓸 수 있는 위치로 둔다.