feat(metrics): allow users to provision prometheus and grafana with docker-compose

This commit is contained in:
Gustavo Valverde 2024-01-30 22:10:08 +00:00
parent 3b7110c68f
commit ca3c8777b0
13 changed files with 127 additions and 1 deletions

View File

@ -0,0 +1,66 @@
version: "3.8"
services:
zebra:
depends_on:
prometheus:
condition: service_healthy
grafana:
condition: service_healthy
ports:
- "8232:8232"
- "8233:8233"
- "18233:18233"
- "9999:9999" # Metrics
prometheus:
image: prom/prometheus
configs:
- source: prometheus_config
target: /etc/prometheus/prometheus.yml
volumes:
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
ports:
- "9090:9090"
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:9090/status || exit 1
start_period: 30s
interval: 10s
timeout: 15s
retries: 3
grafana:
image: grafana/grafana
volumes:
- grafana-data:/var/lib/grafana
- ../grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
- ../grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro
depends_on:
prometheus:
condition: service_healthy
environment:
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_DISABLE_LOGIN_FORM=true
- GF_USERS_ALLOW_SIGN_UP=false
ports:
- "3000:3000"
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
interval: 30s
timeout: 10s
retries: 3
configs:
prometheus_config:
file: ../prometheus.yaml
volumes:
prometheus-data:
driver: local
grafana-data:
driver: local

View File

@ -0,0 +1,11 @@
apiVersion: 1
providers:
- name: 'Prometheus'
orgId: 1
folder: ''
type: file
disableDeletion: false
editable: true
options:
path: /etc/grafana/provisioning/dashboards

View File

@ -0,0 +1,50 @@
# config file version
apiVersion: 1
# list of datasources that should be deleted from the database
deleteDatasources:
- name: Prometheus
orgId: 1
# list of datasources to insert/update depending
# whats available in the database
datasources:
# <string, required> name of the datasource. Required
- name: Prometheus
# <string, required> datasource type. Required
type: prometheus
# <string, required> access mode. direct or proxy. Required
access: proxy
# <int> org id. will default to orgId 1 if not specified
orgId: 1
# <string> url
url: http://prometheus:9090
# <string> database password, if used
password:
# <string> database user, if used
user:
# <string> database name, if used
database:
# <bool> enable/disable basic auth
basicAuth: false
# <string> basic auth username, if used
basicAuthUser:
# <string> basic auth password, if used
basicAuthPassword:
# <bool> enable/disable with credentials headers
withCredentials:
# <bool> mark as default datasource. Max one per org
isDefault: true
# <map> fields that will be converted to json and stored in json_data
jsonData:
graphiteVersion: "1.1"
tlsAuth: false
tlsAuthWithCACert: false
# <string> json object of data that will be encrypted.
secureJsonData:
tlsCACert: "..."
tlsClientCert: "..."
tlsClientKey: "..."
version: 1
# <bool> allow users to edit datasources from the UI.
editable: false

View File

@ -4,4 +4,3 @@ scrape_configs:
metrics_path: '/'
static_configs:
- targets: ['localhost:9999']