Aller au contenu
Edouard Topin's Blog
Observabilité as Code sur VCF & Kubernetes / Série 05/05

Aria Operations rencontre l'open source : observabilité unifiée pour VCF

Connecter Aria Operations à Prometheus via remote_write, enrichir Grafana avec les métriques vSphere, et construire des dashboards unifiés VCF + Kubernetes.

Edouard Topin
4 min de lecture
Illustration éditoriale abstraite des panneaux Aria Operations et des dashboards open source se combinant en une vue d'observabilité unifiée pour VCF.

Les articles précédents de cette série ont déployé Prometheus, Loki et l’OpenTelemetry Collector pour couvrir l’observabilité de la couche Kubernetes. Mais dans un environnement VCF, l’histoire ne commence pas au pod. Elle commence à l’hôte physique, au datastore vSAN, au segment NSX. La couche infrastructure dispose de son propre outil d’observabilité : VMware Aria Operations (anciennement vRealize Operations).

Le défi est qu’Aria Operations et Prometheus vivent dans des silos séparés. Votre équipe infrastructure ouvre vROps pour regarder la contention CPU ESXi. Votre équipe plateforme ouvre Grafana pour regarder la pression de scheduling des pods. Personne ne regarde les deux simultanément en se demandant : ce pic de latence de pod est-il causé par la contention I/O vSAN sur le datastore sous-jacent ? Combler ce gap est l’objet de cet article.

Vue d’ensemble de l’architecture Aria Operations

Aria Operations est une plateforme d’analyse et d’opérations pour l’infrastructure VMware. Son modèle de données est construit autour d’objets (entités gérées) et de métriques (données temporelles attachées aux objets).

La hiérarchie d’objets mappe le modèle d’objets vSphere :

  • HostSystem — hôte ESXi
  • ClusterComputeResource — cluster vSphere
  • Datastore — stockage sous-jacent (vSAN ou NFS/VMFS)
  • VirtualMachine — VM individuelle
  • NSX-T Data Center — plan de gestion NSX
  • LogicalSwitch — segment NSX

Chaque type d’objet expose un ensemble de clés de métriques suivant le pattern type_objet|groupe_métrique|nom_métrique. Pour un HostSystem, les clés de métriques les plus pertinentes opérationnellement incluent :

cpu|cpuDemand_average              — Pourcentage de demande CPU (0-100)
cpu|ready_summation                — CPU Ready : temps qu'un vCPU a attendu du CPU physique
mem|usage_average                  — Pourcentage d'utilisation mémoire
mem|swapped_average                — Mo de mémoire swappée (non-zéro = pression mémoire)
disk|commandsAveraged_average      — Opérations I/O moyennes par seconde
net|packetsDroppedRx_summation     — Paquets reçus droppés (indicateur de pression réseau)

Pour ClusterComputeResource :

cpu|effectivecpu_average           — Capacité CPU effective après réservations HA
mem|effectivemem_average           — Mémoire effective après réservations HA
cluster|effectiveHostsTotal_latest — Nombre d'hôtes répondants dans le cluster

Exporter les métriques Aria Operations vers Prometheus

Aria Operations n’expose pas nativement un endpoint Prometheus /metrics. Il existe deux chemins d’intégration.

Chemin 1 : Prometheus remote_write depuis Aria Operations

Depuis Aria Operations 8.14, Broadcom a introduit des capacités natives de streaming de métriques sortantes. Le Management Pack vRealize Operations pour Prometheus (disponible sur le Broadcom Marketplace) ajoute un endpoint exporter Prometheus à Aria Operations que Prometheus peut scraper.

Chemin 2 : vsphere-exporter (communauté Prometheus)

Le projet vmware/vsphere-graphite et l’exporter communautaire pryorda/vmware_exporter fournissent des exporters Prometheus qui interrogent directement l’API vSphere. Ils fonctionnent sans Aria Operations et conviennent quand vous voulez des métriques infrastructure dans Prometheus sans la stack Aria Operations complète.

