Config Sync-SLIs verwenden

Auf dieser Seite wird beschrieben, wie Sie die Service Level Indicators (SLIs) von Config Sync verwenden.

Wenn Sie Benachrichtigungen erhalten möchten, wenn Config Sync nicht wie vorgesehen funktioniert, richten Sie Prometheus-Benachrichtigungsregeln auf Basis dieser SLIs ein. Jeder SLI enthält ein Beispiel für das Erstellen einer Benachrichtigungsregel. Weitere Informationen zur Verwendung von Prometheus mit Config Sync finden Sie unter Config Sync mit Messwerten überwachen.

Config Sync-Pods mit falscher Containeranzahl

Wenn die Containeranzahl eines Config Sync-Pods niedriger als erwartet ist, wird Config Sync möglicherweise nicht ausgeführt. Sie können eine Benachrichtigung einrichten, um dieses Problem zu erkennen und den Config Sync-Pod zu untersuchen, um herauszufinden, warum einige Container fehlen. Beim Einrichten von Benachrichtigungen empfehlen wir, das Zeitintervall auf mindestens fünf Minuten festzulegen, um unnötige Benachrichtigungen zu vermeiden. Beispielsweise kann während eines Upgrades die Containeranzahl eines Pods unter das Ziel fallen.

Wenn Sie mit der erwarteten Containeranzahl nicht vertraut sind, lesen Sie die Informationen unter Config Sync-Deployments, Pods und Container.

Beispiele für Prometheus-Benachrichtigungsregeln

Dieser Abschnitt enthält Beispiele, die Sie benachrichtigen, wenn Pods mit einer falschen Containeranzahl vorhanden sind.

  • Wenn Sie eine Benachrichtigung erhalten möchten, wenn die Containeranzahl eines Root-Abgleich-Pods unter der erwarteten Anzahl liegt, erstellen Sie die folgende Benachrichtigungsregel:

    alert: RootReconcilerPodMissingContainer
    expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"root-reconciler-.*"}) < 4
    # Setting the for field to 5m to avoid unnecessary alerts.
    for: 5m
    
  • Wenn Sie eine Benachrichtigung erhalten möchten, wenn die Containeranzahl eines Namespace-Abgleich-Pods unter der erwarteten Anzahl liegt, erstellen Sie die folgende Benachrichtigungsregel:

    alert: NamespaceReconcilerPodMissingContainer
    expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"ns-reconciler-.*"}) < 4
    for: 5m
    
  • Erstellen Sie die folgende Benachrichtigungsregel, um eine Benachrichtigung zu erhalten, wenn die Containeranzahl eines Abgleichmanager-Pods unter der erwarteten Anzahl liegt:

    alert: ReconcilerManagerPodMissingContainer
    expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"reconciler-manager-.*"}) < 2
    for: 5m
    

Fehlerhafte Config Sync-Container

Wenn die Anzahl der Neustarts eines Config Sync-Containers einen bestimmten Grenzwert erreicht, liegt ein Fehler vor. Beispiel: Ein Stammabgleichscontainer, der nicht genügend Arbeitsspeicherressourcen hat, wird mit dem Fehler OOMKilled neu gestartet, bis er genügend Arbeitsspeicher erhält.

Beispiel für eine Prometheus-Benachrichtigungsregel

Wenn Sie eine Benachrichtigung erhalten möchten, wenn ein Config Sync-Container mehr als dreimal neu gestartet wurde, erstellen Sie die folgende Benachrichtigungsregel:

alert: TooManyContainerRestarts
expr: kubernetes_io:container_restart_count{namespace_name=~"config-management-system|config-management-monitoring|resource-group-system"} > 3

Bei Config Sync sind dauerhafte Fehler aufgetreten

Wenn bei Config Sync dauerhafte Fehler auftreten, liegt ein Fehler vor. Wenn bei Config Sync Fehler auftreten, wird so lange versucht, Konfigurationen aus der Quelle mit einem Cluster zu synchronisieren, bis der Vorgang erfolgreich ist. Einige Fehler können jedoch nicht durch einen neuen Versuch behoben werden und erfordern ein Eingreifen.

