Метрики и Service Mesh

Содержание

Использование метрик

Для предоставления метрик для оператора Alauda Service Mesh v2 и управляющей плоскости Istio должен быть установлен плагин мониторинга, такой как Prometheus или VictoriaMetrics.

После добавления вашего приложения в mesh вы можете отслеживать состояние и производительность приложений, работающих на платформе Alauda Container Platform, с помощью метрик и настраиваемых оповещений по использованию CPU и памяти, сетевому подключению и другим ресурсам.

Настройка мониторинга с Service Mesh

Вы можете интегрировать Alauda Service Mesh с мониторингом пользовательских нагрузок для обеспечения наблюдаемости в вашем сервисном mesh. Мониторинг пользовательских нагрузок предоставляет доступ к важным встроенным инструментам и необходим для запуска Kiali — специализированной консоли для Istio.

Требования

  • Установлен Alauda Service Mesh.

Процедура

Создайте YAML-файл с именем servicemonitor.yaml для мониторинга управляющей плоскости Istio:

Пример объекта ServiceMonitor

servicemonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: istiod-monitor
  namespace: istio-system
spec:
  targetLabels:
  - app
  selector:
    matchLabels:
      istio: pilot
  endpoints:
  - port: http-monitoring
    interval: 60s

Примените YAML-файл, выполнив следующую команду:

kubectl apply -f servicemonitor.yaml

Создайте YAML-файл с именем podmonitor.yaml для сбора метрик с прокси Istio (нагрузок):

Пример объекта PodMonitor

podmonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: istio-proxies-monitor
  namespace: istio-system
  labels:
    # monitoring=pods & prometheus=kube-prometheus требуется в ACP prometheus.
    monitoring: pods
    prometheus: kube-prometheus
spec:
  selector:
    matchExpressions:
    - key: istio-prometheus-ignore
      operator: DoesNotExist
  namespaceSelector:
    any: true
  jobLabel: envoy-stats
  podMetricsEndpoints:
  - path: /stats/prometheus
    interval: 60s
    relabelings:
    - action: keep
      sourceLabels: [ __meta_kubernetes_pod_container_name ]
      regex: "istio-proxy"
    - action: keep
      sourceLabels: [__meta_kubernetes_pod_annotationpresent_prometheus_io_scrape]
    - sourceLabels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: "$1:$2"
      targetLabel: __address__
    - sourceLabels: [__meta_kubernetes_pod_label_app_kubernetes_io_name, __meta_kubernetes_pod_label_app]
      separator: ";"
      targetLabel: "app"
      action: replace
      regex: "(.+);.*|.*;(.+)"
      replacement: "${1}${2}"
    - sourceLabels: [__meta_kubernetes_pod_label_app_kubernetes_io_version, __meta_kubernetes_pod_label_version]
      separator: ";"
      targetLabel: "version"
      action: replace
      regex: "(.+);.*|.*;(.+)"
      replacement: "${1}${2}"
    - sourceLabels: [__meta_kubernetes_namespace]
      action: replace
      targetLabel: namespace
    - action: drop
      regex: "true"
      sourceLabels: [__meta_kubernetes_pod_container_init]
  1. Указывает, что объект PodMonitor должен применяться во всех пространствах имён mesh, включая пространство имён управляющей плоскости Istio, поскольку мониторинг Alauda Container Platform игнорирует спецификацию namespaceSelector в объектах ServiceMonitor и PodMonitor.

Примените YAML-файл, выполнив следующую команду:

kubectl apply -f podmonitor.yaml

Создайте YAML-файл с именем asm-telemetry.yaml для настройки метрик prometheus для прокси Istio (нагрузок):

Пример ресурса Istio Telemetry

asm-telemetry.yaml
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: asm-default
  namespace: istio-system
spec:
  metrics:
    - providers:
        - name: prometheus
      overrides:
        - tagOverrides:
            mesh_id:
              value: xds.node.metadata['MESH_ID']
  1. Добавляет метку mesh_id к метрикам prometheus.

Примените YAML-файл, выполнив следующую команду:

kubectl apply -f asm-telemetry.yaml