feat: kube-prometeus-stack
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
GRAFANA_ADMIN_USER=admin
|
||||
GRAFANA_ADMIN_PASSWORD=changeme
|
||||
@@ -0,0 +1,5 @@
|
||||
route:
|
||||
receiver: default
|
||||
|
||||
receivers:
|
||||
- name: default
|
||||
@@ -0,0 +1,66 @@
|
||||
services:
|
||||
grafana:
|
||||
image: grafana/grafana:11.6.0
|
||||
container_name: prometheus-grafana
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-admin}
|
||||
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:?grafana admin password required}
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.prometheus-grafana.loadbalancer.server.port=3000"
|
||||
|
||||
# Prod Router
|
||||
- "traefik.http.routers.grafana.rule=Host(`grafana.forust.xyz`)"
|
||||
- "traefik.http.routers.grafana.entrypoints=websecure"
|
||||
- "traefik.http.routers.grafana.tls=true"
|
||||
# Local Router
|
||||
- "traefik.http.routers.grafana-local.rule=Host(`grafana.workstation.internal`)"
|
||||
- "traefik.http.routers.grafana-local.entrypoints=websecure"
|
||||
- "traefik.http.routers.grafana-local.tls=true"
|
||||
# Dev Router
|
||||
- "traefik.http.routers.grafana-dev.rule=Host(`grafana.gigaforust.internal`)"
|
||||
- "traefik.http.routers.grafana-dev.entrypoints=websecure"
|
||||
- "traefik.http.routers.grafana-dev.tls=true"
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:v3.2.1
|
||||
container_name: prometheus-prometheus
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- "--config.file=/etc/prometheus/prometheus.yaml"
|
||||
- "--storage.tsdb.path=/prometheus"
|
||||
- "--storage.tsdb.retention.time=90d"
|
||||
volumes:
|
||||
- prometheus-data:/prometheus
|
||||
- ./prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
alertmanager:
|
||||
image: prom/alertmanager:v0.28.1
|
||||
container_name: prometheus-alertmanager
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- "--config.file=/etc/alertmanager/alertmanager.yaml"
|
||||
- "--storage.path=/alertmanager"
|
||||
volumes:
|
||||
- alertmanager-data:/alertmanager
|
||||
- ./alertmanager.yaml:/etc/alertmanager/alertmanager.yaml:ro
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
volumes:
|
||||
grafana-data:
|
||||
prometheus-data:
|
||||
alertmanager-data:
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
@@ -0,0 +1,52 @@
|
||||
grafana:
|
||||
grafana.ini:
|
||||
server:
|
||||
domain: grafana.forust.xyz
|
||||
root_url: https://grafana.forust.xyz
|
||||
auth.anonymous:
|
||||
enabled: false
|
||||
users:
|
||||
allow_sign_up: false
|
||||
admin:
|
||||
existingSecret: grafana-admin
|
||||
userKey: admin-user
|
||||
passwordKey: admin-password
|
||||
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
|
||||
service:
|
||||
port: 80
|
||||
|
||||
prometheus:
|
||||
prometheusSpec:
|
||||
storageSpec:
|
||||
volumeClaimTemplate:
|
||||
spec:
|
||||
storageClassName: "local-path"
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 40Gi
|
||||
resources:
|
||||
requests:
|
||||
memory: "700Mi"
|
||||
cpu: 200m
|
||||
limits:
|
||||
memory: "2Gi"
|
||||
alertmanager:
|
||||
alertmanagerSpec:
|
||||
storage:
|
||||
volumeClaimTemplate:
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
@@ -0,0 +1,36 @@
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: grafana-prod
|
||||
namespace: prometheus
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: Host(`grafana.forust.xyz`)
|
||||
kind: Rule
|
||||
middlewares:
|
||||
- name: "crowdsec-crowdsec-bouncer@kubernetescrd"
|
||||
- name: "security-chain@file"
|
||||
services:
|
||||
- name: prometheus-stack-grafana
|
||||
port: 80
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
domains:
|
||||
- main: grafana.forust.xyz
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: grafana-local
|
||||
namespace: prometheus
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: HostRegexp(`^grafana\.(workstation|gigaforust)\.internal$`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: prometheus-stack-grafana
|
||||
port: 80
|
||||
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: prometheus
|
||||
@@ -0,0 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: grafana-admin
|
||||
namespace: prometheus
|
||||
type: Opaque
|
||||
stringData:
|
||||
admin-user: "admin"
|
||||
admin-password: ""
|
||||
@@ -0,0 +1,16 @@
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: traefik-monitor
|
||||
namespace: prometheus
|
||||
labels:
|
||||
release: prometheus-stack
|
||||
spec:
|
||||
namespaceSelector:
|
||||
any: true
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: traefik
|
||||
endpoints:
|
||||
- port: metrics
|
||||
interval: 15s
|
||||
@@ -0,0 +1,8 @@
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
evaluation_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: prometheus
|
||||
static_configs:
|
||||
- targets: ["localhost:9090"]
|
||||
Reference in New Issue
Block a user