apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: monitoring data: prometheus.yml: | global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'besu-validators' kubernetes_sd_configs: - role: pod namespaces: names: - besu-network relabel_configs: - source_labels: [__meta_kubernetes_pod_label_component] action: keep regex: validator - source_labels: [__meta_kubernetes_pod_ip] action: replace target_label: __address__ replacement: $1:9545 - job_name: 'besu-sentries' kubernetes_sd_configs: - role: pod namespaces: names: - besu-network relabel_configs: - source_labels: [__meta_kubernetes_pod_label_component] action: keep regex: sentry - source_labels: [__meta_kubernetes_pod_ip] action: replace target_label: __address__ replacement: $1:9545 - job_name: 'besu-rpc' kubernetes_sd_configs: - role: pod namespaces: names: - besu-network relabel_configs: - source_labels: [__meta_kubernetes_pod_label_component] action: keep regex: rpc - source_labels: [__meta_kubernetes_pod_ip] action: replace target_label: __address__ replacement: $1:9545 --- apiVersion: apps/v1 kind: Deployment metadata: name: prometheus namespace: monitoring spec: replicas: 1 selector: matchLabels: app: prometheus template: metadata: labels: app: prometheus spec: containers: - name: prometheus image: prom/prometheus:v2.45.0 ports: - name: web containerPort: 9090 volumeMounts: - name: config mountPath: /etc/prometheus args: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' - '--storage.tsdb.retention.time=30d' resources: requests: cpu: "500m" memory: "2Gi" limits: cpu: "2" memory: "4Gi" volumes: - name: config configMap: name: prometheus-config --- apiVersion: v1 kind: Service metadata: name: prometheus namespace: monitoring spec: type: ClusterIP ports: - port: 9090 targetPort: web protocol: TCP selector: app: prometheus