나의 잡다한 노트 및 메모

promtail.yaml 예시 템플릿 본문

템플릿

promtail.yaml 예시 템플릿

peanutwalnut 2025. 3. 22. 15:12
server:
  # Promtail 내부 상태 및 메트릭 확인용 서버 설정
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  # Promtail이 마지막으로 읽은 로그 위치를 저장하는 파일
  filename: /tmp/positions.yaml

clients:
  # Loki 서버에 로그를 전송하기 위한 설정 (push 방식)
  - url: http://loki:3100/loki/api/v1/push  # 예: Loki 서비스 주소

scrape_configs:
  # 어떤 로그를 어떻게 수집할지 정의하는 섹션
  - job_name: system_logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: system_logs      # 로그에 부여할 라벨
          __path__: /var/log/*.log  # 수집할 로그 파일 경로 (와일드카드 사용 가능)

    # (선택) 로그 파이프라인 설정
    pipeline_stages:
      - drop:
          # 정규식 매칭 시 해당 로그 라인을 드롭(수집 제외)
          expression: '(?s).*healthcheck.*status=200.*'

      # - regex:
      #     # 로그 내용을 정규식으로 파싱해 라벨로 추출할 때 사용
      #     expression: '^(?P<timestamp>[^ ]+) (?P<loglevel>[A-Z]+) (?P<msg>.*)'

      # - labels:
      #     timestamp: ts
      #     loglevel: level
      #     msg: message

      # - timestamp:
      #     source: ts
      #     format: RFC3339

    # (선택) 라벨 재가공 설정
    relabel_configs:
      - source_labels: ["__path__"]
        target_label: "source_file"

  # 필요하다면, 다른 job 정의를 추가
  - job_name: app_logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: app_logs
          __path__: /home/myapp/logs/*.log

    # 여기에 별도의 pipeline_stages, relabel_configs를 정의할 수도 있음