Megosztás a következőn keresztül:


A GitOps (Flux v2) állapotának és tevékenységének monitorozása

Az Azure Arc-kompatibilis Kubernetes-fürtökben vagy az Azure Kubernetes Service (AKS)-fürtökben a Flux v2-vel rendelkező GitOps állapotának és tevékenységének nyomon követéséhez több lehetőség áll rendelkezésre:

Ez a témakör ismerteti a Flux-aktivitás és -állapot nyomon követésének néhány módját.

Flux-konfigurációk monitorozása az Azure Portalon

Miután fluxuskonfigurációkat hoz létre a fürtön, megtekintheti az állapotinformációkat az Azure Portalon, ha egy fürtre navigál, és kiválasztja a GitOpst.

A fürtmegfelelés és az objektumok részleteinek megtekintése

A megfelelőségi állapot megmutatja, hogy a fürt aktuális állapota megfelel-e a kívánt állapotnak. Lehetséges értékek:

  • Megfelelő: A fürt állapota megegyezik a kívánt állapotmal.
  • Függőben: A rendszer frissített kívánt állapotot észlelt, de az állapot még nincs egyeztetve a fürtön.
  • Nem megfelelő: Az aktuális állapot nem felel meg a kívánt állapotnak.

Képernyőkép a fürtmegfelelésről és más értékekről az Azure Portalon.

A fürt egyeztetési problémáinak hibakereséséhez válassza a Konfigurációs objektumok lehetőséget. Itt megtekintheti az egyes Flux-konfigurációkhoz létrehozott konfigurációs objektumok naplóit. Jelöljön ki egy objektumnevet a naplóinak megtekintéséhez.

Képernyőkép egy konfigurációs objektum részletes feltételeiről.

A Flux-konfigurációk alkalmazásával létrehozott Kubernetes-objektumok megtekintéséhez válassza a fürt szolgáltatásmenüjének Kubernetes-erőforrások szakaszában található Számítási feladatok lehetőséget. Itt megtekintheti a fürtön létrehozott erőforrások összes részletét.

Alapértelmezés szerint névtér és szolgáltatásnév alapján szűrhet. Az alkalmazásokban esetleg használt címkeszűrők is hozzáadhatók a keresés szűkítéséhez.

A Flux konfigurációs állapotának és részleteinek megtekintése

Minden Flux-konfiguráció esetében az Állapot oszlop jelzi, hogy a Flux konfigurációs objektum sikeresen létrejött-e a fürtön.

Válassza ki bármelyik Flux-konfigurációt az Áttekintés lap megjelenítéséhez, beleértve a következő információkat:

  • Forrás véglegesítési azonosítója az utolsó szinkronizáláshoz
  • A legújabb forrásfrissítés időbélyege
  • Állapotfrissítés időbélyege (a legújabb statisztikák beszerzésének idejét jelzi)
  • Adattár URL-címe és ága
  • Hivatkozások a különböző kustomizációk megtekintéséhez

Képernyőkép egy Flux-konfiguráció áttekintési oldaláról az Azure Portalon.

Irányítópultok használata a GitOps állapotának és tevékenységének figyeléséhez

Irányítópultokat biztosítunk a GitOps állapotának, megfelelőségének, erőforrás-felhasználásának és egyeztetési tevékenységének figyeléséhez a Flux v2-vel. Ezek a JSON-irányítópultok importálhatók a Grafana szolgáltatásba, így valós időben tekintheti meg és elemezheti az adatokat. Riasztásokat is beállíthat ezekhez az információkhoz.

Az irányítópultok importálásához és használatához a következőkre van szükség:

Az üzembe helyezés és a megfelelőség állapotának figyelése

Ezeket a lépéseket követve importálhat olyan irányítópultokat, amelyek lehetővé teszik a Flux-bővítmény üzembe helyezésének és állapotának figyelését a fürtök között, valamint a Flux-konfiguráció megfelelőségi állapotát ezeken a fürtökön.

Feljegyzés

