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:
- Az Azure Portal segítségével felügyelheti az egyes fürtök Flux-konfigurációit és erőforrásait.
- Az üzembe helyezés és a megfelelőség állapotának nyomon követése a Grafana-irányítópult használatával.
- Használja a Flux Control Plane és a Flux Cluster Stats irányítópultok eszköztárát az erőforrás-fogyasztás és az egyeztetések nyomon követéséhez.
- Engedélyezze a Prometheus fürtökből történő adatgyűjtést, és hozzon létre saját irányítópultot az Azure Monitor munkaterület adatainak felhasználásával.
- Hozzon létre riasztásokat az Azure Monitoron a Prometheus adatgyűjtés révén rendelkezésre álló adatok felhasználásával.
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.
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.
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
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:
- Egy vagy több Arc-kompatibilis Kubernetes-fürt vagy AKS-fürt.
- A fürtökre telepített microsoft.flux bővítmény .
- Legalább egy fluxuskonfigurációt hoztak létre a fürtökön.
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.
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.
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:
- Az Azure Portalon keresse meg a hozzáadni kívánt előfizetést.
- Válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
- Válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget.
- Válassza a Figyelési olvasó szerepkört, majd válassza a Tovább gombot.
- A Tagok lapon válassza a Felügyelt identitás, majd a Tagok kijelölése lehetőséget.
- 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.
- 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.)
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.
Töltse le a GitOps Flux – Alkalmazástelepítések irányítópultot.
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.
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.
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.
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.
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.
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.
Az irányítópult bal oldali navigációs menüjében válassza a Riasztás lehetőséget.
Válassza a Riasztási szabályok lehetőséget.
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.
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.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.
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.
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.
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.
Kövesse az Azure Monitor-munkaterület létrehozásához szükséges lépéseket.
Azure Managed Grafana-példány létrehozása az Azure Portal vagy az Azure CLI használatával.
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 .
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
Töltse le a Flux Vezérlősík és a Flux-fürtstatisztikák irányítópultját.
Csatolja a Felügyelt Prometheus-munkaterületet a Felügyelt Grafana-példányhoz. Ez a folyamat néhány percet vesz igénybe.
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.
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.
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
- Tekintse át a GitOps Flux v2-vel való használatáról szóló oktatóanyagunkat a konfiguráció és az alkalmazás üzembe helyezésének kezeléséhez.
- További információ az Azure Monitor Container Insightsról.