16 Commits

Author SHA1 Message Date
c06dda7205 chore: publish 1.0.0+v1.7.0 release 2023-12-21 02:24:47 +01:00
b497b4ce4e shorten config names 2023-12-21 01:43:44 +01:00
29b3fcd7d1 update grafana dashboards 2023-12-21 01:43:44 +01:00
d4c6bd4c12 shorten basic_auth secret 2023-12-20 22:46:27 +01:00
42c3695bf3 add diskIO and process metrics 2023-12-20 17:34:41 +01:00
74498b70fe update grafana dashboards 2023-07-31 16:28:44 +02:00
961a17f1ad chore: publish 0.3.0+v1.6.0 release 2023-07-11 14:59:37 +02:00
d549c33fe5 chore: publish 0.2.0+v1.5.0 release 2023-06-26 11:44:10 +02:00
9a791ef794 feat: add hostname label to promtail logs 2023-06-26 11:43:26 +02:00
7a0292f902 fix: grafana smtp stuff 2023-06-20 16:04:40 +02:00
705934abc1 fix: increase loki limits 2023-06-20 16:03:57 +02:00
b091bf1951 add process to cadvisor metrics 2023-06-14 14:02:35 +02:00
de1819521b remove prometheus alertmanager
grafana has basic alert mechanisms included, might be enough for most
usecases?
2023-06-01 15:10:53 +02:00
8c82943289 fix: config version 2023-05-24 12:28:35 +02:00
39071fa512 fix: grafana envs 2023-05-24 12:26:49 +02:00
3398e1d312 chore: remove junk 2023-05-24 12:05:50 +02:00
18 changed files with 3200 additions and 831 deletions

View File

@ -4,13 +4,8 @@ COMPOSE_FILE=compose.yml
DOMAIN=monitoring.example.com DOMAIN=monitoring.example.com
TIMEOUT=120 TIMEOUT=120
# Monitoring Client
#
## Node Exporter, Cadvisor (Gathering Metrics)
# COMPOSE_FILE="$COMPOSE_FILE:compose.metrics.yml"
#
## Enable this secret for Promtail / Prometheus ## Enable this secret for Promtail / Prometheus
# SECRET_BASIC_AUTH_ADMIN_PASSWORD_VERSION=v1 # SECRET_BASIC_AUTH_VERSION=v1
# #
# Promtail (Gathering Logs) # Promtail (Gathering Logs)
# COMPOSE_FILE="$COMPOSE_FILE:compose.promtail.yml" # COMPOSE_FILE="$COMPOSE_FILE:compose.promtail.yml"
@ -18,12 +13,8 @@ TIMEOUT=120
# Monitoring Server # Monitoring Server
# #
## Prometheus, Alertmanager ## Prometheus
# COMPOSE_FILE="$COMPOSE_FILE:compose.prometheus.yml" # COMPOSE_FILE="$COMPOSE_FILE:compose.prometheus.yml"
# ALERTMANAGER_SMTP_FROM=noreply@autonomic.zone
# ALERTMANAGER_SMTP_HOST=mail.gandi.net:587
# ALERTMANAGER_SMTP_TO=kaboom@autonomic.zone
# SECRET_ALERTMANAGER_SMTP_PASSWORD_VERSION=v1
# PROMETHEUS_RETENTION_TIME=1y # PROMETHEUS_RETENTION_TIME=1y
## Loki ## Loki
# Loki Server # Loki Server
@ -62,6 +53,9 @@ TIMEOUT=120
# #
## grafana SMTP configuration (optional) ## grafana SMTP configuration (optional)
# GF_SMTP_HOST=changeme # GF_SMTP_HOST=changeme
# GF_SMTP_ENABLED=1 # GF_SMTP_USER=changme
# GF_SMTP_ENABLED=true
# GF_SMTP_FROM_ADDRESS=grafana@example.com # GF_SMTP_FROM_ADDRESS=grafana@example.com
# GF_SMTP_SKIP_VERIFY=1 # GF_SMTP_SKIP_VERIFY=false
# SECRET_GRAFANA_SMTP_PASSWORD_VERSION=v1
#