Ezek a lépések ismertetik az irányítópult Azure Managed Grafana-ba való importálásának folyamatát. Ezt az irányítópultot bármely Grafana-példányba importálhatja. Ezzel a beállítással szolgáltatásnevet kell használni; A felügyelt identitás nem támogatott az Azure Managed Grafana-on kívüli adatkapcsolatok esetében.

  1. Azure Managed Grafana-példány létrehozása az Azure Portal vagy az Azure CLI használatával. Az Áttekintés lapon válassza ki a végpontot, és győződjön meg arról, hogy hozzáfér a Grafana szolgáltatáshoz. Az irányítópultok megtekintéséhez és szerkesztéséhez legalább Grafana Szerkesztő szintű engedélyekre van szüksége. A hozzáférés ellenőrzéséhez lépjen a Hozzáférés-vezérlés (IAM) elemre a Grafana-példányon.

  2. Ha felügyelt identitást használ az Azure Managed Grafana-példányhoz, az alábbi lépéseket követve rendelje hozzá a Figyelési olvasó szerepkört ahhoz az előfizetéshez, amelyben létrehozta az Azure Managed Grafana-példányt:

    1. Az Azure Portalon keresse meg a hozzáadni kívánt előfizetést.
    2. Válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
    3. Válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget.
    4. Válassza a Figyelési olvasó szerepkört, majd válassza a Tovább gombot.
    5. A Tagok lapon válassza a Felügyelt identitás, majd a Tagok kijelölése lehetőséget.
    6. A felügyelt identitások listájában válassza ki az előfizetést, majd válassza az Azure Managed Grafana elemet és az Azure Managed Grafana-példány nevét.
    7. Válassza az Áttekintés + hozzárendelés fület.

    Ha szolgáltatásnevet használ, adja meg a Figyelési olvasó szerepkört az adatforrás-kapcsolathoz használni kívánt szolgáltatásnévnek. Kövesse ezeket a lépéseket, de válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget a Tagok lapon, majd válassza ki a szolgáltatásnevet. (Ha nem Azure Managed Grafana-t használ, az adatkapcsolat-hozzáféréshez szolgáltatásnevet kell használnia.)

  3. Hozza létre az Azure Monitor adatforrás-kapcsolatot az Azure Managed Grafana-példányban. Ezzel a kapcsolattal az irányítópult hozzáférhet az Azure Resource Graph-adatokhoz.

  4. Töltse le a GitOps Flux – Alkalmazástelepítések irányítópultot.

  5. A JSON-irányítópult Grafana-ba való importálásához kövesse az alábbi lépéseket.

Az irányítópult importálása után a figyelt fürtökről jelenít meg információkat, és több panel is tartalmaz részleteket. Az elemekkel kapcsolatos további részletekért kattintson az Azure Portalra mutató hivatkozásra, ahol a konfigurációkkal, a hibákkal és a naplókkal kapcsolatos információk találhatók.

Képernyőkép a Flux-alkalmazástelepítések irányítópultjáról.

A Flux-bővítmény üzembe helyezési állapota tábla felsorolja az összes olyan fürtöt, ahol a Flux-bővítmény telepítve van, valamint az aktuális üzembe helyezési állapotot.

Képernyőkép a Flux Extension Deployments Status tábláról az Alkalmazástelepítések irányítópulton.

A Flux-konfiguráció megfelelőségi állapota tábla felsorolja a fürtökön létrehozott összes Flux-konfigurációt, valamint azok megfelelőségi állapotát. Az olyan konfigurációs objektumok állapot- és hibanaplóinak megtekintéséhez, mint a Helm-kiadások és a kustomizációk, válassza a Nem megfelelő hivatkozást a ComplianceState oszlopból.

Képernyőkép az Alkalmazástelepítések irányítópult Flux-konfigurációs megfelelőségi állapot táblájáról.

A Flux-bővítménytelepítések száma állapotdiagramon a fürtök számát jeleníti meg a kiépítési állapotuk alapján.

Képernyőkép a Flux Extension Deployments by Status pie diagramról az Alkalmazástelepítések irányítópulton.

A Flux-konfigurációk száma megfelelőségi állapot szerint diagram a Flux-konfigurációk számát mutatja a forrásadattárra vonatkozó megfelelőségi állapotuk alapján.

Képernyőkép a Flux Configuration by Compliance Status diagramról az Alkalmazástelepítések irányítópultján.

Irányítópult-adatok szűrése az alkalmazástelepítések nyomon követéséhez

A GitOps Flux – Alkalmazástelepítések irányítópulton szűrheti az adatokat a megjelenített információk módosításához. Megjelenítheti például bizonyos előfizetések vagy erőforráscsoportok adatait, vagy korlátozhatja az adatokat egy adott fürtre. Ehhez válassza ki a szűrési lehetőséget a felső szintű legördülő listákból vagy a táblák bármelyik oszlopfejlécéből.

