현재 Docker-compose 기반 서버들의 컨테이너 로깅 아키텍쳐는 다음과 같다.
Docker Daemon ( with Docker-loki-plugin) > Loki > Grafana
https://grafana.com/docs/loki/latest/send-data/docker-driver/configuration/
Promtail 을 활용하지 않기에, 기존 k8s 환경에서 Promtail을 이용하던 것과는 다른 방법으로 로그를 파싱해야 함.
관련 내용 리서치.
Docker 환경에서 Log 라벨 설정
1. 환경 설정의 차이
Kubernetes | Docker-compose | |
---|---|---|
컨테이너 로그 수집기 | Promtail | 별도로 존재하지 않음 |
아키텍쳐 | Promtail > Loki > Grafana | Docker Daemon(with docker-loki-plugin) > Loki > Grafana |
라벨 부여 | Promtail | Loki( Relabeling ) |
1) K8S
- Promtail 이 각 pod의 log를 수집함.
- Loki는 Promtail이 수집한 log를 인덱싱 / 저장.
2) Docker-compose 로깅 아키텍쳐
Docker-loki plugin을 설치, docker container 들의 log를 forward 한다.
* 참고: Grafana 공식 문서 가이드.
https://grafana.com/docs/loki/latest/send-data/docker-driver/configuration/
2. 기본 Docker log 라벨들
docker compose 기준 아래 4개의 라벨들이 기본적으로 생성된다.
filename
: 디스크 내 실제로 생성된 log 파일명host
: log 를 생성한 host의 이름compose_project
, compose_service
: compose 파일명에 따라 적절한 형태로 생성됨.
3. 추가 라벨 부여
Relabel: Prometheus relabel 부분 참고.
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
Pipeline stages도 참고 가능.
https://grafana.com/docs/loki/latest/send-data/docker-driver/configuration/#pipeline-stages