# Déployer vmware_exporter en Deployment dans le namespace monitoring
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vmware-exporter
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vmware-exporter
  template:
    metadata:
      labels:
        app: vmware-exporter
    spec:
      containers:
        - name: vmware-exporter
          image: pryorda/vmware_exporter:latest
          ports:
            - containerPort: 9272
              name: metrics
          env:
            - name: VSPHERE_HOST
              valueFrom:
                secretKeyRef:
                  name: vcenter-credentials
                  key: host
            - name: VSPHERE_USER
              valueFrom:
                secretKeyRef:
                  name: vcenter-credentials
                  key: username
            - name: VSPHERE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: vcenter-credentials
                  key: password
            - name: VSPHERE_IGNORE_SSL
              value: "false"
          resources:
            requests: { cpu: 100m, memory: 128Mi }
            limits: { cpu: 500m, memory: 512Mi }

Créez un ServiceMonitor pour que Prometheus scrape l’exporter :

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: vmware-exporter
  namespace: monitoring
  labels:
    release: kube-prometheus-stack
spec:
  selector:
    matchLabels:
      app: vmware-exporter
  endpoints:
    - port: metrics
      interval: 60s    # Les métriques vSphere ont une granularité à la minute ; 60s est approprié
      scrapeTimeout: 30s

API REST Aria Operations

Pour les environnements avec Aria Operations complètement déployé, l’API REST Aria Operations fournit un accès programmatique à toutes les métriques collectées.

# Authentification et obtention d'un token
curl -s -X POST https://aria-ops.example.com/suite-api/api/auth/token/acquire \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"<mot-de-passe>","authSource":"LOCAL"}' \
  | jq '.token'

# Requêter les métriques pour un objet spécifique (HostSystem)
curl -s -X GET "https://aria-ops.example.com/suite-api/api/resources?resourceKind=HostSystem" \
  -H "Authorization: vRealizeOpsToken <token>" \
  -H "Accept: application/json" \
  | jq '.resourceList[].identifier'

# Récupérer les données métriques de la dernière heure
curl -s -X POST "https://aria-ops.example.com/suite-api/api/resources/stats/query" \
  -H "Authorization: vRealizeOpsToken <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "resourceId": ["<id-ressource-hôte>"],
    "statKey": ["cpu|ready_summation", "cpu|cpuDemand_average", "mem|swapped_average"],
    "begin": '"$(date -d '1 hour ago' +%s%3N)"',
    "end": '"$(date +%s%3N)"'
  }'

Cette API est la fondation pour construire des exporters personnalisés qui font le pont entre les données Aria Operations et Prometheus pour toute métrique non couverte par les exporters communautaires.

Construire des dashboards Grafana unifiés

La puissance de la stack intégrée émerge dans les dashboards unifiés qui corrèlent les métriques infrastructure (depuis Aria Operations via vmware_exporter ou API) avec les métriques Kubernetes (depuis Prometheus), les logs (depuis Loki) et les traces (depuis Tempo).

Dashboard de corrélation hôte VCF vers pod
Créez un dashboard Grafana avec deux lignes : la première montrant les métriques hôte vSphere (CPU demand, CPU ready, memory balloon, IOPS vSAN, latence vSAN par datastore), la deuxième montrant les métriques pods pour les workloads schedulés sur cet hôte (utilisation CPU pod, mémoire working set, nombre de redémarrages). Une variable $node mappe entre le nom d'hôte vSphere et le nom de nœud Kubernetes. Quand le CPU ready est élevé sur un hôte, vous pouvez immédiatement voir quels pods sont affectés sans changer d'outil.
Corrélation vSAN vers latence PVC
Les PersistentVolumes VKS sont sauvegardés par des VMDKs sur des datastores vSAN. Quand un pod rapporte une latence de requête base de données élevée, la cause première est parfois la latence I/O vSAN. Construisez un panneau de dashboard avec deux axes : la latence lecture/écriture PVC depuis `kubelet_volume_stats_*` et la latence datastore vSAN depuis `vmware_datastore_disk_read_latency_average`. Un alignement de pic entre les deux vous dit que l'infrastructure est le goulot d'étranglement, pas l'application.
Dashboard réseau NSX vers pods
NSX fournit des métriques de couche réseau : débit, drops de paquets, pression de table de connexions par switch logique et gateway. Corrélez ces métriques avec les métriques réseau au niveau pod depuis le cluster VKS (container_network_receive_bytes_total, container_network_transmit_errors_total). Un pattern d'augmentation des erreurs réseau conteneur associé à des drops de paquets NSX gateway indique un problème de chemin réseau qui commence à la couche hyperviseur, pas à l'application.
Suivi des SLOs à travers infrastructure et application
Le dashboard opérationnellement le plus mature combine les SLOs de disponibilité et de latence avec l'espace disponible sur l'infrastructure. Définissez un panneau SLO : taux d'erreur inférieur à 0,1% sur les 30 derniers jours, latence P99 inférieure à 200ms. Ajoutez des panneaux de contexte en dessous : espace disponible IOPS vSAN, espace disponible CPU hôte ESXi, nombre de nœuds VKS par rapport aux réplicas requis. Quand un taux de burn SLO s'accélère, les panneaux infrastructure vous disent immédiatement si c'est un goulot physique ou un problème purement logiciel.