A Flux Configuration Compliance Status táblában például kiválaszthat egy adott véglegesítést a SourceLastSyncCommit oszlopból. Ezzel nyomon követheti a konfigurációs üzembe helyezés állapotát a véglegesítés által érintett összes fürtre.

Riasztások létrehozása bővítmény- és konfigurációs hibák esetén

Miután importálta az irányítópultot az előző szakaszban leírtak szerint, riasztásokat állíthat be. Ezek a riasztások értesítik, ha a Flux-bővítmények vagy a Flux-konfigurációk hibákat tapasztalnak.

Kövesse az alábbi lépéseket egy riasztás létrehozásához. A rendszer például lekérdezéseket biztosít a bővítmények kiépítésének vagy frissítési hibáinak észleléséhez, illetve a megfelelőségi állapot hibáinak észleléséhez.

  1. Az irányítópult bal oldali navigációs menüjében válassza a Riasztás lehetőséget.

  2. Válassza a Riasztási szabályok lehetőséget.

  3. Válassza a + Riasztási szabály létrehozása lehetőséget. Megnyílik az új riasztási szabálylap, amelyen alapértelmezés szerint a Grafana által felügyelt riasztások lehetőség van kiválasztva.

  4. A Szabálynévben adjon hozzá egy leíró nevet. Ez a név megjelenik a riasztási szabályok listájában, és a szabályból létrehozott összes riasztási példány címkéjeként alertname használatos.

  5. A Lekérdezési és riasztási feltétel beállítása csoportban:

    • Adatforrás kijelölése. Az irányítópulthoz használt adatforrás itt is használható.

    • A Szolgáltatás esetében válassza az Azure Resource Graphot.

    • Válassza ki az előfizetéseket a legördülő listából.

    • Adja meg a használni kívánt lekérdezést. Például a bővítmények kiépítésével vagy frissítésével kapcsolatos hibák esetén a következő lekérdezést adhatja meg:

      kubernetesconfigurationresources
      | where type == "microsoft.kubernetesconfiguration/extensions"
      | extend provisioningState = tostring(properties.ProvisioningState)
      | where provisioningState == "Failed"
      | summarize count() by provisioningState
      

      A megfelelőségi állapot hibái esetén a következő lekérdezést adhatja meg:

      kubernetesconfigurationresources
      | where type == "microsoft.kubernetesconfiguration/fluxconfigurations"
      | extend complianceState=tostring(properties.complianceState)
      | where complianceState == "Non-Compliant"
      | summarize count() by complianceState
      
    • A Küszöbérték mezőben válassza az A értéket a bemeneti típushoz, és állítsa a küszöbértéket 0 értékre a riasztások fogadásához, még akkor is, ha csak egy bővítmény meghiúsul a fürtön. Jelölje meg ezt riasztási feltételként.

    Képernyőkép a riasztás létrehozási folyamatról.

  6. Adja meg a riasztások kiértékelési időközét:

    • Feltétel esetén válassza ki a lekérdezést vagy kifejezést a riasztási szabály aktiválásához.
    • Minden kiértékeléshez adja meg a kiértékelési gyakoriságot 10 másodperc többszöröseként.
    • A kiértékeléshez adja meg, hogy mennyi ideig kell teljesülnie a feltételnek a riasztás létrehozása előtt.
    • A Nincs adat- és hibakezelés konfigurálása területen jelezze, hogy mi történjen, ha a riasztási szabály nem ad vissza adatokat, vagy hibát ad vissza.
    • A lekérdezés futtatásának eredményeinek ellenőrzéséhez válassza az Előnézet lehetőséget.
  7. Adja hozzá a tárhelyet, a szabálycsoportot és a szabályhoz társítani kívánt egyéb metaadatokat.

    • Mappa esetén válassza ki azt a mappát, amelyben a szabályt tárolni kell.
    • Csoport esetén adjon meg egy előre definiált csoportot.
    • Ha szükséges, adjon hozzá egy leírást és összegzést a riasztási üzenetek testreszabásához.
    • Szükség szerint adjon hozzá Runbook URL-címet, panelt, irányítópultot és riasztásazonosítókat.
  8. Ha szükséges, adjon hozzá egyéni címkéket. Ezután válassza a Mentés lehetőséget.

A riasztásokhoz névjegypontokat és értesítési szabályzatokat is konfigurálhat.