Beispiel für eine Prometheus-Benachrichtigungsregel

Erstellen Sie die folgende Benachrichtigungsregel, um eine Benachrichtigung zu erhalten, wenn ein Stamm- oder Namespace-Abgleicher zwei Stunden lang dauerhafte Fehler auftritt:

alert: PersistentConfigSyncErrors
expr: sum by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace, errorclass) (config_sync_reconciler_errors) > 0
for: 2h

In diesem Fall gilt Folgendes:

  • Das Label configsync_sync_kind kann die folgenden Werte haben: RootSync oder RepoSync.
  • Das Label configsync_sync_name gibt den Namen eines RootSync- oder RepoSync-Objekts an.
  • Das Label configsync_sync_namespace gibt den Namespace eines RootSync- oder RepoSync-Objekts an.
  • Das Label errorclass kann drei Werte haben: 1xxx, 2xxx und 9xxx. Jedes Label entspricht einem anderen Fehlertyp:

    • 1xxx Fehler: Konfigurationsfehler, die Sie beheben können
    • 2xxx Fehler: serverseitige Fehler, die Sie möglicherweise nicht beheben können
    • 9xxx Fehler: interne Fehler, die nicht behoben werden können

Config Sync bleibt in der Synchronisierungsphase hängen

Ein Synchronisierungsversuch in Config Sync kann nicht unterbrochen werden. Wenn die Konfigurationen in der Quelle zu groß oder zu komplex sind (wenn Ihre Quelle beispielsweise eine große Anzahl von Config Connector-Ressourcen enthält), kann es über eine Stunde dauern, bis diese Konfigurationen mit dem Cluster synchronisiert sind. Wenn jedoch zwei Stunden seit der letzten erfolgreichen Synchronisierung vergangen sind, könnte etwas nicht stimmen.

Sie können prüfen, ob der aktuelle Synchronisierungsversuch noch läuft, indem Sie den Status „RootSync“ oder „RepoSync“ prüfen. Wenn der aktuelle Synchronisierungsversuch noch läuft, können Sie die Quelle der Wahrheit aufteilen, damit alle Datenquellen schneller synchronisiert werden können, oder den Benachrichtigungsgrenzwert von zwei Stunden auf einen längeren Zeitraum erhöhen. Wenn kein Synchronisierungsversuch aktiv ist, ist der Config Sync-Abgleich fehlerhaft, da er so lange wiederholt werden muss, bis er die Konfigurationen von der Quelle mit dem Cluster synchronisiert hat. Eskaliere in diesem Fall an den Google Cloud-Support.

Beispiel für eine Prometheus-Benachrichtigungsregel

Wenn Sie benachrichtigt werden möchten, wenn die letzte erfolgreiche Synchronisierung eines Stamm- oder Namespace-Abgleichers mehr als zwei Stunden zurückliegt, erstellen Sie eine Benachrichtigungsregel:

  alert: OldLastSyncTimestamp
  # The status label indicates whether the last sync succeeded or not.
  # Possible values: success, error.
  expr: time() - topk by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace) (1, config_sync_last_sync_timestamp{status="success"}) > 7200

Leistungseinbußen bei Config Sync

Nach dem Upgrade kann es bei Config Sync zu Leistungseinbußen kommen. Leistungseinbußen können auf folgende Arten auftreten:

  • Eine Erhöhung des Zeitaufwands für den Abgleich eines RootSync- oder RepoSync-Objekts
  • Erhöhung des Zeitaufwands für den Abgleich eines ResourceGroup-Objekts
  • Ein längerer Zeitaufwand für die Synchronisierung von Konfigurationen aus der Quelle zu einem Cluster

Zeitaufwand für den Abgleich eines RootSync- oder RepoSync-Objekts

Das reconciler-manager-Deployment gleicht die RootSync- und RepoSync-Objekte ab. Sie können das 90. Perzentil des Zeitaufwands für den Abgleich eines RootSync- oder RepoSync-Objekts verwenden, um Leistungsabfälle zu erkennen.

