Оператор Prometheus - OOM убит при включении мониторинга Istio

Я хотел бы попросить вас о помощи - как я могу предотвратить убийство Прометея из-за недостатка памяти при включении мониторинга метрик Istio? Я использую Prometheus Operator, и мониторинг показателей работает нормально, пока я не создаю ServiceMonitors для Istio, взятые из этой статьи Prune on Medium. Из статьи они следующие:

ServiceMonitor для плоскости данных:

      apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-oper-istio-dataplane
  labels:
    monitoring: istio-dataplane
    release: prometheus
spec:
  selector:
    matchExpressions:
      - {key: istio-prometheus-ignore, operator: DoesNotExist}
  namespaceSelector:
    any: true
  jobLabel: envoy-stats
  endpoints:
  - path: /stats/prometheus
    targetPort: http-envoy-prom
    interval: 15s
    relabelings:
    - sourceLabels: [__meta_kubernetes_pod_container_port_name]
      action: keep
      regex: '.*-envoy-prom'
    - action: labelmap
      regex: "__meta_kubernetes_pod_label_(.+)"
    - sourceLabels: [__meta_kubernetes_namespace]
      action: replace
      targetLabel: namespace
    - sourceLabels: [__meta_kubernetes_pod_name]
      action: replace
      targetLabel: pod_name

ServiceMonitor для плоскости управления:

      apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-oper-istio-controlplane
  labels:
    release: prometheus
spec:
  jobLabel: istio
  selector:
    matchExpressions:
      - {key: istio, operator: In, values: [mixer,pilot,galley,citadel,sidecar-injector]}
  namespaceSelector:
    any: true
  endpoints:
  - port: http-monitoring
    interval: 15s
  - port: http-policy-monitoring
    interval: 15s

После создания ServiceMonitor для Istio Data Plane использование памяти занимает всего минуту с 10 до 30 ГБ, а реплики Prometheus уничтожаются Kubernetes. Использование ЦП нормальное. Как можно предотвратить такое огромное увеличение использования ресурсов? Что-то не так с перемаркировкой? Предполагается, что метрики будут очищены примерно с 500 конечных точек.


[РЕДАКТИРОВАТЬ]

Судя по результатам расследования, на использование ресурсов большое влияние оказывает перемаркировка. Например, если я изменю targetLabel на pod вместо pod_name, использование ресурсов немедленно возрастет.

Во всяком случае, я не нашел решения этого вопроса. Я использовал полуофициальные ServiceMonitor и PodMonitor, предоставленные Istio на GithHub, но это просто заставило Prometheus работать дольше до исключения Out Of Memory Exception. Теперь для перехода с ~10 ГБ до 32 ГБ памяти требуется около часа.

Я вижу, что после включения метрик Istio количество временных рядов растет довольно быстро и никогда не останавливается, что, на мой взгляд, похоже на утечку памяти. До включения мониторинга Istio это число было достаточно стабильным.

Есть ли у вас другие предложения?

0 ответов

Другие вопросы по тегам