• Русский
  • Метрики и Service Mesh

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

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

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

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

    Вы можете интегрировать Alauda Service 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
      labels:
        # prometheus=kube-prometheus is required in ACP prometheus.
        prometheus: kube-prometheus
    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:
        # prometheus=kube-prometheus is required in ACP prometheus.
        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}"
        # additional labels
        - sourceLabels: [__meta_kubernetes_namespace]
          action: replace
          targetLabel: namespace
        # - action: replace
        #   targetLabel: mesh_id
        #   replacement: "<mesh_id>"
    1. Указывает, что объект PodMonitor должен применяться во всех пространствах имён mesh, включая пространство имён контрольной плоскости Istio, поскольку мониторинг Alauda Container Platform игнорирует спецификацию namespaceSelector в объектах ServiceMonitor и PodMonitor.
    2. Укажите фактический mesh ID. Метка mesh_id необходима только при работе в ambient режиме и если несколько кластеров используют один источник данных мониторинга.

    Примените 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