apiVersion: apps/v1 kind: Deployment metadata: name: fritzbox-exporter namespace: monitoring labels: app: fritzbox-exporter spec: replicas: 1 selector: matchLabels: app: fritzbox-exporter template: metadata: labels: app: fritzbox-exporter spec: containers: - name: fritzbox-exporter image: ghcr.io/sberk42/fritzbox_exporter/fritzbox_exporter:latest imagePullPolicy: IfNotPresent env: - name: USERNAME valueFrom: secretKeyRef: name: fritzbox-exporter-secret key: username - name: PASSWORD valueFrom: secretKeyRef: name: fritzbox-exporter-secret key: password - name: GATEWAY_URL value: "http://192.168.10.1:49000" - name: LISTEN_ADDRESS value: "0.0.0.0:9042" ports: - name: http-metrics containerPort: 9042 resources: requests: cpu: 10m memory: 32Mi limits: cpu: 100m memory: 64Mi --- apiVersion: v1 kind: Service metadata: name: fritzbox-exporter namespace: monitoring labels: app: fritzbox-exporter spec: ports: - name: http-metrics port: 9042 targetPort: 9042 protocol: TCP selector: app: fritzbox-exporter --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: fritzbox-exporter namespace: monitoring labels: app: fritzbox-exporter release: prometheus-operator spec: selector: matchLabels: app: fritzbox-exporter namespaceSelector: matchNames: - monitoring endpoints: - port: http-metrics path: /metrics interval: 60s scrapeTimeout: 15s --- apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: fritzbox-exporter-alerts namespace: monitoring labels: release: prometheus-operator spec: groups: - name: fritzbox-exporter.rules rules: - alert: FritzBoxExporterOffline expr: up{job="fritzbox-exporter"} == 0 for: 5m labels: severity: warning annotations: summary: "FritzBox exporter is offline" description: "The FritzBox exporter pod in the cluster cannot reach the router at 192.168.10.1 or the exporter itself is down."