Conectar exportador redis e operador prometheus
Eu tenho um cluster Redis e um exportador Redis em duas implantações separadas no mesmo namespace de um cluster Kubernetes. Estou usando o operador Prometheus para monitorar o cluster, mas não consigo encontrar uma maneira de configurar o exportador e o operador. Eu configurei um serviço direcionado ao exportador Redis (verifique abaixo) e um ServiceMonitor (também abaixo). Se eu encaminhar para o serviço de exportador do Redis, posso ver as métricas. Além disso, os logs do exportador do Redis não mostram problemas.
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: foo
name: redis-exporter
labels:
app: redis-exporter
spec:
replicas: 1
selector:
matchLabels:
app: redis-exporter
template:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9121"
labels:
app: redis-exporter
spec:
containers:
- name: redis-exporter
image: oliver006/redis_exporter:latest
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: REDIS_ADDR
value: redis-cluster.foo.svc:6379
ports:
- containerPort: 9121
Meu serviço e monitor de serviço
kind: Service
metadata:
name: redis-external-exporter
namespace: foo
labels:
app: redis
k8s-app: redis-ext
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: "9121"
spec:
ports:
- name: redis-ext
port: 9121
protocol: TCP
targetPort: 9121
selector:
app: redis-exporter
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: redis-external-exporter
namespace: bi-infra
labels:
app: redis-external-exporter
k8s-app: redis-monitor
spec:
jobLabel: app
selector:
matchLabels:
app: redis-ext
namespaceSelector:
matchNames:
- foo
endpoints:
- port: redis-ext
interval: 30s
honorLabels: true
Se eu mudar para um exportador Redis secundário ao lado do cluster Redis, tudo estará funcionando corretamente. Alguém enfrentou esse problema?
Respostas
Estava faltando spec.endpoints.path no ServiceMonitor
Aqui está um exemplo de manifesto da adição de novos destinos de raspagem e tutorial de solução de problemas .
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: monitoring-pili
namespace: monitoring
labels:
app: pili-service-monitor
spec:
selector:
matchLabels:
# Target app service
app: pili
endpoints:
- interval: 15s
path: /metrics <---
port: uwsgi
namespaceSelector:
matchNames:
- default