Loading .gitlab-ci.yml 0 → 100644 +146 −0 Original line number Diff line number Diff line image: docker:stable stages: - check-rules - package - test-package - deploy services: - docker:dind variables: DOCKER_DRIVER: overlay2 check-rules-non-master-branches: stage: check-rules script: - check-rules.sh docker-build-commit-non-master-branches: stage: package only: - branches except: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - docker push ${CI_REGISTRY_IMAGE} docker-build-commit-master-branch: stage: package image: docker:stable only: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:latest . - docker push ${CI_REGISTRY_IMAGE} container-scanning: stage: test-package image: docker:stable allow_failure: true only: - branches script: - docker run -d --name db arminc/clair-db:latest - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 - apk add -U wget ca-certificates - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker pull ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} - wget https://github.com/arminc/clair-scanner/releases/download/v8/clair-scanner_linux_amd64 - mv clair-scanner_linux_amd64 clair-scanner - chmod +x clair-scanner - touch clair-whitelist.yml - > ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true artifacts: paths: [gl-sast-container-report.json] deploy-dev: stage: deploy image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: SSH_REMOTE: ${DEV_SSH_REMOTE} STACK: metric STATUS_CHECK_DELAY: 60 IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml 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} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER} environment: name: dev url: https://prometheus.${DEV_PUBLIC_HOSTNAME} only: - dev when: manual deploy-supporting-branch: stage: deploy image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: SSH_REMOTE: ${DEV_SSH_REMOTE} STACK: metric STATUS_CHECK_DELAY: 60 IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml 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} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER} environment: name: dev url: https://prometheus.${DEV_PUBLIC_HOSTNAME} only: - branches except: - master - dev when: manual deploy-pro: stage: deploy image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: SSH_REMOTE: ${PRO_SSH_REMOTE} STACK: metric STATUS_CHECK_DELAY: 60 IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml 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} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER} environment: name: pro url: https://prometheus.${PUBLIC_HOSTNAME} only: - master when: manual Dockerfile 0 → 100644 +9 −0 Original line number Diff line number Diff line FROM prom/prometheus COPY conf /etc/prometheus/ ENTRYPOINT [ "/etc/prometheus/docker-entrypoint.sh" ] CMD [ "--config.file=/etc/prometheus/prometheus.yml", \ "--storage.tsdb.path=/prometheus", \ "--web.console.libraries=/etc/prometheus/console_libraries", \ "--web.console.templates=/etc/prometheus/consoles" ] check-rules.sh 0 → 100755 +12 −0 Original line number Diff line number Diff line #!/bin/sh for f in $(pwd)/rules/*.rules.yml do if [ -e "$f" ] then filename=$( basename "$f" ) docker run -v $(pwd)/rules/:/tmp dnanexus/promtool:1.0 \ check rules /tmp/${filename} fi done No newline at end of file conf/docker-entrypoint.sh 0 → 100755 +52 −0 Original line number Diff line number Diff line #!/bin/sh -e cat /etc/prometheus/prometheus.yml > /tmp/prometheus.yml #JOBS=mongo-exporter:9111 redis-exporter:9112 if [ ${JOBS+x} ]; then for job in $JOBS do echo "adding job $job" params_job=$(echo "${job}" | sed -r 's/(.*):([[:digit:]]+)((\/.*)*)$/\1 \2 \3/' ) SERVICE=$(echo "${params_job}" | cut -d" " -f1) PORT=$(echo "${params_job}" | cut -d" " -f2) METRIC_PATH=$(echo "${params_job}" | cut -d" " -f3) cat >>/tmp/prometheus.yml <<EOF - job_name: '${SERVICE}' metrics_path: '${METRIC_PATH:-/metrics}' dns_sd_configs: - names: - 'tasks.${SERVICE}' type: 'A' port: ${PORT} EOF done fi echo "Adding rules file" echo "rule_files:" >> /tmp/prometheus.yml for f in /etc/prometheus/*.rules.yml do if [ -e "${f}" ] then filename=$( basename "${f}" ) echo "- ${filename}" echo ' - "${filename}"' >> /tmp/prometheus.yml fi done mv /tmp/prometheus.yml /etc/prometheus/prometheus.yml set -- /bin/prometheus "$@" exec "$@" conf/prometheus.yml 0 → 100644 +46 −0 Original line number Diff line number Diff line global: scrape_interval: 15s evaluation_interval: 15s external_labels: monitor: 'promswarm' alerting: alertmanagers: - static_configs: - targets: - alertmanager:9093 scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'dockerd-exporter' dns_sd_configs: - names: - 'tasks.dockerd-exporter' type: 'A' port: 9323 - job_name: 'cadvisor' dns_sd_configs: - names: - 'tasks.cadvisor' type: 'A' port: 8080 - job_name: 'node-exporter' dns_sd_configs: - names: - 'tasks.node-exporter' type: 'A' port: 9100 - job_name: 'pushgateway' dns_sd_configs: - names: - 'tasks.pushgateway' type: 'A' port: 9091 No newline at end of file Loading
.gitlab-ci.yml 0 → 100644 +146 −0 Original line number Diff line number Diff line image: docker:stable stages: - check-rules - package - test-package - deploy services: - docker:dind variables: DOCKER_DRIVER: overlay2 check-rules-non-master-branches: stage: check-rules script: - check-rules.sh docker-build-commit-non-master-branches: stage: package only: - branches except: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - docker push ${CI_REGISTRY_IMAGE} docker-build-commit-master-branch: stage: package image: docker:stable only: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:latest . - docker push ${CI_REGISTRY_IMAGE} container-scanning: stage: test-package image: docker:stable allow_failure: true only: - branches script: - docker run -d --name db arminc/clair-db:latest - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 - apk add -U wget ca-certificates - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker pull ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} - wget https://github.com/arminc/clair-scanner/releases/download/v8/clair-scanner_linux_amd64 - mv clair-scanner_linux_amd64 clair-scanner - chmod +x clair-scanner - touch clair-whitelist.yml - > ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true artifacts: paths: [gl-sast-container-report.json] deploy-dev: stage: deploy image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: SSH_REMOTE: ${DEV_SSH_REMOTE} STACK: metric STATUS_CHECK_DELAY: 60 IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml 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} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER} environment: name: dev url: https://prometheus.${DEV_PUBLIC_HOSTNAME} only: - dev when: manual deploy-supporting-branch: stage: deploy image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: SSH_REMOTE: ${DEV_SSH_REMOTE} STACK: metric STATUS_CHECK_DELAY: 60 IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml 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} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER} environment: name: dev url: https://prometheus.${DEV_PUBLIC_HOSTNAME} only: - branches except: - master - dev when: manual deploy-pro: stage: deploy image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: SSH_REMOTE: ${PRO_SSH_REMOTE} STACK: metric STATUS_CHECK_DELAY: 60 IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml 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} UI_AUTH=${UI_AUTH} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} SLACK_URL=${SLACK_URL} SLACK_CHANNEL=${SLACK_CHANNEL} SLACK_USER=${SLACK_USER} environment: name: pro url: https://prometheus.${PUBLIC_HOSTNAME} only: - master when: manual
Dockerfile 0 → 100644 +9 −0 Original line number Diff line number Diff line FROM prom/prometheus COPY conf /etc/prometheus/ ENTRYPOINT [ "/etc/prometheus/docker-entrypoint.sh" ] CMD [ "--config.file=/etc/prometheus/prometheus.yml", \ "--storage.tsdb.path=/prometheus", \ "--web.console.libraries=/etc/prometheus/console_libraries", \ "--web.console.templates=/etc/prometheus/consoles" ]
check-rules.sh 0 → 100755 +12 −0 Original line number Diff line number Diff line #!/bin/sh for f in $(pwd)/rules/*.rules.yml do if [ -e "$f" ] then filename=$( basename "$f" ) docker run -v $(pwd)/rules/:/tmp dnanexus/promtool:1.0 \ check rules /tmp/${filename} fi done No newline at end of file
conf/docker-entrypoint.sh 0 → 100755 +52 −0 Original line number Diff line number Diff line #!/bin/sh -e cat /etc/prometheus/prometheus.yml > /tmp/prometheus.yml #JOBS=mongo-exporter:9111 redis-exporter:9112 if [ ${JOBS+x} ]; then for job in $JOBS do echo "adding job $job" params_job=$(echo "${job}" | sed -r 's/(.*):([[:digit:]]+)((\/.*)*)$/\1 \2 \3/' ) SERVICE=$(echo "${params_job}" | cut -d" " -f1) PORT=$(echo "${params_job}" | cut -d" " -f2) METRIC_PATH=$(echo "${params_job}" | cut -d" " -f3) cat >>/tmp/prometheus.yml <<EOF - job_name: '${SERVICE}' metrics_path: '${METRIC_PATH:-/metrics}' dns_sd_configs: - names: - 'tasks.${SERVICE}' type: 'A' port: ${PORT} EOF done fi echo "Adding rules file" echo "rule_files:" >> /tmp/prometheus.yml for f in /etc/prometheus/*.rules.yml do if [ -e "${f}" ] then filename=$( basename "${f}" ) echo "- ${filename}" echo ' - "${filename}"' >> /tmp/prometheus.yml fi done mv /tmp/prometheus.yml /etc/prometheus/prometheus.yml set -- /bin/prometheus "$@" exec "$@"
conf/prometheus.yml 0 → 100644 +46 −0 Original line number Diff line number Diff line global: scrape_interval: 15s evaluation_interval: 15s external_labels: monitor: 'promswarm' alerting: alertmanagers: - static_configs: - targets: - alertmanager:9093 scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'dockerd-exporter' dns_sd_configs: - names: - 'tasks.dockerd-exporter' type: 'A' port: 9323 - job_name: 'cadvisor' dns_sd_configs: - names: - 'tasks.cadvisor' type: 'A' port: 8080 - job_name: 'node-exporter' dns_sd_configs: - names: - 'tasks.node-exporter' type: 'A' port: 9100 - job_name: 'pushgateway' dns_sd_configs: - names: - 'tasks.pushgateway' type: 'A' port: 9091 No newline at end of file