DevOps/Promtail

Promtail 이란?

peanutwalnut 2025. 3. 22. 15:06

Grafana Loki와 함께 사용되는 log 수집 에이전트이다. 

시스템에서 생성되는 로그를 모니터링하고, 이를 Loki로 전송하는 역할을 한다.

프로메테우스가 시계열 메트릭을 스크랩하듯, promtail은 로그 파일을 스크랩해 loki에 저장하는 구조를 갖는다.

 

참고 -> 2025년 2월 13일부터 deprecated 된 듯… grafana alloy로 갈아타라는 문구가 있다. ㅠ

 

 

주요 특징

  1. 가벼운(log lightweight) 설계
    • Promtail은 Loki의 디자인 철학에 맞춰 개발되어, Elastic Stack(예: Logstash, Beats)처럼 복잡한 파이프라인보다는 간단하고 확장성 있는 방식을 지향합니다.
    • 대부분의 로그 파싱/처리는 Loki가 아닌 Promtail에서 미리 수행할 수 있도록 설계되었으나, 규모가 크지 않거나 단순한 경우에는 별도의 복잡한 설정 없이도 쉽게 로그를 전송할 수 있습니다.
  2. 다양한 입력 소스
    • 가장 많이 쓰이는 방식은 파일 시스템(직접 tailing) 이며, __path__ 설정을 통해 특정 디렉터리나 파일을 모니터링합니다.
    • Kubernetes 환경에서는 file뿐 아니라 Pod/컨테이너 로그(kubernetes_sd_config), 시스템 저널 로그(journal) 등 다양한 소스에서 로그를 수집할 수 있습니다.
  3. 유연한 라벨(Label) 적용
    • Prometheus처럼 라벨을 통해 로그를 분류합니다. 예: job, hostname, environment 등이 가능하며, 쿼리 시 job="webapp"처럼 필터링할 수 있게 됩니다.
    • relabel_configs / pipeline_stages를 통해 로그 라벨을 생성·수정·삭제하여 원하는 형태로 Loki에 전송할 수 있습니다.
  4. 비동기 전송 & 재시작 시 위치 저장(Positions)
    • Promtail은 내부적으로 Positions 파일을 유지하여, 마지막으로 처리한 로그 라인의 위치(오프셋)를 기억합니다.
    • 재시작 후에도 이전에 수집했던 로그 이후부터 이어서 수집하므로, 중복이나 누락 없이 안정적으로 로그를 전송할 수 있습니다.
  5. Low overhead + 고성능 수집

 

주의사항 및 한계

  1. 파싱 로직 제한
    • Promtail은 Fluentd/Logstash처럼 복잡한 변환 로직을 수행하기엔 기능이 제한적입니다.
    • 복잡한 로그 구조 변환이 필요한 경우, Fluent Bit Plugin이나 Logstash에서 Loki Output Plugin을 사용하는 것도 고려할 수 있습니다.
  2. 로그량 모니터링
    • Promtail에서 전송하는 로그량이 많아질수록 Loki 스토리지와 비용이 증가할 수 있으므로, 불필요한 로그 필터링(drop)과 라벨 최소화가 중요합니다.
  3. 메타데이터 동기화
    • Kubernetes에서 Pod 레이블을 기반으로 라벨을 생성할 때, Pod이 빠르게 종료/재시작하면 메타데이터가 늦게 반영될 수 있으므로, 어떤 시점의 로그가 어떤 라벨과 연결되는지 유의해야 합니다.