Alerting à travers les deux stacks

Avec l’alerting natif Aria Operations et Prometheus Alertmanager tous deux actifs, vous risquez des notifications en double. L’approche recommandée est de router les alertes par domaine :

  • Alertes infrastructure (hôte hors ligne, vSAN dégradé, gateway NSX injoignable, capacité datastore au-dessus de 85%) sont gérées exclusivement par l’alerting natif Aria Operations → PagerDuty/ServiceNow.
  • Alertes Kubernetes et applicatives (crash loops pods, incohérence de réplicas déploiement, taux d’erreur élevé, burn SLO) sont gérées par Prometheus Alertmanager → Slack/PagerDuty.

Le point d’intégration est un système de gestion d’incidents partagé (PagerDuty, ServiceNow) qui corrèle les alertes des deux sources en utilisant le label commun hostname ou cluster comme clé de corrélation.

La matrice d’observabilité complète pour VCF

Après avoir déployé les cinq composants couverts dans cette série, votre plateforme VCF dispose d’une observabilité de bout en bout :

Aria Operations — Métriques hôte, cluster, vSAN, NSX de l’infrastructure vSphere. Alerting natif vROps et analytique de capacité. Source de vérité pour la couche infrastructure.

Prometheus + kube-prometheus-stack — Santé des composants Kubernetes, utilisation des ressources nœud, métriques pods, métriques personnalisées applicatives via ServiceMonitor. PromQL pour l’alerting et les dashboards.

Grafana — Couche unifiée de requête et de dashboard. Sources de données : vmware_exporter (vSphere), Prometheus (K8s + apps), Loki (logs), Tempo (traces). Vue unique à travers toutes les couches.

Loki + Fluent Bit — Logs pods structurés avec enrichissement de métadonnées Kubernetes. Requêtes LogQL. Corrélation log-vers-trace via les champs dérivés traceId.

OTel Collector + Tempo — Traces distribuées depuis les applications instrumentées. Tail-based sampling. Corrélation exemplar depuis les histogrammes Prometheus vers les cascades de traces.

Aucun incident d’observabilité ne nécessite d’ouvrir plus d’un outil. Grafana unifie tous les types de signaux. La corrélation infrastructure vers application est à portée d’une seule variable.

Références.

Reçois le prochain par email

Les nouveaux articles et séries, envoyés à leur publication. Aucun autre courrier.

Désabonnement en un clic, à tout moment.

Retour au blog
Partager

Articles similaires

  1. 14 min de lecture

    vDefend Distributed Firewall : le zero trust au niveau du workload

    Une politique de moindre privilège par vNIC, bâtie sur des groupes dynamiques et des tags plutôt que sur des IP — et la frontière honnête où l'identité fédérée s'arrête et où le pare-feu commence.

  2. 17 min de lecture

    VCF Identity Broker : où s'arrête vraiment le SSO de VCF 9.1

    VCF Identity Broker fédère la connexion aux consoles VCF, mais le périmètre documenté est plus étroit que la promesse. On cartographie ce qu'il couvre, ce qui reste local, et l'accès de secours.

  3. 16 min de lecture

    Fédérer l'identité VCF : Okta, Entra ID, et le chemin générique

    Quatre fournisseurs d'identité sont documentés nommément, chacun avec son chemin protocolaire. Le reste passe par le SAML 2.0 générique — un chemin qui fonctionne sans valoir déclaration de support.

Suivre le blog

Nouveaux articles, réflexions et mises à jour.