Basic Grafana

infrastructure
└── monitor
    ├── docker-compose.yml
    └── grafana (Directory)
networks:  
  monitor-net:  
    name: monitor-net  
    driver: bridge  
  
services:  
  grafana:  
    image: grafana/grafana  
    container_name: grafana  
    ports:  
      - '3000:3000'  
    environment:  
      GF_SECURITY_ADMIN_USER: 'default-user'  
      GF_SECURITY_ADMIN_PASSWORD: 'default-password'  
    volumes:  
      - ./grafana:/var/lib/grafana  
      - ./grafana/provisioning:/etc/grafana/provisioning  
    networks:  
      - monitor-net  
    restart: always

+Prometheus

infrastructure
└── monitor
    ├── docker-compose.yml
    ├── grafana (Directory)
    └── prometheus
        ├── config
        │   ├── prometheus.yml
        │   └── query-log.log
        └── prometheus-volume (Directory)

그라파나에 프로메테우스 & Redis Exporter & MySQL Exporter를 연결합니다. (Docker Prometheus)

networks:  
  mysql-net:  
    external: true  
  redis-net:  
    external: true  
  monitor-net:  
    name: monitor-net  
    driver: bridge  
  
services:  
  prometheus:  
    image: prom/prometheus  
    container_name: prometheus  
    ports:  
      - '9090:9090'  
    command:  
      - '--storage.tsdb.path=/prometheus'  
      - '--config.file=/etc/prometheus/prometheus.yml'  
    volumes:  
      - ./prometheus/config:/etc/prometheus  
      - ./prometheus/prometheus-volume:/prometheus  
    restart: always  
    networks:  
      - monitor-net  
  
  mysql-exporter:  
    image: prom/mysqld-exporter  
    container_name: mysql-exporter  
    ports:  
      - '9104:9104'  
    command:  
      - '--mysqld.address=onsquad-mysql:3306'  
      - '--mysqld.username=exporter:password'  
    restart: always  
    networks:  
      - mysql-net  
      - monitor-net  
    depends_on:  
      - prometheus  
  
  redis-exporter:  
    image: oliver006/redis_exporter  
    container_name: redis-exporter  
    ports:  
      - '9121:9121'  
    environment:  
      REDIS_ADDR: redis://sentinel1:26379  
      REDIS_SENTINEL_MASTER: mymaster  
    restart: always  
    networks:  
      - redis-net  
      - monitor-net  
    depends_on:  
      - prometheus  
  
  grafana:  
    image: grafana/grafana  
    container_name: grafana  
    ports:  
      - '3000:3000'  
    environment:  
      GF_SECURITY_ADMIN_USER: 'default-user'  
      GF_SECURITY_ADMIN_PASSWORD: 'default-password'  
    volumes:  
      - ./grafana:/var/lib/grafana  
      - ./grafana/provisioning:/etc/grafana/provisioning  
    networks:  
      - monitor-net  
    depends_on:  
      - prometheus  
      - mysql-exporter  
      - redis-exporter  
    restart: always

Reference

Dockerhub Prometheus

Github MySQL Exporter

Dockerhub MySQL Exporter

Github Redis Exporter

Dockerhub Redis Exporter

Redis-Exporter를 통한 모니터링

Prometheus, Grafana 오픈소스로 Redis 모니터링하기