View File

@ -58,7 +58,7 @@ Where gathering.org is the node you want to gather metrics from.
- `abra app new monitoring-ng` - `abra app new monitoring-ng`
- `abra app config monitoring.example.org` - `abra app config monitoring.example.org`
Uncomment all the stuff Uncomment all the stuff
- `abra app secret insert monitoring.example.org basic_auth_admin_password v1 <secret>` - `abra app secret insert monitoring.example.org basic_auth v1 <secret>`
this needs the plaintext traefik basic-auth secret, not the hashed one! this needs the plaintext traefik basic-auth secret, not the hashed one!
- `abra app secret ls monitoring.example.org` - `abra app secret ls monitoring.example.org`
- `abra app deploy monitoring.example.org` - `abra app deploy monitoring.example.org`
@ -118,4 +118,4 @@ $ systemctl restart docker.service
--- ---
THX to the previous work of @decentral1se @knooflok @3wc @cellarspoon @mirsal THX to the previous work of @decentral1se @knooflok @3wc @cellarspoon @mirsal

17
abra.sh
View File

@ -1,14 +1,13 @@
export NODE_EXPORTER_ENTRYPOINT_VERSION=v1 export ENTRYPOINT_VERSION=v1
export GRAFANA_DATASOURCES_YML_VERSION=v1 export GRAFANA_DATASOURCES_YML_VERSION=v1
export GRAFANA_DASHBOARDS_YML_VERSION=v1 export GRAFANA_DASHBOARDS_YML_VERSION=v1
export GRAFANA_SWARM_DASHBOARD_JSON_VERSION=v1 export GRAFANA_SWARM_DASHBOARD_JSON_VERSION=v2
export GRAFANA_STACKS_DASHBOARD_JSON_VERSION=v1 export GRAFANA_STACKS_DASHBOARD_JSON_VERSION=v2
export GRAFANA_TRAEFIK_DASHBOARD_JSON_VERSION=v1 export GRAFANA_TRAEFIK_DASHBOARD_JSON_VERSION=v2
export GRAFANA_CUSTOM_INI_VERSION=v1 export GRAFANA_CUSTOM_INI_VERSION=v4
export PROMTAIL_YML_VERSION=v1 export PROMTAIL_YML_VERSION=v3
export LOKI_YML_VERSION=v1 export LOKI_YML_VERSION=v2
export PROMETHEUS_YML_VERSION=v1 export PROMETHEUS_YML_VERSION=v2
export ALERTMANAGER_CONFIG_VERSION=v1
# creates a default prometheus scrape config for a given node # creates a default prometheus scrape config for a given node
add_node(){ add_node(){

View File

@ -1,13 +0,0 @@
global:
smtp_from: {{ env "ALERTMANAGER_SMTP_FROM" }}
smtp_smarthost: {{ env "ALERTMANAGER_SMTP_HOST" }}
smtp_auth_username: {{ env "ALERTMANAGER_SMTP_FROM" }}
smtp_auth_password: {{ secret "alertmanager_smtp_password" }}
route:
receiver: "kaboom-mailer"
receivers:
- name: "kaboom-mailer"
email_configs:
- to: {{ env "ALERTMANAGER_SMTP_TO" }}

View File

@ -2,12 +2,13 @@ version: '3.8'
services: services:
grafana: grafana:
image: grafana/grafana:9.5.2 image: grafana/grafana:10.2.3
volumes: volumes:
- grafana-data:/var/lib/grafana:rw - grafana-data:/var/lib/grafana:rw
secrets: secrets:
- grafana_admin_password - grafana_admin_password
- grafana_oidc_client_secret - grafana_oidc_client_secret
- grafana_smtp_password
configs: configs:
- source: grafana_custom_ini - source: grafana_custom_ini
target: /etc/grafana/grafana.ini target: /etc/grafana/grafana.ini
@ -25,14 +26,16 @@ services:
- proxy - proxy
- internal - internal
environment: environment:
- GF_SERVER_ROOT_URL=https://${GRAFANA_DOMAIN} - GF_SERVER_ROOT_URL
- GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/grafana_admin_password - GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/grafana_admin_password
- GF_SMTP_HOST - GF_SMTP_HOST
- GF_SMTP_USER
- GF_SMTP_PASSWORD__FILE=/run/secrets/grafana_smtp_password
- GF_SMTP_ENABLED - GF_SMTP_ENABLED
- GF_SMTP_FROM_ADDRESS - GF_SMTP_FROM_ADDRESS
- GF_SMTP_SKIP_VERIFY - GF_SMTP_SKIP_VERIFY
- GF_SECURITY_ALLOW_EMBEDDING - GF_SECURITY_ALLOW_EMBEDDING
- GF_INSTALL_PLUGINS=grafana-piechart-panel - GF_INSTALL_PLUGINS
- OIDC_API_URL - OIDC_API_URL
- OIDC_AUTH_URL - OIDC_AUTH_URL
- OIDC_CLIENT_ID - OIDC_CLIENT_ID
@ -85,3 +88,6 @@ secrets:
grafana_oidc_client_secret: grafana_oidc_client_secret:
external: true external: true
name: ${STACK_NAME}_grafana_oidc_client_secret_${SECRET_GRAFANA_OIDC_CLIENT_SECRET_VERSION} name: ${STACK_NAME}_grafana_oidc_client_secret_${SECRET_GRAFANA_OIDC_CLIENT_SECRET_VERSION}
grafana_smtp_password:
external: true
name: ${STACK_NAME}_grafana_smtp_password_${SECRET_GRAFANA_SMTP_PASSWORD_VERSION}

View File

@ -2,7 +2,7 @@ version: '3.8'
services: services:
loki: loki:
image: grafana/loki:2.8.2 image: grafana/loki:2.9.3
command: -config.file=/etc/loki/local-config.yaml command: -config.file=/etc/loki/local-config.yaml
networks: networks:
- proxy - proxy

View File

@ -2,9 +2,9 @@ version: '3.8'
services: services:
prometheus: prometheus:
image: prom/prometheus:v2.44.0 image: prom/prometheus:v2.48.1
secrets: secrets:
- basic_auth_admin_password - basic_auth
volumes: volumes:
- prometheus-data:/prometheus:rw - prometheus-data:/prometheus:rw
configs: configs:
@ -31,42 +31,11 @@ services:
- "traefik.http.routers.${STACK_NAME}-prometheus.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}-prometheus.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}-prometheus.middlewares=basicauth@file" - "traefik.http.routers.${STACK_NAME}-prometheus.middlewares=basicauth@file"
alertmanager:
image: prom/alertmanager:v0.25.0
volumes:
- alertmanager-data:/etc/alertmanager
command:
- "--config.file=/etc/alertmanager/config.yml"
- "--storage.path=/alertmanager"
networks:
- internal
secrets:
- alertmanager_smtp_password
configs:
- source: alertmanager_config
target: /etc/alertmanager/config.yml
environment:
- ALERTMANAGER_SMTP_FROM
- ALERTMANAGER_SMTP_HOST
- ALERTMANAGER_SMTP_TO
configs: configs:
prometheus_yml: prometheus_yml:
template_driver: golang template_driver: golang
name: ${STACK_NAME}_prometheus_yml_${PROMETHEUS_YML_VERSION} name: ${STACK_NAME}_prometheus_yml_${PROMETHEUS_YML_VERSION}
file: prometheus.yml.tmpl file: prometheus.yml.tmpl
alertmanager_config:
template_driver: golang
name: ${STACK_NAME}_alertmanager_config_${ALERTMANAGER_CONFIG_VERSION}
file: ./alertmanager.yml.tmpl
volumes: volumes:
prometheus-data: prometheus-data:
alertmanager-data:
secrets:
alertmanager_smtp_password:
external: true
name: ${STACK_NAME}_alertmanager_smtp_password_${SECRET_ALERTMANAGER_SMTP_PASSWORD_VERSION}

View File

@ -2,7 +2,7 @@ version: "3.8"
services: services:
promtail: promtail:
image: grafana/promtail:2.8.2 image: grafana/promtail:2.9.3
volumes: volumes:
- /var/log:/var/log:ro - /var/log:/var/log:ro
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
@ -13,8 +13,9 @@ services:
networks: networks:
- internal - internal
secrets: secrets:
- basic_auth_admin_password - basic_auth
environment: environment:
- DOMAIN
- LOKI_PUSH_URL - LOKI_PUSH_URL
configs: configs:
@ -24,6 +25,6 @@ configs:
template_driver: golang template_driver: golang
secrets: secrets:
basic_auth_admin_password: basic_auth:
external: true external: true
name: ${STACK_NAME}_basic_auth_admin_password_${SECRET_BASIC_AUTH_ADMIN_PASSWORD_VERSION} name: ${STACK_NAME}_basic_auth_${SECRET_BASIC_AUTH_VERSION}

View File

@ -3,7 +3,7 @@ version: "3.8"
services: services:
app: app:
image: prom/node-exporter:v1.5.0 image: prom/node-exporter:v1.7.0
user: root user: root
environment: environment:
- NODE_ID={{.Node.ID}} - NODE_ID={{.Node.ID}}
@ -20,7 +20,7 @@ services:
- "--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)" - "--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)"
- "--no-collector.ipvs" - "--no-collector.ipvs"
configs: configs:
- source: node_exporter_entrypoint_sh - source: entrypoint
target: /entrypoint.sh target: /entrypoint.sh
networks: networks:
- internal - internal
@ -37,18 +37,17 @@ services:
- "traefik.http.routers.${STACK_NAME}-node.tls=true" - "traefik.http.routers.${STACK_NAME}-node.tls=true"
- "traefik.http.routers.${STACK_NAME}-node.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}-node.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}-node.middlewares=basicauth@file" - "traefik.http.routers.${STACK_NAME}-node.middlewares=basicauth@file"
- "coop-cloud.${STACK_NAME}.version=0.1.0+v1.5.0" - "coop-cloud.${STACK_NAME}.version=1.0.0+v1.7.0"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
cadvisor: cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.47.1 image: gcr.io/cadvisor/cadvisor:v0.47.2
command: command:
- "-logtostderr" - "-logtostderr"
- "--enable_metrics=cpu,cpuLoad,disk,memory,network" - "--enable_metrics=cpu,cpuLoad,disk,diskIO,process,memory,network"
# all possible metrics: advtcp,app,cpu,cpuLoad,cpu_topology,cpuset,disk,diskIO,hugetlb,memory,memory_numa,network,oom_event,percpu,perf_event,process,referenced_memory,resctrl,sched,tcp,udp. # all possible metrics: advtcp,app,cpu,cpuLoad,cpu_topology,cpuset,disk,diskIO,hugetlb,memory,memory_numa,network,oom_event,percpu,perf_event,process,referenced_memory,resctrl,sched,tcp,udp.
- "--housekeeping_interval=120s" - "--housekeeping_interval=120s"
- "--docker_only=true" - "--docker_only=true"
volumes: volumes:
- /var/lib/docker/:/var/lib/docker:ro - /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro - /dev/disk/:/dev/disk:ro
@ -77,8 +76,8 @@ services:
start_period: 30s start_period: 30s
configs: configs:
node_exporter_entrypoint_sh: entrypoint:
name: ${STACK_NAME}_node_exporter_entrypoint_${NODE_EXPORTER_ENTRYPOINT_VERSION} name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: node-exporter-entrypoint.sh file: node-exporter-entrypoint.sh
@ -86,4 +85,4 @@ configs:
networks: networks:
proxy: proxy:
external: true external: true
internal: internal:

1270
grafana-logs-dashboard.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,10 @@
"list": [ "list": [
{ {
"builtIn": 1, "builtIn": 1,
"datasource": "-- Grafana --", "datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true, "enable": true,
"hide": true, "hide": true,
"iconColor": "rgba(0, 211, 255, 1)", "iconColor": "rgba(0, 211, 255, 1)",
@ -18,17 +21,35 @@
} }
] ]
}, },
"description": "Simple dashboard for Traefik 2", "description": "Dashboards for Traefik Reverse Proxy",
"editable": true, "editable": true,
"fiscalYearStartMonth": 0, "fiscalYearStartMonth": 0,
"gnetId": 11462, "gnetId": 11462,
"graphTooltip": 0, "graphTooltip": 0,
"id": 3, "id": 3,
"iteration": 1684839198931, "links": [
"links": [], {
"asDropdown": false,
"icon": "external link",
"includeVars": false,
"keepTime": false,
"tags": [
"menu"
],
"targetBlank": false,
"title": "dashboards",
"tooltip": "",
"type": "dashboards",
"url": ""
}
],
"liveNow": false, "liveNow": false,
"panels": [ "panels": [
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"decimals": 0, "decimals": 0,
@ -87,7 +108,7 @@
}, },
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
@ -108,6 +129,10 @@
"type": "stat" "type": "stat"
}, },
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"decimals": 0, "decimals": 0,
@ -167,7 +192,7 @@
}, },
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
@ -185,6 +210,10 @@
"type": "stat" "type": "stat"
}, },
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"decimals": 0, "decimals": 0,
@ -243,7 +272,7 @@
}, },
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
@ -265,6 +294,10 @@
"type": "stat" "type": "stat"
}, },
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -324,7 +357,7 @@
}, },
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
@ -352,6 +385,10 @@
"label": "Others", "label": "Others",
"threshold": 0 "threshold": 0
}, },
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"description": "", "description": "",
"fontSize": "80%", "fontSize": "80%",
"format": "short", "format": "short",
@ -397,6 +434,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"decimals": 0, "decimals": 0,
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -433,7 +474,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -493,6 +534,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -530,7 +575,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -587,6 +632,10 @@
} }
}, },
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"mappings": [ "mappings": [
@ -652,7 +701,7 @@
}, },
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
@ -676,6 +725,10 @@
"bars": true, "bars": true,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"links": [] "links": []
@ -712,7 +765,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -726,12 +779,14 @@
"type": "prometheus", "type": "prometheus",
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code",
"exemplar": true, "exemplar": true,
"expr": "sum(delta(traefik_service_requests_total{instance=\"$instance\"}[$interval]))", "expr": "sum(delta(traefik_service_requests_total{instance=\"${instance:raw}\"}[$interval]))",
"format": "time_series", "format": "time_series",
"interval": "", "interval": "",
"intervalFactor": 2, "intervalFactor": 2,
"legendFormat": "Total requests", "legendFormat": "Total requests",
"range": true,
"refId": "A" "refId": "A"
} }
], ],
@ -769,6 +824,10 @@
} }
}, },
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"links": [], "links": [],
@ -812,7 +871,7 @@
}, },
"textMode": "auto" "textMode": "auto"
}, },
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"targets": [ "targets": [
{ {
"datasource": { "datasource": {
@ -832,6 +891,10 @@
"type": "stat" "type": "stat"
}, },
{ {
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"description": "", "description": "",
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -839,6 +902,8 @@
"mode": "palette-classic" "mode": "palette-classic"
}, },
"custom": { "custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "", "axisLabel": "",
"axisPlacement": "auto", "axisPlacement": "auto",
"barAlignment": 0, "barAlignment": 0,
@ -899,8 +964,11 @@
"lastNotNull", "lastNotNull",
"max" "max"
], ],
"displayMode": "list", "displayMode": "table",
"placement": "right" "placement": "right",
"showLegend": true,
"sortBy": "Last *",
"sortDesc": true
}, },
"tooltip": { "tooltip": {
"mode": "single", "mode": "single",
@ -914,12 +982,14 @@
"type": "prometheus", "type": "prometheus",
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
}, },
"editorMode": "code",
"exemplar": true, "exemplar": true,
"expr": "rate(traefik_service_request_duration_seconds_sum{ instance=\"$instance\" }[5m])", "expr": "sum(rate(traefik_service_request_duration_seconds_sum{ instance=\"$instance\" }[5m])) by(service)",
"format": "time_series", "format": "time_series",
"interval": "", "interval": "",
"intervalFactor": 2, "intervalFactor": 2,
"legendFormat": "{{ service }}", "legendFormat": "{{ service }}",
"range": true,
"refId": "A" "refId": "A"
} }
], ],
@ -931,6 +1001,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"links": [] "links": []
@ -964,7 +1038,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -1023,6 +1097,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"decimals": 0, "decimals": 0,
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -1061,7 +1139,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -1121,6 +1199,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"links": [] "links": []
@ -1158,7 +1240,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -1217,6 +1299,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"links": [] "links": []
@ -1254,7 +1340,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -1313,6 +1399,10 @@
"bars": false, "bars": false,
"dashLength": 10, "dashLength": 10,
"dashes": false, "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"decimals": 0, "decimals": 0,
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
@ -1349,7 +1439,7 @@
"alertThreshold": true "alertThreshold": true
}, },
"percentage": false, "percentage": false,
"pluginVersion": "8.4.4", "pluginVersion": "10.0.2",
"pointradius": 5, "pointradius": 5,
"points": false, "points": false,
"renderer": "flot", "renderer": "flot",
@ -1413,13 +1503,14 @@
} }
], ],
"refresh": "", "refresh": "",
"schemaVersion": 35, "schemaVersion": 38,
"style": "dark", "style": "dark",
"tags": [ "tags": [
"traefik", "traefik",
"load-balancer", "load-balancer",
"docker", "docker",
"prometheus" "prometheus",
"menu"
], ],
"templating": { "templating": {
"list": [ "list": [
@ -1455,7 +1546,7 @@
}, },
{ {
"current": { "current": {
"selected": false, "selected": true,
"text": [ "text": [
"All" "All"
], ],
@ -1492,7 +1583,7 @@
"auto_count": 30, "auto_count": 30,
"auto_min": "10s", "auto_min": "10s",
"current": { "current": {
"selected": true, "selected": false,
"text": "5m", "text": "5m",
"value": "5m" "value": "5m"
}, },
@ -1562,17 +1653,12 @@
} }
], ],
"query": "1m,5m,10m,30m,1h,6h,12h,1d,7d,14d,30d", "query": "1m,5m,10m,30m,1h,6h,12h,1d,7d,14d,30d",
"queryValue": "5m", "queryValue": "",
"refresh": 2, "refresh": 2,
"skipUrlSync": false, "skipUrlSync": false,
"type": "interval" "type": "interval"
}, },
{ {
"current": {
"selected": true,
"text": "demo.local-it.cloud:8082",
"value": "demo.local-it.cloud:8082"
},
"datasource": { "datasource": {
"type": "prometheus", "type": "prometheus",
"uid": "PBFA97CFB590B2093" "uid": "PBFA97CFB590B2093"
@ -1586,12 +1672,12 @@
"options": [], "options": [],
"query": { "query": {
"query": "label_values(instance)", "query": "label_values(instance)",
"refId": "StandardVariableQuery" "refId": "PrometheusVariableQueryEditor-VariableQuery"
}, },
"refresh": 1, "refresh": 1,
"regex": ".*8082.*", "regex": ".*8082",
"skipUrlSync": false, "skipUrlSync": false,
"sort": 0, "sort": 1,
"tagValuesQuery": "", "tagValuesQuery": "",
"tagsQuery": "", "tagsQuery": "",
"type": "query", "type": "query",
@ -1600,7 +1686,7 @@
] ]
}, },
"time": { "time": {
"from": "now-15m", "from": "now-2d",
"to": "now" "to": "now"
}, },
"timepicker": { "timepicker": {
@ -1629,8 +1715,8 @@
] ]
}, },
"timezone": "", "timezone": "",
"title": "Traefik 2", "title": "Traefik Reverse Proxy",
"uid": "3ipsWfViz", "uid": "3ipsWfViz",
"version": 5, "version": 9,
"weekStart": "" "weekStart": ""
} }

