Prometheus-Grafana with Docker Swarm
    
      2020-05-21
    
    
    
  
  
	
	
	
	
  
  swarm 에서 사용하는 방식이 아주 조금 달라서 남겨놓는다.
docker-stack-prometheus.yaml
docker compose for Prometheus/NodeExporter/Grafana
version: '3.2'
services:
  prometheus:
    image: prom/prometheus:v2.18.1
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yaml:/etc/prometheus/prometheus.yaml
    command:
      - "--web.enable-lifecycle"
      - "--config.file=/etc/prometheus/prometheus.yaml"
    networks:
      - prom_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]
  node-exporter:
    image: prom/node-exporter:v1.0.0-rc.0
    ports:
      - "9100:9100"
    networks:
      - prom_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]
  grafana:
    image: grafana/grafana:6.7.3
    ports:
      - "3000:3000"
    # use dashboard https://grafana.com/grafana/dashboards/10604
networks:
    prom_network:
        driver: overlay
prometheus.yaml
prometheus config file
# 전역 설정
global:
  scrape_interval:     15s # 15초마다 매트릭을 수집한다. 기본은 1분.
  evaluation_interval: 15s # 15초마다 규칙을 평가한다. 기본은 1분.
  # 외부 시스템에 표시할 이 서버의 레이블
  external_labels:
      monitor: 'msa-monitor'
# 규칙을 로딩하고 'evaluation_interval' 설정에 따라 정기적으로 평가한다.
rule_files:
  # - "first.rules"
  # - "second.rules"
# 매트릭을 수집할 엔드포인드, global deploy 된 node-exporter 들을 dns_sd_configs
scrape_configs:
  - job_name: 'node-exporter'
    dns_sd_configs:
    - names:
      - 'tasks.node-exporter'
      type: 'A'
      port: 9100
dns_sd_configs 설정에 대해서..
A DNS-based service discovery configuration allows specifying a set of DNS domain names which are periodically queried to discover a list of targets 출처