Beispiele für Prometheus-Benachrichtigungsregeln

Dieser Abschnitt enthält Beispiele für Prometheus-Benachrichtigungsregeln, die Sie benachrichtigen, wenn das reconciler-manager-Deployment Leistungsabfälle aufweist.

In den folgenden Beispielen werden Sie benachrichtigt, wenn das 90.Perzentil des Aufwands für den Abgleich eines RootSync- oder RepoSync-Objekts in den letzten 5 Stunden für 10 Minuten mehr als 0,1 Sekunden beträgt. Sie können Benachrichtigungsregeln erstellen, die alle Cluster oder einen einzelnen Cluster überwachen.

  • Erstellen Sie die folgende Regel, um alle Cluster zu überwachen:

    alert: HighLatencyReconcileRootSyncAndRepoSyncOverall
    expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1
    for: 10m
    
  • Erstellen Sie die folgende Regel, um einen einzelnen Cluster zu überwachen:

    alert: HighLatencyReconcileRootSyncAndRepoSyncClusterLevel
    expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1
    for: 10m
    

Zeitaufwand für den Abgleich eines ResourceGroup-Objekts

Das resource-group-controller-manager-Deployment gleicht ResourceGroup-Objekte ab. Sie können das 90. Perzentil des Zeitaufwands für den Abgleich einer ResourceGroup verwenden, um Leistungsabfälle zu erkennen.

Beispiele für Prometheus-Benachrichtigungsregeln

Dieser Abschnitt enthält Prometheus-Benachrichtigungsregeln, die Sie benachrichtigen, wenn das resource-group-controller-manager-Deployment Leistungsabfälle aufweist.

In den folgenden Beispielen werden Sie benachrichtigt, wenn das 90. Perzentil des Aufwands für den Abgleich eines ResourceGroup-Objekts in den letzten 5 Stunden 10 Minuten lang mehr als 5 Sekunden beträgt. Sie können Benachrichtigungsregeln erstellen, die alle Cluster oder einen einzelnen Cluster überwachen.

  • Erstellen Sie die folgende Regel, um alle Cluster zu überwachen:

    alert: HighLatencyReconcileResourceGroupOverall
    expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5
    for: 10m
    
  • Erstellen Sie die folgende Regel, um einen einzelnen Cluster zu überwachen:

    alert: HighLatencyReconcileResourceGroupClusterLevel
    expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5
    for: 10m
    

Der Zeitaufwand für die Synchronisierung von Konfigurationen aus der Quelle mit einem Cluster

Ein Root- oder Namespace-Abgleicher synchronisiert Konfigurationen aus der „Source of Truth“ mit einem Cluster. Sie können das 90. Perzentil des Zeitaufwands für die Synchronisierung von Konfigurationen von der Quelle mit einem Cluster verwenden, um Leistungsabfälle zu erkennen.

Beispiele für Prometheus-Benachrichtigungsregeln

Dieser Abschnitt enthält Prometheus-Benachrichtigungsregeln, über die Sie informiert werden, wenn das Deployment des Root- oder Namespace-Abgleichers Leistungseinbußen aufweist.

In den folgenden Beispielen werden Sie benachrichtigt, wenn das 90. Perzentil des Zeitaufwands für die Synchronisierung von Konfigurationen in allen Clustern in den letzten fünf Stunden fünf Minuten lang mehr als eine Stunde beträgt. Sie können Benachrichtigungsregeln erstellen, die alle Cluster oder einen einzelnen Cluster überwachen.

  • Erstellen Sie die folgende Regel, um alle Cluster zu überwachen:

    alert: HighApplyDurationOverall
    expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600
    for: 5m
    
  • Erstellen Sie die folgende Regel, um einen einzelnen Cluster zu überwachen:

    alert: HighApplyDurationRootSyncRepoSyncLevel
    expr: histogram_quantile(0.9, sum by (cluster, configsync_sync_kind,configsync_sync_name, configsync_sync_namespace, le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600
    for: 5m