View File

@ -10,6 +10,7 @@ auto_assign_org_role = Admin
{{ if eq (env "OIDC_ENABLED") "1" }} {{ if eq (env "OIDC_ENABLED") "1" }}
[auth] [auth]
disable_login_form = true disable_login_form = true
oauth_allow_insecure_email_lookup=true # https://github.com/grafana/grafana/issues/70203
[auth.generic_oauth] [auth.generic_oauth]
enabled = true enabled = true
@ -18,6 +19,7 @@ name = oauth
icon = signin icon = signin
tls_skip_verify_insecure = false tls_skip_verify_insecure = false
allow_sign_up = true allow_sign_up = true
auto_login = true
client_id = {{ env "OIDC_CLIENT_ID" }} client_id = {{ env "OIDC_CLIENT_ID" }}
client_secret = {{ secret "grafana_oidc_client_secret" }} client_secret = {{ secret "grafana_oidc_client_secret" }}
auth_url = {{ env "OIDC_AUTH_URL" }} auth_url = {{ env "OIDC_AUTH_URL" }}
@ -28,6 +30,9 @@ api_url = {{ env "OIDC_API_URL" }}
enabled = false enabled = false
{{ end }} {{ end }}
[plugins] [plugins]
enable_alpha = true enable_alpha = true
[database]
type = sqlite3
wal = true

