Commit c751e00f authored by Ignacio's avatar Ignacio
Browse files

Merge branch 'dev' into 'master'

Elimina config de prometheus

See merge request redmic-project/metric/swarmprom-ci!17
parents d647a553 61004465
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
PUBLIC_HOSTNAME=localhost
DOCKER_GWBRIDGE_IP=172.18.0.1
JOBS=pushgateway:9091
+50 −0
Original line number Diff line number Diff line
stages:
  - check_rules
  - deploy

image: registry.gitlab.com/redmic-project/docker/docker-deploy
@@ -14,6 +15,17 @@ variables:
  STACK: metric
  SERVICES_TO_CHECK: metric_dockerd-exporter metric_cadvisor metric_grafana metric_alertmanager metric_unsee metric_node-exporter metric_prometheus

check-rule-dev:
  stage: check_rules
  script:
    - >
      docker run -v $(pwd)/prometheus/rules:/tmp dnanexus/promtool:1.0
      check rules /tmp/swarm_task.rules.yml
  environment:
    name: dev
  only:
    - dev

deploy-dev:
  stage: deploy
  variables:
@@ -24,17 +36,35 @@ deploy-dev:
    DOCKER_GWBRIDGE_IP: ${DEV_DOCKER_GWBRIDGE_IP}
    UI_AUTH: ${DEV_UI_AUTH}
    PUBLIC_HOSTNAME: ${DEV_PUBLIC_HOSTNAME}
    SLACK_URL: ${SLACK_URL}
    SLACK_CHANNEL: ${DEV_SLACK_CHANNEL}
    SLACK_USER: ${SLACK_USER}
  script:
    - create-nets.sh metric-net
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} ADMIN_USER=${ADMIN_USER} ADMIN_PASSWORD=${ADMIN_PASSWORD}
      DOCKER_GWBRIDGE_IP=${DOCKER_GWBRIDGE_IP} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER}
  environment:
    name: dev
  only:
    - dev
  when: manual

check-rule-supporting-branch:
  stage: check_rules
  script:
    - >
      docker run -v $(pwd)/prometheus/rules:/tmp dnanexus/promtool:1.0
      check rules /tmp/swarm_task.rules.yml
  environment:
    name: dev
  only:
    - branches
  except:
    - master
    - dev

deploy-supporting-branch:
  stage: deploy
  variables:
@@ -45,11 +75,15 @@ deploy-supporting-branch:
    DOCKER_GWBRIDGE_IP: ${DEV_DOCKER_GWBRIDGE_IP}
    UI_AUTH: ${DEV_UI_AUTH}
    PUBLIC_HOSTNAME: ${DEV_PUBLIC_HOSTNAME}
    SLACK_URL: ${SLACK_URL}
    SLACK_CHANNEL: ${DEV_SLACK_CHANNEL}
    SLACK_USER: ${SLACK_USER}
  script:
    - create-nets.sh metric-net
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} ADMIN_USER=${ADMIN_USER} ADMIN_PASSWORD=${ADMIN_PASSWORD}
      DOCKER_GWBRIDGE_IP=${DOCKER_GWBRIDGE_IP} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER}
  environment:
    name: dev
  only:
@@ -59,6 +93,18 @@ deploy-supporting-branch:
    - dev
  when: manual


check-rule-pro:
  stage: check_rules
  script:
    - >
      docker run -v $(pwd)/prometheus/rules:/tmp dnanexus/promtool:1.0
      check rules /tmp/swarm_task.rules.yml
  environment:
    name: pro
  only:
    - master

deploy-pro:
  stage: deploy
  variables:
@@ -69,11 +115,15 @@ deploy-pro:
    DOCKER_GWBRIDGE_IP: ${PRO_DOCKER_GWBRIDGE_IP}
    UI_AUTH: ${PRO_UI_AUTH}
    PUBLIC_HOSTNAME: ${PRO_PUBLIC_HOSTNAME}
    SLACK_URL: ${SLACK_URL}
    SLACK_CHANNEL: ${PRO_SLACK_CHANNEL}
    SLACK_USER: ${SLACK_USER}
  script:
    - create-nets.sh metric-net
    - >
      deploy.sh COMPOSE_FILE=${COMPOSE_FILE} ADMIN_USER=${ADMIN_USER} ADMIN_PASSWORD=${ADMIN_PASSWORD}
      DOCKER_GWBRIDGE_IP=${DOCKER_GWBRIDGE_IP} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER}
  environment:
    name: pro
  only:
+2 −147
Original line number Diff line number Diff line
version: '3.5'

services:
  dockerd-exporter:
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  cadvisor:
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  grafana:
    ports:
      - target: 3000
        published: 18004
        mode: host
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "3000"
        traefik.docker.network: traefik-net
        traefik.frontend.rule: Host:grafana.${PUBLIC_HOSTNAME}
        traefik.backend: grafana
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  alertmanager:
    ports:
      - target: 9093
        published: 9093
        mode: host
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "9093"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:alertmanager.${PUBLIC_HOSTNAME}
        traefik.backend: alertmanager
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  unsee:
    ports:
      - target: 8080
        published: 9094
        mode: host
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "8080"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:unsee.${PUBLIC_HOSTNAME}
        traefik.backend: unsee
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  node-exporter:
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  prometheus:
    ports:
      - target: 9090
        published: 9090
        mode: host
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "9090"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:prometheus.${PUBLIC_HOSTNAME}
        traefik.backend: prometheus
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          memory: 128M

