Profile picture

[Docker] 도커(Docker) 컨테이너 모니터링 솔루션 - Dockprom

JaehyoJJAng2023년 05월 18일

◾️ Dockprom


DockProm을 사용하여 도커 컨테이너에 대한 모니터링을 설정하고 Grafana로 모니터링 통계를 직관적으로 표시해보자. image


▪️ 사전 준비

  • Docker Engine >= 1.13
  • Docker Compose >= 1.11

▪️ 도커로 설치

  • 컨테이너 구성
    • alertmanager
    • Prometheus (metrics database) http://:9090
    • Prometheus-Pushgateway (push acceptor for ephemeral and batch jobs) http://:9091
    • AlertManager (alerts management) http://:9093
    • Grafana (visualize metrics) http://:3000
    • NodeExporter (host metrics collector)
    • cAdvisor (containers metrics collector)
    • Caddy (reverse proxy and basic auth provider for prometheus and alertmanage

1. 프로젝트 clone

git clone https://github.com/stefanprodan/dockprom
cd dockprom

2. Grafana 설정

clone 받은 그대로 기본 설정으로 설치를 진행하고, 나는 여기서 grafana 컨테이너에 아래와 같은 환경 변수 값을 추가하였다.
(로그인 없이 Grafana에 접속되며, 관리자는 로그인하도록 수정하도록 설정)

  ....

  grafana:
    image: grafana/grafana:10.2.2
    container_name: grafana
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
      - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
    environment:
      ....
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_NAME=Main Org.
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
    restart: unless-stopped
    expose:
      - 3000
    networks:
      - monitor-net
    labels:
      org.label-schema.group: "monitoring"
    
  ....

ORG_ROLE 옵션은 Admin / Editor / Viewer 중 선택하여 설정
자세한 내용은 다음 링크 클릭 👉 https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/


3. 컨테이너 실행

docker-compose up -d --build

• HASH 암호

Caddy 컨테이너가 v2로 업데이트됨에 따라 기존 캐디 컨테이너에 대한 일반 텍스트 암호를 해시된 암호참조로 바꿔주어야 한다.
👉 https://github.com/stefanprodan/dockprom?tab=readme-ov-file#Updating-Caddy-to-v2


아래 명령어를 사용하여 ADMIN_PASSWORD_HASH 옵션에 들어갈 해쉬 암호를 생성해주도록 하자.

docker run --rm caddy caddy hash-password --plaintext 'ADMIN_PASSWORD'  

$2a$14$HFH46i2Vq8ajOp1eso/EwOvVEiRe7Qn92BfAQfo94Ikiv/x.PNcc6

docker-compose.yaml 파일을 아래와 같이 수정

  caddy:
    image: caddy:2.7.5
    ....

    environment:
      ADMIN_USER: ${ADMIN_USER:-admin}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD:-admin}
      # 위에서 생성된 해쉬 암호 기입
      # "You may need to escape any $ with another $" 에러를 방지하기 위해 '$' 이스케이프 처리
      ADMIN_PASSWORD_HASH: $$2a$$14$$uJgNxeOc/SqWV59wocIRuuELlYQzVgyaNuuuxmuB3Go/c1nQpNVPS
    ....

▪️ 결과

image


Loading script...