View File

@ -114,6 +114,14 @@ limits_config:
reject_old_samples: true reject_old_samples: true
reject_old_samples_max_age: 168h reject_old_samples_max_age: 168h
retention_period: {{ env "LOKI_RETENTION_PERIOD" }} retention_period: {{ env "LOKI_RETENTION_PERIOD" }}
split_queries_by_interval: 24h
max_query_parallelism: 100
query_scheduler:
max_outstanding_requests_per_tenant: 4096
frontend:
max_outstanding_per_tenant: 4096
chunk_store_config: chunk_store_config:
max_look_back_period: 0s max_look_back_period: 0s

View File

@ -17,4 +17,4 @@ scrape_configs:
- /prometheus/scrape_configs/*.yml - /prometheus/scrape_configs/*.yml
basic_auth: basic_auth:
username: admin username: admin
password: {{ secret "basic_auth_admin_password" }} password: {{ secret "basic_auth" }}

View File

@ -9,7 +9,9 @@ clients:
- url: {{ env "LOKI_PUSH_URL" }} - url: {{ env "LOKI_PUSH_URL" }}
basic_auth: basic_auth:
username: admin username: admin
password: {{ secret "basic_auth_admin_password" }} password: {{ secret "basic_auth" }}
external_labels:
hostname: {{ env "DOMAIN" }}
scrape_configs: scrape_configs:
- job_name: system - job_name: system
@ -32,4 +34,4 @@ scrape_configs:
- source_labels: ['__meta_docker_container_label_com_docker_stack_namespace'] - source_labels: ['__meta_docker_container_label_com_docker_stack_namespace']
target_label: "stack_namespace" target_label: "stack_namespace"
- source_labels: ['__meta_docker_container_label_com_docker_swarm_service_name'] - source_labels: ['__meta_docker_container_label_com_docker_swarm_service_name']
target_label: "service_name" target_label: "service_name"

4
release/1.0.0+v1.7.0 Normal file
View File

@ -0,0 +1,4 @@
Breakng change: secret `basic_auth_admin_password` was renamed to `basic_auth`. Insert the secret before upgrading. And change the env BASIC_AUTH_ADMIN_PASSWORD to BASIC_AUTH
abra app secret insert monitoring.example.com basic_auth v1 $(abra app run monitoring.example.com promtail cat /var/run/secrets/basic_auth_admin_password)
sed -i ~/.abra/servers/example.com/monitoring.example.com.env -e 's/BASIC_AUTH_ADMIN_PASSWORD/BASIC_AUTH/'