This commit is contained in:
Mike McFetridge
2026-07-23 19:38:14 -04:00
parent 72272e4006
commit 84e1ead50c
283 changed files with 0 additions and 206 deletions
@@ -0,0 +1,56 @@
---
services:
<< service_name >>:
image: docker.io/prom/prometheus:v3.11.3
restart: << restart_policy >>
command:
- --config.file=/etc/prometheus/prometheus.yaml
- --storage.tsdb.retention.time=<< metrics_retention_time >>
<%- if metrics_retention_size != '0' %>
- --storage.tsdb.retention.size=<< metrics_retention_size >>
<%- endif %>
<%- if metrics_enable_remote_write %>
- --web.enable-remote-write-receiver
<%- endif %>
<%- if traefik_enabled %>
<%- if traefik_tls_enabled %>
- --web.external-url=https://<< traefik_host >>.<< traefik_domain >>
<%- else %>
- --web.external-url=http://<< traefik_host >>.<< traefik_domain >>
<%- endif %>
<%- endif %>
<%- if not traefik_enabled %>
ports:
- "<< ports_http >>:9090"
<%- endif %>
volumes:
- << service_name >>_data:/prometheus
- ./config/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
<%- if traefik_enabled %>
networks:
<< traefik_network >>:
labels:
- traefik.enable=true
- traefik.docker.network=<< traefik_network >>
- traefik.http.services.<< service_name >>_web.loadBalancer.server.port=9090
- traefik.http.routers.<< service_name >>_http.service=<< service_name >>_web
- traefik.http.routers.<< service_name >>_http.rule=Host(`<< traefik_host >>.<< traefik_domain >>`)
- traefik.http.routers.<< service_name >>_http.entrypoints=<< traefik_entrypoint >>
<%- if traefik_tls_enabled %>
- traefik.http.routers.<< service_name >>_https.service=<< service_name >>_web
- traefik.http.routers.<< service_name >>_https.rule=Host(`<< traefik_host >>.<< traefik_domain >>`)
- traefik.http.routers.<< service_name >>_https.entrypoints=<< traefik_tls_entrypoint >>
- traefik.http.routers.<< service_name >>_https.tls=true
- traefik.http.routers.<< service_name >>_https.tls.certresolver=<< traefik_tls_certresolver >>
<%- endif %>
<%- endif %>
volumes:
<< service_name >>_data:
driver: local
<%- if traefik_enabled %>
networks:
<< traefik_network >>:
external: true
<%- endif %>
+28
View File
@@ -0,0 +1,28 @@
---
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
# external_labels:
# monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
# Example job for node_exporter
# - job_name: 'node_exporter'
# static_configs:
# - targets: ['node_exporter:9100']
# Example job for cadvisor
# - job_name: 'cadvisor'
# static_configs:
# - targets: ['cadvisor:8080']
+191
View File
@@ -0,0 +1,191 @@
{
"slug": "prometheus",
"kind": "compose",
"metadata": {
"name": "Prometheus",
"description": "Open-source systems monitoring and alerting toolkit. Collects and stores metrics as time series data, with a powerful query language (PromQL) and integration with visualization tools like Grafana.",
"tags": [
"traefik",
"authentik"
],
"icon": {
"provider": "selfhst",
"id": "prometheus"
},
"draft": false,
"version": {
"name": "v3.11.3",
"source_dep_name": "docker.io/prom/prometheus",
"source_dep_version": "v3.11.3"
}
},
"variables": [
{
"title": "General",
"name": "general",
"items": [
{
"name": "service_name",
"type": "str",
"title": "Service Name",
"required": false,
"default": "prometheus",
"config": {
"placeholder": "prometheus"
}
},
{
"name": "restart_policy",
"type": "enum",
"title": "Restart Policy",
"required": true,
"default": "unless-stopped",
"config": {
"options": [
"unless-stopped",
"always",
"on-failure",
"no"
]
}
}
]
},
{
"title": "Metrics & Storage",
"name": "metrics",
"items": [
{
"name": "metrics_retention_time",
"type": "str",
"title": "Retention Time",
"required": false,
"default": "15d",
"description": "How long to retain samples (e.g., 15d, 30d, 1y)",
"config": {
"placeholder": "15d"
}
},
{
"name": "metrics_retention_size",
"type": "str",
"title": "Retention Size",
"required": false,
"default": "0",
"description": "Maximum storage size (e.g., 5GB, 10GB, 1TB)",
"config": {
"placeholder": "0"
}
},
{
"name": "metrics_enable_remote_write",
"type": "bool",
"title": "Remote Write Receiver",
"required": false,
"default": false
}
]
},
{
"title": "Ports",
"name": "ports",
"items": [
{
"name": "ports_http",
"type": "str",
"title": "HTTP Port",
"required": false,
"default": 9090,
"config": {
"placeholder": "9090"
}
}
]
},
{
"title": "Traefik",
"name": "traefik",
"toggle": "traefik_enabled",
"items": [
{
"name": "traefik_enabled",
"type": "bool",
"title": "Traefik",
"required": false,
"default": false
},
{
"name": "traefik_host",
"type": "str",
"title": "Host",
"required": true,
"config": {
"placeholder": "prometheus"
}
},
{
"name": "traefik_domain",
"type": "str",
"title": "Domain",
"required": true,
"config": {
"placeholder": "home.arpa"
}
},
{
"name": "traefik_entrypoint",
"type": "str",
"title": "Entrypoint",
"required": true,
"default": "web",
"config": {
"placeholder": "web"
}
},
{
"name": "traefik_network",
"type": "str",
"title": "Network",
"required": true,
"default": "traefik",
"config": {
"placeholder": "traefik"
}
},
{
"name": "traefik_tls_enabled",
"type": "bool",
"title": "TLS",
"required": false,
"default": false
},
{
"name": "traefik_tls_entrypoint",
"type": "str",
"title": "TLS Entrypoint",
"required": true,
"default": "websecure",
"config": {
"placeholder": "websecure"
},
"needs": [
"traefik_tls_enabled=true"
]
},
{
"name": "traefik_tls_certresolver",
"type": "str",
"title": "Cert Resolver",
"required": true,
"default": "cloudflare",
"config": {
"placeholder": "cloudflare"
},
"needs": [
"traefik_tls_enabled=true"
]
}
]
}
]
}