DevOps/Promtail
Promtail 이란?
peanutwalnut
2025. 3. 22. 15:06
Grafana Loki와 함께 사용되는 log 수집 에이전트이다.
시스템에서 생성되는 로그를 모니터링하고, 이를 Loki로 전송하는 역할을 한다.
프로메테우스가 시계열 메트릭을 스크랩하듯, promtail은 로그 파일을 스크랩해 loki에 저장하는 구조를 갖는다.
참고 -> 2025년 2월 13일부터 deprecated 된 듯… grafana alloy로 갈아타라는 문구가 있다. ㅠ
주요 특징
- 가벼운(log lightweight) 설계
- Promtail은 Loki의 디자인 철학에 맞춰 개발되어, Elastic Stack(예: Logstash, Beats)처럼 복잡한 파이프라인보다는 간단하고 확장성 있는 방식을 지향합니다.
- 대부분의 로그 파싱/처리는 Loki가 아닌 Promtail에서 미리 수행할 수 있도록 설계되었으나, 규모가 크지 않거나 단순한 경우에는 별도의 복잡한 설정 없이도 쉽게 로그를 전송할 수 있습니다.
- 다양한 입력 소스
- 가장 많이 쓰이는 방식은 파일 시스템(직접 tailing) 이며, __path__ 설정을 통해 특정 디렉터리나 파일을 모니터링합니다.
- Kubernetes 환경에서는 file뿐 아니라 Pod/컨테이너 로그(kubernetes_sd_config), 시스템 저널 로그(journal) 등 다양한 소스에서 로그를 수집할 수 있습니다.
- 유연한 라벨(Label) 적용
- Prometheus처럼 라벨을 통해 로그를 분류합니다. 예: job, hostname, environment 등이 가능하며, 쿼리 시 job="webapp"처럼 필터링할 수 있게 됩니다.
- relabel_configs / pipeline_stages를 통해 로그 라벨을 생성·수정·삭제하여 원하는 형태로 Loki에 전송할 수 있습니다.
- 비동기 전송 & 재시작 시 위치 저장(Positions)
- Promtail은 내부적으로 Positions 파일을 유지하여, 마지막으로 처리한 로그 라인의 위치(오프셋)를 기억합니다.
- 재시작 후에도 이전에 수집했던 로그 이후부터 이어서 수집하므로, 중복이나 누락 없이 안정적으로 로그를 전송할 수 있습니다.
- Low overhead + 고성능 수집
- Promtail은 일반적으로 CPU와 메모리 사용량이 적어 노드별로 가볍게 배포하기 좋습니다.
- Loki와는 기본적으로 Push 모델(Promtail → Loki)로 동작하며, 필요할 경우 Promtail 대신 다른 로그 수집기(Fluent Bit, Logstash, Vector 등)와 연동해도 됩니다.
주의사항 및 한계
- 파싱 로직 제한
- Promtail은 Fluentd/Logstash처럼 복잡한 변환 로직을 수행하기엔 기능이 제한적입니다.
- 복잡한 로그 구조 변환이 필요한 경우, Fluent Bit Plugin이나 Logstash에서 Loki Output Plugin을 사용하는 것도 고려할 수 있습니다.
- 로그량 모니터링
- Promtail에서 전송하는 로그량이 많아질수록 Loki 스토리지와 비용이 증가할 수 있으므로, 불필요한 로그 필터링(drop)과 라벨 최소화가 중요합니다.
- 메타데이터 동기화
- Kubernetes에서 Pod 레이블을 기반으로 라벨을 생성할 때, Pod이 빠르게 종료/재시작하면 메타데이터가 늦게 반영될 수 있으므로, 어떤 시점의 로그가 어떤 라벨과 연결되는지 유의해야 합니다.