Status en activiteit van GitOps (Flux v2) bewaken
Als u de status en activiteit met betrekking tot GitOps wilt bijhouden met Flux v2 in uw Kubernetes-clusters met Azure Arc of AKS-clusters (Azure Kubernetes Service), hebt u verschillende opties:
- Gebruik het Azure Portal om Flux-configuraties en -resources op afzonderlijke clusters te bewaken.
- Gebruik een Grafana-dashboard om de implementatie- en compliancestatus bij te houden.
- Gebruik de dashboards Flux-besturingsvlak en Flux-cluster stats om het verbruik en afstemming van resources te bij te houden.
- Schakel Prometheus-scraping uit clusters in en maak uw eigen dashboards met behulp van de gegevens in de Azure Monitor-werkruimte.
- Waarschuwingen maken in Azure Monitor met behulp van de gegevens die beschikbaar zijn via Prometheus-scraping.
In dit onderwerp worden enkele manieren beschreven waarop u uw Flux-activiteit en -status kunt bewaken.
Flux-configuraties bewaken in Azure Portal
Nadat u Flux-configuraties in uw cluster hebt gemaakt, kunt u statusinformatie bekijken in Azure Portal door naar een cluster te navigeren en GitOps te selecteren.
Details over clustercompatibiliteit en -objecten weergeven
De nalevingsstatus geeft aan of de huidige status van het cluster overeenkomt met de gewenste status. Mogelijke waarden:
- Compatibel: de status van het cluster komt overeen met de gewenste status.
- In behandeling: Er is een bijgewerkte gewenste status gedetecteerd, maar deze status is nog niet afgestemd op het cluster.
- Niet compatibel: de huidige status komt niet overeen met de gewenste status.
Als u problemen met afstemming voor een cluster wilt oplossen, selecteert u Configuratieobjecten. Hier kunt u logboeken bekijken van elk van de configuratieobjecten die Flux maakt voor elke Flux-configuratie. Selecteer een objectnaam om de logboeken ervan weer te geven.
Als u de Kubernetes-objecten wilt weergeven die zijn gemaakt als gevolg van de toegepaste Flux-configuraties, selecteert u Workloads in de sectie Kubernetes-resources van het servicemenu van het cluster. Hier kunt u alle details bekijken van alle resources die zijn gemaakt op het cluster.
Standaard kunt u filteren op naamruimte en servicenaam. U kunt ook elk labelfilter toevoegen dat u mogelijk in uw toepassingen gebruikt om de zoekopdracht te verfijnen.
Configuratiestatus en details van Flux weergeven
Voor elke Flux-configuratie geeft de kolom Status aan of het Flux-configuratieobject is gemaakt op het cluster.
Selecteer een Flux-configuratie om de overzichtspagina te bekijken, inclusief de volgende informatie:
- Id van brondoorvoering voor de laatste synchronisatie
- Tijdstempel van de meest recente bronupdate
- Tijdstempel van statusupdate (die aangeeft wanneer de meest recente statistieken zijn verkregen)
- URL en vertakking van opslagplaats
- Koppelingen om verschillende kustomisaties weer te geven
Dashboards gebruiken om de GitOps-status en -activiteit te bewaken
We bieden dashboards waarmee u de status, naleving, resourceverbruik en afstemmingsactiviteit voor GitOps kunt bewaken met Flux v2. Deze JSON-dashboards kunnen worden geïmporteerd in Grafana, zodat u uw gegevens in realtime kunt bekijken en analyseren. U kunt ook waarschuwingen voor deze informatie instellen.
Als u deze dashboards wilt importeren en gebruiken, hebt u het volgende nodig:
- Een of meer bestaande Kubernetes-clusters met Arc of AKS-clusters.
- De extensie microsoft.flux die op de clusters is geïnstalleerd.
- Ten minste één Flux-configuratie die op de clusters is gemaakt.
Implementatie- en nalevingsstatus bewaken
Volg deze stappen om dashboards te importeren waarmee u de implementatie en status van flux-extensies in clusters en de nalevingsstatus van de Flux-configuratie op deze clusters kunt bewaken.
Notitie
In deze stappen wordt het proces beschreven voor het importeren van het dashboard in Azure Managed Grafana. U kunt dit dashboard ook importeren in een Grafana-exemplaar. Met deze optie moet een service-principal worden gebruikt; beheerde identiteit wordt niet ondersteund voor gegevensverbindingen buiten Azure Managed Grafana.
Maak een Azure Managed Grafana-exemplaar met behulp van Azure Portal of Azure CLI. Zorg ervoor dat u toegang hebt tot Grafana door het eindpunt te selecteren op de pagina Overzicht. U hebt ten minste machtigingen op grafana-editorniveau nodig om dashboards weer te geven en te bewerken. U kunt uw toegang controleren door naar Toegangsbeheer (IAM) te gaan op het Grafana-exemplaar.
Als u een beheerde identiteit gebruikt voor het Azure Managed Grafana-exemplaar, volgt u deze stappen om de rol Bewakingslezer toe te wijzen aan het abonnement waarin u uw Azure Managed Grafana-exemplaar hebt gemaakt:
- Navigeer in Azure Portal naar het abonnement dat u wilt toevoegen.
- Klik op Toegangsbeheer (IAM) .
- Selecteer Roltoewijzing toevoegen.
- Selecteer de rol Bewakingslezer en selecteer vervolgens Volgende.
- Selecteer beheerde identiteit op het tabblad Leden en kies Leden selecteren.
- Selecteer in de lijst met beheerde identiteiten het abonnement en selecteer vervolgens Azure Managed Grafana en de naam van uw Azure Managed Grafana-exemplaar.
- Selecteer Controleren + Toewijzen.
Als u een service-principal gebruikt, verleent u de rol Bewakingslezer aan de service-principal die u gaat gebruiken voor uw gegevensbronverbinding. Volg dezelfde stappen, maar selecteer Gebruiker, groep of service-principal op het tabblad Leden en selecteer vervolgens uw service-principal. (Als u azure Managed Grafana niet gebruikt, moet u een service-principal gebruiken voor toegang tot gegevensverbindingen.)
Maak de Azure Monitor-gegevensbronverbinding in uw Azure Managed Grafana-exemplaar. Met deze verbinding heeft het dashboard toegang tot Azure Resource Graph-gegevens.
Download het GitOps Flux - Application Deployments-dashboard.
Volg de stappen om het JSON-dashboard te importeren in Grafana.
Nadat u het dashboard hebt geïmporteerd, wordt er informatie weergegeven uit de clusters die u bewaakt, met verschillende deelvensters met details. Voor meer informatie over een item selecteert u de koppeling om naar Azure Portal te gaan, waar u informatie kunt vinden over configuraties, fouten en logboeken.
De tabel Implementatiestatus van Flux-extensie bevat alle clusters waarin de Flux-extensie wordt geïmplementeerd, samen met de huidige implementatiestatus.
De tabel Nalevingsstatus van Flux-configuratie bevat alle Flux-configuraties die zijn gemaakt op de clusters, samen met hun nalevingsstatus. Als u status- en foutlogboeken wilt zien voor configuratieobjecten zoals Helm-releases en kustomisaties, selecteert u de koppeling Niet-compatibel in de kolom ComplianceState .
In het diagram Aantal Flux-uitbreidingsimplementaties per status ziet u het aantal clusters op basis van de inrichtingsstatus.
In het diagram Aantal Flux-configuraties per nalevingsstatus ziet u het aantal Flux-configuraties op basis van hun nalevingsstatus met betrekking tot de bronopslagplaats.
Dashboardgegevens filteren om toepassingsimplementaties bij te houden
U kunt gegevens filteren in het GitOps Flux - Application Deployments-dashboard om de weergegeven informatie te wijzigen. U kunt bijvoorbeeld alleen gegevens weergeven voor bepaalde abonnementen of resourcegroepen, of gegevens beperken tot een bepaald cluster. Hiervoor selecteert u de filteroptie in de vervolgkeuzelijsten op het hoogste niveau of in een kolomkop in de tabellen.
In de tabel Nalevingsstatus van Flux-configuratie kunt u bijvoorbeeld een specifieke doorvoering selecteren in de kolom SourceLastSyncCommit . Hierdoor kunt u de status van een configuratie-implementatie bijhouden voor alle clusters die worden beïnvloed door die doorvoering.
Waarschuwingen maken voor extensie- en configuratiefouten
Nadat u het dashboard hebt geïmporteerd zoals beschreven in de vorige sectie, kunt u waarschuwingen instellen. Deze waarschuwingen melden u wanneer Flux-extensies of Flux-configuraties fouten ondervinden.
Volg deze stappen om een waarschuwing te maken. Voorbeeldquery's worden gegeven voor het detecteren van extensie-inrichtings- of extensie-upgradefouten, of voor het detecteren van nalevingsstatusfouten.
Selecteer waarschuwingen in het linkernavigatiemenu van het dashboard.
Selecteer Waarschuwingsregels.
Selecteer + Waarschuwingsregel maken. De pagina nieuwe waarschuwingsregel wordt geopend, waarbij de optie voor beheerde grafana-waarschuwingen standaard is geselecteerd.
Voeg in regelnaam een beschrijvende naam toe. Deze naam wordt weergegeven in de lijst met waarschuwingsregels en wordt gebruikt als het
alertname
label voor elk waarschuwingsexemplaren dat op basis van deze regel is gemaakt.Onder Een query en waarschuwingsvoorwaarde instellen:
Een gegevensbron selecteren. Dezelfde gegevensbron die voor het dashboard wordt gebruikt, kan hier worden gebruikt.
Selecteer Azure Resource Graph voor Service.
Selecteer de abonnementen in de vervolgkeuzelijst.
Voer de query in die u wilt gebruiken. Voor het inrichten van extensies of upgradefouten kunt u bijvoorbeeld deze query invoeren:
kubernetesconfigurationresources | where type == "microsoft.kubernetesconfiguration/extensions" | extend provisioningState = tostring(properties.ProvisioningState) | where provisioningState == "Failed" | summarize count() by provisioningState
Of voor mislukte nalevingsstatussen kunt u deze query invoeren:
kubernetesconfigurationresources | where type == "microsoft.kubernetesconfiguration/fluxconfigurations" | extend complianceState=tostring(properties.complianceState) | where complianceState == "Non-Compliant" | summarize count() by complianceState
Voor het vak Drempelwaarde selecteert u A voor invoertype en stelt u de drempelwaarde in op 0 om waarschuwingen te ontvangen, zelfs als slechts één extensie op het cluster mislukt. Markeer deze als waarschuwingsvoorwaarde.
Geef het evaluatieinterval voor waarschuwingen op:
- Selecteer voor Voorwaarde de query of expressie om de waarschuwingsregel te activeren.
- Voer voor Elke evaluatie de evaluatiefrequentie in als een veelvoud van 10 seconden.
- Geef voor Evalueren op hoe lang de voorwaarde waar moet zijn voordat de waarschuwing wordt gemaakt.
- Geef in Configure no data and error handling aan wat er moet gebeuren wanneer de waarschuwingsregel geen gegevens retourneert of een fout retourneert.
- Als u de resultaten van het uitvoeren van de query wilt controleren, selecteert u Voorbeeld.
Voeg de opslaglocatie, regelgroep en eventuele andere metagegevens toe die u aan de regel wilt koppelen.
- Selecteer voor Map de map waarin de regel moet worden opgeslagen.
- Geef voor Groep een vooraf gedefinieerde groep op.
- Voeg desgewenst een beschrijving en samenvatting toe om waarschuwingsberichten aan te passen.
- Voeg indien nodig runbook-URL, deelvenster, dashboard en waarschuwings-id's toe.
Voeg desgewenst aangepaste labels toe. Selecteer vervolgens Opslaan.
U kunt ook beleidsregels voor contactpunten en meldingen configureren voor uw waarschuwingen.
Resourceverbruik en afstemmingen bewaken
Volg deze stappen om dashboards te importeren waarmee u het verbruik van Flux-resources, afstemmingen, API-aanvragen en de afstemmingsstatus kunt bewaken.
Volg de stappen om een Azure Monitor-werkruimte te maken.
Maak een Azure Managed Grafana-exemplaar met behulp van Azure Portal of Azure CLI.
Schakel prometheus-verzameling metrische gegevens in op de AKS-clusters en/of Kubernetes-clusters met Arc die u wilt bewaken.
Configureer de Azure Monitor-agent om de metrische gegevens van Azure Managed Flux te scrapen door een configmap te maken:
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
Download de dashboards Flux Control Plane en Flux Cluster Stats .
Koppel de beheerde Prometheus-werkruimte aan het beheerde Grafana-exemplaar. Dit proces duurt enkele minuten.
Volg de stappen om deze JSON-dashboards te importeren in Grafana.
Nadat u de dashboards hebt geïmporteerd, worden gegevens weergegeven uit de clusters die u bewaakt. Als u alleen informatie voor een bepaald cluster of naamruimte wilt weergeven, gebruikt u de filters boven aan elk dashboard.
Het dashboard Flux Control Plane toont details over het verbruik van statusresources, afstemmingen op clusterniveau en Kubernetes-API-aanvragen.
Het dashboard Flux Cluster Stats toont details over het aantal afstemmingsparameters, samen met de status en uitvoeringsduur van elke afstemmingsroutine.
Waarschuwingen maken voor problemen met resourceverbruik en afstemming
Nadat u het dashboard hebt geïmporteerd zoals beschreven in de vorige sectie, kunt u waarschuwingen instellen. Met deze waarschuwingen wordt u op de hoogte gesteld van problemen met resourceverbruik en afstemming die mogelijk aandacht vereisen.
Als u deze waarschuwingen wilt inschakelen, implementeert u een Bicep-sjabloon die vergelijkbaar is met de sjabloon die hier wordt weergegeven. De waarschuwingsregels in deze sjabloon zijn voorbeelden die indien nodig kunnen worden gewijzigd.
Nadat u de Bicep-sjabloon hebt gedownload en uw wijzigingen hebt aangebracht, volgt u deze stappen om de sjabloon te implementeren.
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
}
]
}
]
}
}
Volgende stappen
- Bekijk onze zelfstudie over het gebruik van GitOps met Flux v2 voor het beheren van configuratie- en toepassingsimplementatie.
- Meer informatie over Azure Monitor Container Insights.