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 basierend auf diesen 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 prüfen, um festzustellen, warum einige Container fehlen. Beim Festlegen Ihrer 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 Anzahl der Container eines Root-Abgleicher-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 Anzahl der Container eines Namespace-Reconciler-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
    
  • Wenn Sie eine Benachrichtigung erhalten möchten, wenn die Anzahl der Container eines Reconciler-Manager-Pods unter der erwarteten Anzahl liegt, erstellen Sie die folgende Benachrichtigungsregel:

    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 Schwellenwert erreicht, ist ein Fehler aufgetreten. Beispiel: Ein Root-Abgleicher-Container, der nicht über genügend Arbeitsspeicherressourcen verfügt, wird mit dem Fehler OOMKilled neu gestartet, bis er genügend Arbeitsspeicher hat.

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 persistente Fehler aufgetreten

Wenn Config Sync dauerhafte Fehler feststellt, ist ein Fehler aufgetreten. Wenn Config Sync Fehler feststellt, wird versucht, Konfigurationen von der Quelle mit einem Cluster zu synchronisieren, bis dies erfolgreich ist. Einige Fehler können jedoch nicht durch einen Wiederholungsversuch behoben werden und erfordern ein Eingreifen.

Beispiel für eine Prometheus-Benachrichtigungsregel

Wenn Sie eine Benachrichtigung erhalten möchten, wenn ein Root- oder Namespace-Abgleicher zwei Stunden lang auf persistente Fehler stößt, erstellen Sie die folgende Benachrichtigungsregel:

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 Sie nicht beheben 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 komplex sind (z. B. wenn Ihre Quelle eine hohe Anzahl von Config Connector-Ressourcen enthält), kann es über eine Stunde dauern, bis diese Konfigurationen mit dem Cluster synchronisiert sind. Wenn jedoch seit der letzten erfolgreichen Synchronisierung zwei Stunden vergangen sind, könnte etwas falsch sein.

Sie können prüfen, ob der aktuelle Synchronisierungsversuch noch läuft, indem Sie den RootSync- oder RepoSync-Status prüfen. Wenn der aktuelle Synchronisierungsversuch noch läuft, können Sie Ihre "Source of Truth" aufteilen, damit jede "Source of Truth" schneller synchronisiert werden kann, oder den zweistündigen Grenzwert für Benachrichtigung erhöhen. Wenn kein Synchronisierungsversuch aktiv ist, ist der Config Sync-Reconciler fehlerhaft, da er den Vorgang wiederholen soll, bis die Konfigurationen von der Quelle mit dem Cluster erfolgreich synchronisiert wurden. Eskalieren Sie 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 Root- oder Namespace-Abgleichers vor mehr als zwei Stunden stattfand, 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

Leistungsabfälle bei Config Sync

Config Sync kann nach dem Upgrade Leistungsabfälle aufweisen. Die Leistungsabfälle können auf folgende Weise auftreten:

  • Eine Erhöhung des Zeitaufwands für den Abgleich eines RootSync- oder RepoSync-Objekts
  • Ein höherer Zeitaufwand für den Abgleich eines ResourceGroup-Objekts
  • Ein höherer Zeitaufwand für die Synchronisierung von Konfigurationen von der Quelle mit einem Cluster

Der Aufwand für den Abgleich eines RootSync- oder RepoSync-Objekts

Das reconciler-manager-Deployment gleicht RootSync- und RepoSync-Objekte ab. Sie können das 90. Perzentil des Zeitaufwands für den Abgleich eines RootSync- oder RepoSync-Objekts verwenden, um Leistungsregressionen 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.

Die folgenden Beispiele senden Ihnen eine Benachrichtigung, wenn das 90. Perzentil des Zeitaufwands für den Abgleich eines RootSync- oder RepoSync-Objekts in den letzten 5 Stunden 10 Minuten lang über 0,1 Sekunden liegt. 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
    

Der 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 Leistungsregressionen 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 wird eine Benachrichtigung gesendet, wenn das 90. Perzentil des Zeitaufwands für den Abgleich eines ResourceGroup-Objekts in den letzten 5 Stunden 10 Minuten lang über 5 Sekunden liegt. 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 von der Quelle mit einem Cluster

Ein Root- oder Namespace-Abgleicher synchronisiert Konfigurationen von 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 Leistungsregressionen zu erkennen.

Beispiele für Prometheus-Benachrichtigungsregeln

Dieser Abschnitt enthält Prometheus-Benachrichtigungsregeln, die Sie benachrichtigen, wenn die Root- oder Namespace-Abgleicher-Bereitstellung Leistungsregressionen aufweist.

Die folgenden Beispiele senden Ihnen eine Benachrichtigung, wenn das 90. Perzentil des Zeitaufwands für die Synchronisierung von Konfigurationen in allen Clustern in den letzten fünf Stunden über eine Stunde lang ist. Sie können Benachrichtigungsregeln erstellen, die überwacht werden. oder einen einzelnen Cluster.

  • 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