volumes:
  prometheus:
    name: prometheus-vol
  pushgateway:
    name: pushgateway-vol

  grafana:
    name: grafana-vol
+3 −123
Original line number Diff line number Diff line
version: '3.5'

services:
  dockerd-exporter:
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  cadvisor:
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  grafana:
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "3000"
        traefik.docker.network: traefik-net
        traefik.frontend.rule: Host:grafana.${PUBLIC_HOSTNAME}
        traefik.backend: grafana
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  alertmanager:
  pushgateway:
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "9093"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:alertmanager.${PUBLIC_HOSTNAME}
        traefik.backend: alertmanager
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  unsee:
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "8080"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:unsee.${PUBLIC_HOSTNAME}
        traefik.backend: unsee
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  node-exporter:
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  prometheus:
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "9090"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:prometheus.${PUBLIC_HOSTNAME}
        traefik.backend: prometheus
      placement:
        constraints:
          - node.role == worker
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          memory: 128M

volumes:
  prometheus:
    name: prometheus-vol
    driver: "cloudstor:aws"
    driver_opts:
      backing: relocatable
      size: 5
      ebstype: gp2
  pushgateway:
    name: pushgateway-vol

  grafana:
    name: grafana-vol
+112 −20
Original line number Diff line number Diff line
@@ -12,6 +12,17 @@ services:
    configs:
      - source: dockerd_config
        target: /etc/caddy/Caddyfile
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  cadvisor:
    image: google/cadvisor
@@ -24,6 +35,17 @@ services:
      - /var/run:/var/run
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  grafana:
    image: stefanprodan/swarmprom-grafana:5.0.1
@@ -31,6 +53,7 @@ services:
      - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-piechart-panel
      #- GF_SERVER_ROOT_URL=${GF_SERVER_ROOT_URL:-localhost}
      #- GF_SMTP_ENABLED=${GF_SMTP_ENABLED:-false}
      #- GF_SMTP_FROM_ADDRESS=${GF_SMTP_FROM_ADDRESS:-grafana@test.com}
@@ -45,6 +68,23 @@ services:
      - grafana:/var/lib/grafana
      - grafana-etc:/etc/grafana
      - grafana-log:/var/log/grafana
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "3000"
        traefik.docker.network: traefik-net
        traefik.frontend.rule: Host:grafana.${PUBLIC_HOSTNAME}
        traefik.backend: grafana
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  alertmanager:
    image: stefanprodan/swarmprom-alertmanager:v0.14.0
@@ -60,6 +100,27 @@ services:
      - traefik-net
    volumes:
      - alertmanager:/alertmanager
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "9093"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:alertmanager.${PUBLIC_HOSTNAME}
        traefik.backend: alertmanager
      placement:
        constraints:
          - node.role == manager
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  unsee:
    image: cloudflare/unsee:v0.8.0
@@ -68,6 +129,24 @@ services:
      - traefik-net
    environment:
      - "ALERTMANAGER_URIS=default:http://alertmanager:9093"
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "8080"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:unsee.${PUBLIC_HOSTNAME}
        traefik.backend: unsee
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  node-exporter:
    image: stefanprodan/swarmprom-node-exporter:v0.15.2
@@ -89,26 +168,45 @@ services:
      - /sys:/host/sys:ro
      - /:/rootfs:ro
      - /etc/hostname:/etc/nodename
    deploy:
      mode: global
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

  prometheus:
    image: stefanprodan/swarmprom-prometheus:v2.2.0-rc.0
  pushgateway:
    image: prom/pushgateway
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention=30d'
    user: "0:0"
      - '--persistence.file=/db/metrics'
    networks:
      - metric-net
      - traefik-net
    volumes:
      - prometheus:/prometheus
    configs:
      - source: node_rules
        target: /etc/prometheus/swarm_node.rules.yml
      - source: task_rules
        target: /etc/prometheus/swarm_task.rules.yml
      - pushgateway:/db
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.port: "9091"
        traefik.docker.network: traefik-net
        traefik.frontend.auth.basic: ${UI_AUTH}
        traefik.frontend.rule: Host:pushgateway.${PUBLIC_HOSTNAME}
        traefik.backend: pushgateway
      restart_policy:
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '0.5'
          memory: 128M
        reservations:
          memory: 64M

networks:
  metric-net:
@@ -120,9 +218,3 @@ networks:
configs:
  dockerd_config:
    file: ./swarmprom/dockerd-exporter/Caddyfile

  node_rules:
    file: ./swarmprom/prometheus/rules/swarm_node.rules.yml

  task_rules:
    file: ./swarmprom/prometheus/rules/swarm_task.rules.yml
Loading