자유게시판

Total 34
Today 0
profile_image
슈퍼아이피
26-07-19 16:00 0개 6회
Rocky Linux + Podman으로 만드는 Grafana·Loki·Prometheus 통합 모니터링

사내 서버 모니터링을 자체 구축하려는 분들을 위해, Rocky Linux 9.8 + Podman 환경에서 Grafana·Loki·Promtail·Prometheus 스택을 올리는 과정과 실제로 부딪힌 문제들을 정리했습니다. Docker 기준 튜토리얼은 많지만 Podman 기준으로는 정보가 부족해서, 직접 겪은 함정 위주로 씁니다.

왜 Podman인가

rootless/rootful 선택이 자유롭고, systemd와의 통합이 자연스럽다는 장점이 있지만, Docker 생태계의 관행이 그대로 통하지 않는 지점이 많습니다. 이 스택을 구축하면서 만난 Podman 특유의 문제만 따로 모아봤습니다.

구성 요소

컴포넌트

역할

Prometheus

메트릭 수집·저장

Grafana

대시보드

Loki

로그 저장·검색

Promtail

로그 수집 에이전트

Node Exporter

서버 리소스 메트릭

podman-compose로 전체 스택을 관리하며 root 권한으로 운영했습니다.

겪은 문제와 해결 순서

1. Loki 컨테이너 권한 에러 mkdir /logs permission denied가 첫 관문이었습니다. 컨테이너의 user를 root로 지정하니 해결됐습니다.

2. Grafana 데이터소스 연결 실패 (Nginx 405) Grafana에서 Prometheus/Loki를 데이터소스로 등록할 때 Nginx 405 Not Allowed가 발생했습니다. 리버스 프록시를 거치지 않고 컨테이너 내부 다이렉트 주소로 연결하고, HTTP Method를 GET으로 맞추면서 해결했습니다.

3. Promtail이 로그를 안 가져오는 문제 권한 문제와 라벨 불일치(job 라벨)가 겹쳐서 발생했습니다. root 권한 부여와 라벨 정리로 해결했고, 이후 /var/log/*.log 글롭 패턴이 확장자 없는 messages, secure 파일은 못 잡는다는 것도 확인해서 job을 system-messages, system-secure로 나눠 각각 처리했습니다.

4. Podman 전용 로깅 드라이버 이슈 Docker의 local 로깅 드라이버를 그대로 쓰면 invalid log driver 에러가 납니다. k8s-file로 바꿔야 하는데, 이건 단순 호환성 문제가 아니라 컨테이너 로그가 journald를 거쳐 /var/log/messages로 다시 유입되는 걸 막는 것과도 연결돼 있어서 놓치기 쉬운 부분입니다.

5. Loki 429/500/400 에러 연쇄 대응 운영 중 ingestion rate limit(429), 재시작 직후 empty ring(500), 오래된 로그 진입 시도(400, entry too far behind) 에러를 순서대로 만났습니다. 각각 rate limit 값 조정, 재시작 대기, reject_old_samples_max_age 설정으로 대응했습니다. Loki 이미지에는 셸 유틸리티가 없어서 설정 확인은 호스트 파일을 직접 보거나 curl localhost:3100/config로 했습니다.

6. Positions 파일 미영속화로 인한 로그 중복 수집 Promtail 컨테이너를 재생성할 때마다 positions.yaml이 초기화되면서 로그 전체가 다시 수집되는 문제가 있었습니다. /logs/promtail-positions 볼륨을 마운트해 위치 정보를 영속화하면서 해결했습니다.

7. 컨테이너 리소스 모니터링 - cAdvisor 대신 Podman 전용 exporter cAdvisor로 컨테이너별 CPU/메모리를 보려 했는데, Podman rootful 환경에서 cgroup 경로 문제(Pod 래핑)는 --no-pod 옵션으로 우회했지만, 그 다음엔 컨테이너 자체를 아예 인식하지 못하는 근본적인 한계에 부딪혔습니다. 결국 prometheus-podman-exporter(Podman API 직접 사용)로 전환하는 게 훨씬 안정적이었습니다.

정리

Podman 환경에서 이 스택을 구축한다면, 아래 순서로 확인해보시길 권합니다.

  1. 컨테이너 user/권한 (root 여부)

  2. 로깅 드라이버가 k8s-file인지

  3. Promtail 라벨과 글롭 패턴이 실제 로그 파일명과 맞는지

  4. positions 파일 볼륨 마운트 여부

  5. 컨테이너 메트릭은 cAdvisor 대신 Podman 전용 exporter 우선 고려

Docker 기준 가이드를 그대로 따라가다 막히는 지점 대부분이 이 다섯 가지 중 하나였습니다.

추천 0 비추천 0

댓글목록

등록된 댓글이 없습니다.