Подключить Redis Exporter и Prometheus Operator

Oct 13 2020

У меня есть кластер Redis и Redis-exporter в двух отдельных развертываниях в одном пространстве имен кластера Kubernetes. Я использую оператор Prometheus для мониторинга кластера, но не могу найти способ настроить экспортера и оператора. Я настроил службу, ориентированную на экспортера Redis (см. Ниже) и ServiceMonitor (также ниже). Если я перенесу вперед в службу экспорта Redis, я смогу увидеть метрики. Кроме того, журналы экспортера Redis не показывают проблем.

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

Мой сервис и сервисмонитор

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

Если я переключаюсь на экспортер Redis sidecar рядом с кластером Redis, все работает правильно. Кто-нибудь сталкивался с такой проблемой?

Ответы

1 Zambozo Oct 15 2020 at 12:59

Мне не хватало spec.endpoints.path в ServiceMonitor

Вот пример манифеста из добавления новых целей очистки и руководства по устранению неполадок .

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