Erőforrás-felhasználás és -egyeztetések monitorozása

Ezeket a lépéseket követve importálhat olyan irányítópultokat, amelyek lehetővé teszik a Flux-erőforrás-felhasználás, az egyeztetések, az API-kérések és a egyeztető állapot figyelését.

  1. Kövesse az Azure Monitor-munkaterület létrehozásához szükséges lépéseket.

  2. Azure Managed Grafana-példány létrehozása az Azure Portal vagy az Azure CLI használatával.

  3. Engedélyezze a Prometheus-metrikák gyűjteményét a figyelni kívánt AKS-fürtökön és/vagy Arc-kompatibilis Kubernetes-fürtökön .

  4. Konfigurálja az Azure Monitor Agentet az Azure Managed Flux-metrikák lekaparásához egy konfigurációtérkép létrehozásával:

    kind: ConfigMap
    apiVersion: v1
    data:
      schema-version:
          #string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent.
        v1
      config-version:
        #string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated)
        ver1
      default-scrape-settings-enabled: |-
        kubelet = true
        coredns = false
        cadvisor = true
        kubeproxy = false
        apiserver = false
        kubestate = true
        nodeexporter = true
        windowsexporter = false
        windowskubeproxy = false
        kappiebasic = true
        prometheuscollectorhealth = false
      # Regex for which namespaces to scrape through pod annotation based scraping.
      # This is none by default. Use '.*' to scrape all namespaces of annotated pods.
      pod-annotation-based-scraping: |-
        podannotationnamespaceregex = "flux-system"
      default-targets-scrape-interval-settings: |-
        kubelet = "30s"
        coredns = "30s"
        cadvisor = "30s"
        kubeproxy = "30s"
        apiserver = "30s"
        kubestate = "30s"
        nodeexporter = "30s"
        windowsexporter = "30s"
        windowskubeproxy = "30s"
        kappiebasic = "30s"
        prometheuscollectorhealth = "30s"
        podannotations = "30s"
    metadata:
      name: ama-metrics-settings-configmap
      namespace: kube-system
    
  5. Töltse le a Flux Vezérlősík és a Flux-fürtstatisztikák irányítópultját.

  6. Csatolja a Felügyelt Prometheus-munkaterületet a Felügyelt Grafana-példányhoz. Ez a folyamat néhány percet vesz igénybe.

  7. Az alábbi lépéseket követve importálhatja ezeket a JSON-irányítópultokat a Grafanába.

Az irányítópultok importálása után a figyelt fürtökről jelennek meg az adatok. Ha csak egy adott fürt vagy névtér adatait szeretné megjeleníteni, használja az egyes irányítópultok tetején található szűrőket.

A Flux Vezérlősík irányítópultja az állapoterőforrás-felhasználás, a fürtszintű egyeztetések és a Kubernetes API-kérések részleteit mutatja be.

Képernyőkép a Flux vezérlősík irányítópultjáról.

A Flux-fürtstatisztikák irányítópultja az egyeztetők számával, valamint az egyes egyeztetők állapotával és végrehajtási időtartamával kapcsolatos adatokat jeleníti meg.

Képernyőkép a Flux-fürtstatisztikák irányítópultjáról.

Riasztások létrehozása erőforrás-használattal és egyeztetési problémákkal kapcsolatban

Miután importálta az irányítópultot az előző szakaszban leírtak szerint, riasztásokat állíthat be. Ezek a riasztások értesítést küldenek az erőforrás-használattal és az egyeztetési problémákkal kapcsolatban, amelyek figyelmet igényelhetnek.

A riasztások engedélyezéséhez az itt láthatóhoz hasonló Bicep-sablont kell üzembe helyeznie. A sablon riasztási szabályai szükség szerint módosítható minták.

Miután letöltötte a Bicep-sablont, és végrehajtotta a módosításokat, kövesse az alábbi lépéseket a sablon üzembe helyezéséhez.

param azureMonitorWorkspaceName string
param alertReceiverEmailAddress string

param kustomizationLookbackPeriodInMinutes int = 5
param helmReleaseLookbackPeriodInMinutes int = 5
param gitRepositoryLookbackPeriodInMinutes int = 5
param bucketLookbackPeriodInMinutes int = 5
param helmRepoLookbackPeriodInMinutes int = 5
param timeToResolveAlerts string = 'PT10M'
param location string = resourceGroup().location

