apiVersion: apps/v1 kind: Deployment metadata: name: snmp-exporter spec: replicas: 2 selector: matchLabels: app: snmp-exporter template: metadata: labels: app: snmp-exporter spec: containers: - image: prom/snmp-exporter:v0.22.0 name: snmp-exporter imagePullPolicy: IfNotPresent securityContext: runAsNonRoot: true runAsUser: 1000 readOnlyRootFilesystem: true ports: - containerPort: 9116 name: exporter livenessProbe: httpGet: path: /health port: exporter readinessProbe: httpGet: path: /health port: exporter volumeMounts: - name: snmp-exporter mountPath: /etc/snmp_exporter volumes: - name: snmp-exporter configMap: name: snmp-exporter nodeSelector: dedicated: monitoring tolerations: - key: dedicated operator: Equal value: monitoring effect: NoSchedule affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - snmp-exporter topologyKey: "kubernetes.io/hostname" --- kind: Service apiVersion: v1 metadata: name: snmp-exporter spec: type: ClusterIP ports: - name: exporter port: 9116 protocol: TCP selector: app: snmp-exporter --- kind: Probe apiVersion: monitoring.coreos.com/v1 metadata: name: ups spec: interval: 60s module: rfc1628_ups prober: url: snmp-exporter:9116 path: /snmp metricRelabelings: - sourceLabels: [__name__] regex: '(.*)' replacement: 'snmp_${1}' targetLabel: __name__ targets: staticConfig: static: - ups-4.mgmt.k-space.ee - ups-7.mgmt.k-space.ee - ups-8.mgmt.k-space.ee - ups-9.mgmt.k-space.ee --- apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: ups spec: groups: - name: ups rules: - alert: UPSBatteryLost annotations: summary: One or more UPS-es have degraded batteries. expr: snmp_upsBatteryStatus{upsBatteryStatus!="batteryNormal"} > 0 for: 1m labels: severity: critical - alert: UPSPowerLost annotations: summary: One or more UPS-es is not in normal operation mode. This either means power is lost or UPS was loaded and it's now in bypass mode. expr: sum(snmp_upsOutputSource { upsOutputSource = 'normal' }) != 4 for: 1m labels: severity: critical - alert: UPSExcessivelyLoaded annotations: summary: One or more UPS-es is loaded more than 50%. Make sure load on UPS-es is balanced and load for no UPS stays above 50%. expr: snmp_upsOutputPercentLoad > 80 for: 1h labels: severity: critical --- kind: Probe apiVersion: monitoring.coreos.com/v1 metadata: name: printer spec: interval: 60s scrapeTimeout: 50s module: printer_mib prober: url: snmp-exporter:9116 path: /snmp metricRelabelings: - sourceLabels: [__name__] regex: '(.*)' replacement: 'snmp_${1}' targetLabel: __name__ targets: staticConfig: static: - mfp-chaos.pub.k-space.ee --- apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: printer spec: groups: - name: printer rules: - alert: PrinterNeedsAttention annotations: summary: Printer is in error state. If the underlying reason is 'low on paper' make sure there is enough paper near the printer. It not drop a line at accounting@k-space.ee to order more office supplies. expr: snmp_hrPrinterDetectedErrorState == 1 for: 0m labels: severity: warning --- kind: Probe apiVersion: monitoring.coreos.com/v1 metadata: name: beamer spec: interval: 60s module: epson_beamer prober: url: snmp-exporter:9116 path: /snmp metricRelabelings: - sourceLabels: [__name__] regex: '(.*)' replacement: 'snmp_${1}' targetLabel: __name__ targets: staticConfig: static: - beamer-cyber.sec.k-space.ee