Метрики и 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]
- Указывает, что объект
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']
- Добавляет метку
mesh_id
к метрикам prometheus.
Примените YAML-файл, выполнив следующую команду:
kubectl apply -f asm-telemetry.yaml