resource azureMonitorWorkspace 'Microsoft.Monitor/accounts@2023-04-03' = {
  name: azureMonitorWorkspaceName
  location: location
}

resource fluxRuleActionGroup 'Microsoft.Insights/actionGroups@2023-01-01' = {
  name: 'fluxRuleActionGroup'
  location: 'global'
  properties: {
    enabled: true
    groupShortName: 'fluxGroup'
    emailReceivers: [
      {
        name: 'emailReceiver'
        emailAddress: alertReceiverEmailAddress
      }
    ]
  }
}

resource fluxRuleGroup 'Microsoft.AlertsManagement/prometheusRuleGroups@2023-03-01' = {
  name: 'fluxRuleGroup'
  location: location
  properties: {
    description: 'Flux Prometheus Rule Group'
    scopes: [
      azureMonitorWorkspace.id
    ]
    enabled: true
    interval: 'PT1M'
    rules: [
      {
        alert: 'KustomizationNotReady'
        expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="Kustomization"}) > 0'
        for: 'PT${kustomizationLookbackPeriodInMinutes}M'
        labels: {
          description: 'Kustomization reconciliation failing for last ${kustomizationLookbackPeriodInMinutes} minutes.'
        }
        annotations: {
          description: 'Kustomization reconciliation failing for last ${kustomizationLookbackPeriodInMinutes} minutes.'
        }
        enabled: true
        severity: 3
        resolveConfiguration: {
          autoResolved: true
          timeToResolve: timeToResolveAlerts
        }
        actions: [
          {
            actionGroupId: fluxRuleActionGroup.id
          }
        ]
      }
      {
        alert: 'HelmReleaseNotReady'
        expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="HelmRelease"}) > 0'
        for: 'PT${helmReleaseLookbackPeriodInMinutes}M'
        labels: {
          description: 'HelmRelease reconciliation failing for last ${helmReleaseLookbackPeriodInMinutes} minutes.'
        }
        annotations: {
          description: 'HelmRelease reconciliation failing for last ${helmReleaseLookbackPeriodInMinutes} minutes.'
        }
        enabled: true
        severity: 3
        resolveConfiguration: {
          autoResolved: true
          timeToResolve: timeToResolveAlerts
        }
        actions: [
          {
            actionGroupId: fluxRuleActionGroup.id
          }
        ]
      }
      {
        alert: 'GitRepositoryNotReady'
        expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="GitRepository"}) > 0'
        for: 'PT${gitRepositoryLookbackPeriodInMinutes}M'
        labels: {
          description: 'GitRepository reconciliation failing for last ${gitRepositoryLookbackPeriodInMinutes} minutes.'
        }
        annotations: {
          description: 'GitRepository reconciliation failing for last ${gitRepositoryLookbackPeriodInMinutes} minutes.'
        }
        enabled: true
        severity: 3
        resolveConfiguration: {
          autoResolved: true
          timeToResolve: timeToResolveAlerts
        }
        actions: [
          {
            actionGroupId: fluxRuleActionGroup.id
          }
        ]
      }
      {
        alert: 'BucketNotReady'
        expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="Bucket"}) > 0'
        for: 'PT${bucketLookbackPeriodInMinutes}M'
        labels: {
          description: 'Bucket reconciliation failing for last ${bucketLookbackPeriodInMinutes} minutes.'
        }
        annotations: {
          description: 'Bucket reconciliation failing for last ${bucketLookbackPeriodInMinutes} minutes.'
        }
        enabled: true
        severity: 3
        resolveConfiguration: {
          autoResolved: true
          timeToResolve: timeToResolveAlerts
        }
        actions: [
          {
            actionGroupId: fluxRuleActionGroup.id
          }
        ]
      }
      {
        alert: 'HelmRepositoryNotReady'
        expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="HelmRepository"}) > 0'
        for: 'PT${helmRepoLookbackPeriodInMinutes}M'
        labels: {
          description: 'HelmRepository reconciliation failing for last ${helmRepoLookbackPeriodInMinutes} minutes.'
        }
        annotations: {
          description: 'HelmRepository reconciliation failing for last ${helmRepoLookbackPeriodInMinutes} minutes.'
        }
        enabled: true
        severity: 3
        resolveConfiguration: {
          autoResolved: true
          timeToResolve: timeToResolveAlerts
        }
        actions: [
          {
            actionGroupId: fluxRuleActionGroup.id
          }
        ]
      }
    ]
  }
}

Következő lépések