이 강의에서는 이전에 다운로드한 loki-config.yml
과 promtail-local-config.yml
파일을 Docker Compose 파일에 통합하여 로그 집계를 구현하는 방법을 설명합니다. 이 강의를 통해 Docker Compose를 수정하여 Grafana, Loki, Promtail을 설정하고, 로그를 중앙에서 관리할 수 있도록 구성할 것입니다.
먼저, loki-config.yml
과 promtail-local-config.yml
파일을 다운로드하여 프로젝트에 추가합니다.
폴더 생성:
observability
라는 폴더를 생성합니다.loki
와 promtail
폴더를 각각 생성합니다.파일 저장:
loki-config.yml
파일을 observability/loki
폴더에 저장합니다.promtail-local-config.yml
파일을 observability/promtail
폴더에 저장합니다.이제 docker-compose.yml
파일을 수정하여 Loki와 Promtail 서비스를 추가하고, 기존 서비스와 통합합니다.
기존 Docker Compose 파일 열기:
prod
환경에 있는 docker-compose.yml
파일을 엽니다.s10
태그를 s11
태그로 변경하여 새로운 이미지를 사용할 수 있도록 설정합니다.새로운 서비스 추가:
docker-compose.yml
파일에 Loki와 Promtail 서비스를 추가합니다. 아래는 이를 위한 코드입니다.version: '3.7'
services:
# 기존 서비스 정의
loki-read:
image: grafana/loki:2.4.1
command: -config.file=/etc/loki/config.yml -target=read
volumes:
- ./observability/loki/loki-config.yml:/etc/loki/config.yml
ports:
- "3101:3101"
networks:
easybank:
aliases:
- loki
depends_on:
- minio
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3101/ready"]
interval: 30s
timeout: 5s
retries: 3
loki-write:
image: grafana/loki:2.4.1
command: -config.file=/etc/loki/config.yml -target=write
volumes:
- ./observability/loki/loki-config.yml:/etc/loki/config.yml
ports:
- "3102:3102"
networks:
easybank:
depends_on:
- minio
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3102/ready"]
interval: 30s
timeout: 5s
retries: 3
promtail:
image: grafana/promtail:2.4.1
volumes:
- /var/log:/var/log
- ./observability/promtail/promtail-local-config.yml:/etc/promtail/config.yml
command: -config.file=/etc/promtail/config.yml
networks:
easybank:
depends_on:
- gateway
minio:
image: minio/minio:RELEASE.2021-03-17T02-33-02Z
command: server /data
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=minio123
ports:
- "9000:9000"
volumes:
- ./data/minio:/data
networks:
easybank:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 5s
retries: 3
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana-storage:/var/lib/grafana
depends_on:
- gateway
networks:
easybank:
gateway:
image: nginx:latest
ports:
- "3100:3100"
networks:
easybank:
depends_on:
- loki-read
- loki-write
command: ["/bin/sh", "-c", "while :; do sleep 10; done"]
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
networks:
easybank:
external: true
volumes:
grafana-storage:
loki-storage:
loki
및 promtail
의 구성 파일 경로를 올바르게 지정합니다.모든 구성을 마친 후, Docker Compose를 사용하여 서비스를 실행합니다.
docker-compose up -d
s11
태그로 빌드하고 푸시해야 합니다. 다음 명령을 사용하여 이미지를 빌드하고 푸시합니다.mvn jib:build -Dimage=<your-dockerhub-username>/<service-name>:s11
docker push <your-dockerhub-username>/<service-name>:s11
docker ps
명령을 사용하여 모든 컨테이너가 정상적으로 실행 중인지 확인합니다.이제 Grafana를 통해 Loki에 저장된 로그를 시각화할 수 있습니다.
http://localhost:3000
으로 이동하여 Grafana에 접속합니다.admin/admin
)로 로그인합니다.Configuration > Data Sources
로 이동하여 Add data source
를 클릭한 후 Loki
를 선택합니다.URL
필드에 http://gateway:3100
을 입력하고 Save & Test
를 클릭합니다.Explore
메뉴에서 Loki로부터 수집된 로그를 확인할 수 있습니다.이번 강의에서는 Grafana, Loki, Promtail을 사용하여 로그 집계를 설정하고, 이를 통해 마이크로서비스의 로그를 중앙에서 관리하는 방법을 배웠습니다. 다음 강의에서는 추가적인 설정과 함께, 이러한 도구들을 활용하여 마이크로서비스의 성능을 모니터링하는 방법을 배울 것입니다.