Verfügbarkeitsdiagnosen verwalten

Google Cloud Console verwenden

Stackdriver Monitoring kann die Verfügbarkeit Ihres Dienstes überprüfen, wenn von verschiedenen Standorten weltweit darauf zugegriffen wird. Sie können die Ergebnisse dieser Verfügbarkeitsdiagnosen in Ihren Benachrichtigungsrichtlinien verwenden oder die Ergebnisse direkt in den Monitoring-Dashboards für Verfügbarkeitsdiagnosen überprüfen.

Diese Seite enthält Anleitungen für Folgendes:

  • Neue Verfügbarkeitsdiagnose erstellen
  • Dashboard für eine Verfügbarkeitsdiagnose ansehen
  • Verfügbarkeitsdiagnose bearbeiten
  • Verfügbarkeitsdiagnose löschen

Außerdem ist Folgendes hilfreich:

  • Informationen zu Preisen und Limits für Verfügbarkeitsdiagnosen erhalten Sie unter Preise und Limits.
  • Eine Liste aller Verfügbarkeitsdiagnosen finden Sie unter Verfügbarkeitsdiagnosen überprüfen.
  • Eine Liste der IP-Adressen, die für die Verfügbarkeitsdiagnosen verwendet werden können, finden Sie unter IP-Adressen abrufen.
  • Prüfen Sie den Messwert monitoring.googleapis.com/uptime_check/check_passed, um den Status Ihrer Verfügbarkeitsdiagnosen mithilfe der API zu ermitteln. Weitere Informationen finden Sie in der Google Cloud-Messwertliste.

Hinweise

  1. Die Verwendung von Verfügbarkeitsdiagnosen hängt von den Firewalls zum Schutz des Dienstes ab.

    • Wenn die zu prüfende Ressource nicht öffentlich verfügbar ist, müssen Sie die Firewall der Ressource so konfigurieren, dass von den Servern der Verfügbarkeitsdiagnose eingehender Traffic zugelassen wird. Informationen zum Herunterladen dieser Liste mit den IP-Adressen finden Sie unter IP-Adressen abrufen.
    • Wenn die geprüfte Ressource keine externe IP-Adresse hat, kann sie von Verfügbarkeitsdiagnosen nicht erreicht werden.
  2. Bei der Verfügbarkeitsdiagnose werden keine Seitenelemente geladen oder JavaScript ausgeführt. Die Standardkonfiguration einer Verfügbarkeitsdiagnose umfasst keine Authentifizierung. Sie können die Authentifizierung mit den Erweiterten Optionen aktivieren.

    Für HTTP und HTTPS gibt die Verfügbarkeitsdiagnose den Befehl GET aus und ruft die Rohdaten ab. Wenn es sich bei der GET-Antwort um eine Weiterleitung zu einer anderen URL handelt, ruft die Diagnose die Daten dieser URL ab. Zuletzt prüft die Verfügbarkeitsdiagnose die Daten, um festzustellen, ob die Diagnose erfolgreich war oder fehlgeschlagen ist.

    Es müssen zwei Bedingungen erfüllt sein, damit sie erfolgreich ist:

    • Der HTTP-Status ist Success.
    • Es gibt für die Daten keinen erforderlichen Inhalt bzw. der erforderliche Inhalt ist vorhanden. Der erforderliche Inhalt wird unter Erweiterte Optionen angegeben.

Verfügbarkeitsdiagnose erstellen

In diesem Abschnitt wird das Erstellen und Konfigurieren von Verfügbarkeitsdiagnosen erläutert.

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Klicken Sie auf Verfügbarkeitsdiagnosen.

  3. Klicken Sie auf Verfügbarkeitsdiagnose hinzufügen.

  4. Füllen Sie im Fenster New uptime check (Neue Verfügbarkeitsdiagnose) die Felder für die Diagnose aus, wie unter Grundlegende Optionen auf dieser Seite beschrieben.

    Dialogfeld zum Erstellen einer Verfügbarkeitsdiagnose

  5. (Optional) Klicken Sie auf Show advanced options (Erweiterte Optionen einblenden). Weitere Informationen zu den erweiterten Optionen finden Sie unter Erweiterte Optionen.

  6. Klicken Sie auf Test (Testen), um die Konfiguration der Verfügbarkeitsdiagnose zu prüfen. Wenn das Ergebnis nicht Ihren Erwartungen entspricht, lesen Sie im Abschnitt Diagnose fehlgeschlagen unten nach, korrigieren Sie Ihre Konfiguration und wiederholen Sie den Bestätigungsschritt.

  7. Klicken Sie auf Save (Speichern). Wenn erforderliche Daten fehlen, schlägt das Speichern fehl und neben den Schaltflächen des Dialogs wird eine Liste der Felder angezeigt, für die Daten erforderlich sind. Nach dem Speichern der Änderungen wird das Dialogfeld Uptime check created (Verfügbarkeitsdiagnose erstellt) angezeigt.

  8. (Optional) Klicken Sie auf Create alert policy (Benachrichtigungsrichtlinie erstellen), um über einen Ausfall der Verfügbarkeit informiert zu werden. Wenn Sie jetzt keine Benachrichtigungsrichtlinie erstellen möchten, klicken Sie auf Cancel (Abbrechen). Sie können jederzeit eine Benachrichtigungsrichtlinie für die Verfügbarkeitsdiagnose erstellen. Weitere Informationen finden Sie unter Benachrichtigungen für Verfügbarkeitsdiagnosen.

    Dialogfeld

API

Rufen Sie die Methode projects.uptimeCheckConfigs.create auf. Legen Sie die Parameter der Methode so fest:

  • parent: Erforderlich. Dies muss der Name des Projekts sein, in dem die Verfügbarkeitsdiagnose erstellt werden soll. Ersetzen Sie [PROJECT_ID] durch Ihre Google Cloud-Projekt-ID. Das Format dafür ist:

    projects/[PROJECT_ID]
    
  • Der Anfragetext muss das Objekt UptimeCheckConfig für die neue Verfügbarkeitsdiagnose enthalten. Die Felder im Objekt werden auf dieser Seite in den Abschnitten Grundlegende Optionen und Erweiterte Optionen erläutert.

    Lassen Sie das Feld name des Konfigurationsobjekts leer, wie es im zurückgegebenen Konfigurationsobjekt festgelegt ist.

Die Methode create gibt das Objekt UptimeCheckConfig für die neue Konfiguration zurück.

Wenn die erstellte Verfügbarkeitsdiagnose nicht wie erwartet funktioniert, lesen Sie den Abschnitt Diagnose fehlgeschlagen auf dieser Seite.

C#

public static object CreateUptimeCheck(string projectId, string hostName,
    string displayName)
{
    // Define a new config.
    var config = new UptimeCheckConfig()
    {
        DisplayName = displayName,
        MonitoredResource = new MonitoredResource()
        {
            Type = "uptime_url",
            Labels = { { "host", hostName } }
        },
        HttpCheck = new UptimeCheckConfig.Types.HttpCheck()
        {
            Path = "/",
            Port = 80,
        },
        Timeout = TimeSpan.FromSeconds(10).ToDuration(),
        Period = TimeSpan.FromMinutes(5).ToDuration()
    };
    // Create a client.
    var client = UptimeCheckServiceClient.Create();
    string projectName = new ProjectName(projectId).ToString();
    // Create the config.
    var newConfig = client.CreateUptimeCheckConfig(projectName, config,
        CallSettings.FromCallTiming(CallTiming.FromTimeout(TimeSpan.FromMinutes(2))));
    Console.WriteLine(newConfig.Name);
    return 0;
}

Java

private static void createUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  CreateUptimeCheckConfigRequest request = CreateUptimeCheckConfigRequest
      .newBuilder()
      .setParent(ProjectName.format(projectId))
      .setUptimeCheckConfig(UptimeCheckConfig
          .newBuilder()
          .setDisplayName(displayName)
          .setMonitoredResource(MonitoredResource
              .newBuilder()
              .setType("uptime_url")
              .putLabels("host", hostName))
          .setHttpCheck(HttpCheck
              .newBuilder()
              .setPath(pathName)
              .setPort(80))
          .setTimeout(Duration.newBuilder().setSeconds(10))
          .setPeriod(Duration.newBuilder().setSeconds(300)))
      .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.createUptimeCheckConfig(request);
    System.out.println("Uptime check created: " + config.getDisplayName());
  } catch (Exception e) {
    usage("Exception creating uptime check: " + e.toString());
    throw e;
  }
}

Go


// create creates an example uptime check.
func create(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.CreateUptimeCheckConfigRequest{
		Parent: "projects/" + projectID,
		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
			DisplayName: "new uptime check",
			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
				MonitoredResource: &monitoredres.MonitoredResource{
					Type: "uptime_url",
					Labels: map[string]string{
						"host": "example.com",
					},
				},
			},
			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
					Path: "/",
					Port: 80,
				},
			},
			Timeout: &duration.Duration{Seconds: 10},
			Period:  &duration.Duration{Seconds: 300},
		},
	}
	config, err := client.CreateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully created uptime check %q\n", config.GetDisplayName())
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const hostname = 'mydomain.com';

const request = {
  // i.e. parent: 'projects/my-project-id'
  parent: client.projectPath(projectId),
  uptimeCheckConfig: {
    displayName: 'My Uptime Check',
    monitoredResource: {
      // See the Uptime Check docs for supported MonitoredResource types
      type: 'uptime_url',
      labels: {host: hostname},
    },
    httpCheck: {path: '/', port: 80},
    timeout: {seconds: 10},
    period: {seconds: 300},
  },
};

// Creates an uptime check config for a GCE instance
const [uptimeCheckConfig] = await client.createUptimeCheckConfig(request);
console.log('Uptime check created:');
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log(`Resource: %j`, uptimeCheckConfig.monitoredResource);
console.log(`Period: %j`, uptimeCheckConfig.period);
console.log(`Timeout: %j`, uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  `Check: %j`,
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
use Google\Api\MonitoredResource;

/**
 * Example:
 * ```
 * create_uptime_check($projectId, 'myproject.appspot.com', 'Test Uptime Check!');
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $hostName
 * @param string $displayName
 */
function create_uptime_check($projectId, $hostName = 'example.com', $displayName = 'New uptime check')
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $monitoredResource = new MonitoredResource();
    $monitoredResource->setType('uptime_url');
    $monitoredResource->setLabels(['host' => $hostName]);

    $uptimeCheckConfig = new UptimeCheckConfig();
    $uptimeCheckConfig->setDisplayName($displayName);
    $uptimeCheckConfig->setMonitoredResource($monitoredResource);

    $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig(
        $uptimeCheckClient->projectName($projectId),
        $uptimeCheckConfig
    );

    printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
}

Python

def create_uptime_check_config(project_name, host_name=None,
                               display_name=None):
    config = monitoring_v3.types.uptime_pb2.UptimeCheckConfig()
    config.display_name = display_name or 'New uptime check'
    config.monitored_resource.type = 'uptime_url'
    config.monitored_resource.labels.update(
        {'host': host_name or 'example.com'})
    config.http_check.path = '/'
    config.http_check.port = 80
    config.timeout.seconds = 10
    config.period.seconds = 300

    client = monitoring_v3.UptimeCheckServiceClient()
    new_config = client.create_uptime_check_config(project_name, config)
    pprint.pprint(new_config)
    return new_config

Ruby

def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  project_name = Google::Cloud::Monitoring::V3::UptimeCheckServiceClient.project_path project_id
  config = {
    display_name:       display_name.nil? ? "New uptime check" : display_name,
    monitored_resource: {
      type:   "uptime_url",
      labels: { "host" => host_name.nil? ? "example.com" : host_name }
    },
    http_check:         { path: "/", port: 80 },
    timeout:            { seconds: 10 },
    period:             { seconds: 300 }
  }
  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  new_config = client.create_uptime_check_config project_name, config
  puts new_config.name
  new_config
end

Es kann bis zu 5 Minuten dauern, bis die Ergebnisse der Verfügbarkeitsdiagnose bei Monitoring eintreffen. Bis dahin meldet das Verfügbarkeitsdiagnose-Dashboard als Status "no data available" (Keine Daten verfügbar).

Grundlegende Optionen

Geben Sie Werte für die Konfiguration der Verfügbarkeitsdiagnose an, um eine neue Verfügbarkeitsdiagnose zu erstellen. Wenn Sie die Verfügbarkeitsdiagnose in der Cloud Console erstellen, füllen Sie ein Formular aus. Bei Verwendung der API für diesen Zweck geben Sie die entsprechenden Parameter in einem UptimeCheckConfig-Objekt an.

  1. Titel: Ein Name zur Erkennung der Diagnose. Beispiel: Example.com uptime check

  2. Diagnosetyp: Wählen Sie als Protokoll HTTP, HTTPS oder TCP aus.

    Wenn Sie HTTPS auswählen, versucht der Dienst, eine Verbindung über HTTPS herzustellen, das SSL-Zertifikat wird jedoch nicht überprüft. Abgelaufene oder selbst signierte Zertifikate führen dann beispielsweise nicht dazu, dass eine Diagnose fehlschlägt.

  3. Ressourcentyp: Wählen Sie einen der folgenden Ressourcentypen aus.

    • App Engine: Google App Engine-Anwendungen (Module)
    • Elastic Load Balancer (Elastic-Load-Balancer): AWS-Load-Balancer
    • Instanz: Compute Engine- oder AWS EC2-Instanzen. In der API werden sie in gce_instance und aws_ec2_instance unterteilt.
    • URL: Eine IPv4-Adresse oder ein Hostname. Pfad und Port werden separat eingegeben.
  4. Füllen Sie die Verbindungsinformationen entsprechend dem ausgewählten Diagnose- und Ressourcentyp aus:

    • Wenn Sie für den Diagnosetyp die Option TCP auswählen, gehen Sie so vor:

      • Port: Geben Sie eine Portnummer an.
      • Übereinstimmungstyp für Antwortinhalt: Geben Sie an, wie der im Antwortinhalt eingegebene String mit den tatsächlich zurückgegebenen Daten verglichen wird. Wenn der Antwortinhalt beispielsweise abcd ist und Sie als Übereinstimmungstyp für den Inhalt Enthält auswählen, ist die Verfügbarkeitsdiagnose erfolgreich, wenn die Antwortdaten abcd enthalten. Die Verfügbarkeitsdiagnose schlägt fehl, wenn in der Antwort abcd nicht enthalten ist.
      • Ersetzen Sie Antwortinhalt durch einen String (max. 1.024 Byte).
    • Wenn Sie für den Ressourcentyp die Option URL oder App Engine auswählen, gehen Sie so vor:

      • Hostname: Geben Sie den Hostnamen des Dienstes ein. Geben Sie beispielsweise example.com ein.

      • Pfad (HTTP, HTTPS): Geben Sie einen Pfad im Host oder in der Ressource ein oder verwenden Sie den Standardpfad. Wenn Sie beispielsweise nach example.com suchen möchten, lassen Sie dieses Feld leer. Geben Sie /tester ein, um nach example.com/tester zu suchen. Geben Sie nicht das Präfix example.com an. Lassen Sie in der API dieses Feld leer, um den Standardwert / zu verwenden.

    • Wenn Sie als Ressourcentyp die Option Elastic-Load-Balancer oder Instanz auswählen, gehen Sie so vor:

      • Gilt für: Wählen Sie Einzeln oder Gruppe aus. Wählen Sie Einzeln aus und wählen dann die spezifische Instanz oder den Load-Balancer aus, um die Verfügbarkeitsdiagnose auf eine Instanz oder einen Load-Balancer anzuwenden. Wählen Sie Gruppe und dann den Gruppennamen aus, um die Verfügbarkeitsdiagnose auf eine Gruppe von Instanzen oder auf eine Gruppe von Load-Balancern anzuwenden. Wenn Sie die API verwenden, füllen Sie die überwachte Ressource mit den erforderlichen Ressourcenlabels aus, wie in der Liste überwachter Ressourcen beschrieben.

      • Pfad (HTTP, HTTPS): Geben Sie einen Pfad im Host oder in der Ressource ein oder verwenden Sie den Standardpfad.

  5. Diagnose: alle: Wählen Sie 1, 5, 10 oder 15 Minuten aus. Dieser Wert bestimmt die Häufigkeit Rhythmus der Verfügbarkeitsdiagnosen. Wenn Sie beispielsweise 5 Minuten auswählen, führt jeder geografische Standort alle 5 Minuten eine Verfügbarkeitsdiagnose aus.

Erweiterte Optionen

Klicken Sie auf Erweiterte Optionen anzeigen, um alle erweiterten Einstellungen zu sehen. Welche erweiterten Einstellungen verfügbar sind, hängt vom Diagnosetyp ab:

  • Allgemein: Füllen Sie dieses Feld aus, um virtuelle Hosts zu prüfen. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.
  • Port: Geben Sie eine Portnummer an.
  • Übereinstimmungstyp für Antwortinhalt: Geben Sie an, wie der im Antwortinhalt eingegebene String mit den tatsächlich zurückgegebenen Daten verglichen wird. Wenn der Antwortinhalt beispielsweise abcd ist und Sie als Übereinstimmungstyp für den Inhalt Enthält auswählen, ist die Verfügbarkeitsdiagnose erfolgreich, wenn die Antwortdaten abcd enthalten. Die Verfügbarkeitsdiagnose schlägt fehl, wenn in der Antwort abcd nicht enthalten ist.
  • Antwortinhalt: Geben Sie einen String ein (max. 1.024 Byte). In der API ist dies das Objekt ContentMatcher.

  • Standorte: Wählen Sie die entsprechenden geografischen Regionen aus, in denen die Diagnose Anfragen erhalten soll. Standardmäßig ist Global mit sechs Diagnosen ausgewählt. Es müssen mindestens drei Diagnosen sein. In der Region USA gibt es drei Diagnosen. Alle anderen Regionen haben eine Diagnose.

  • Benutzerdefinierte Header: Geben Sie benutzerdefinierte Header an und verschlüsseln Sie diese bei Bedarf. Durch die Verschlüsselung werden die Werte der Header im Formular ausgeblendet. Verwenden Sie die Verschlüsselung für Header, die mit der Authentifizierung verbunden sind und für andere Mitglieder Ihres Teams nicht sichtbar sein sollen.

  • Systemdiagnosen-Zeitlimit: Geben Sie ein Zeitlimit von 1 bis 60 Sekunden an. Eine Verfügbarkeitsdiagnose schlägt fehl, wenn innerhalb des konfigurierten Zeitlimits die Systemdiagnosen von mehr als einem Standort keine Antwort erhalten. Wenn nur eine Systemdiagnose keine Antwort erhält, schlägt die Verfügbarkeitsdiagnose nicht fehl.

  • Authentication (Authentifizierung): Geben Sie einen Nutzernamen und ein Passwort an. Diese Werte werden als Autorisierungsheader gesendet. Wenn Sie hier Werte festlegen, geben Sie keinen Autorisierungsheader an. Wenn Sie hingegen einen Autorisierungsheader angeben, legen Sie hier keine Werte fest. Passwörter werden im Formular immer ausgeblendet. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.

  • SSL-Zertifikatvalidierung: Klicken Sie das Kästchen SSL-Zertifikate validieren an. Eine Verfügbarkeitsdiagnose schlägt fehl, wenn eine URL ein ungültiges Zertifikat aufweist. Gründe für ein ungültiges Zertifikat sind ein abgelaufenes Zertifikat, ein Zertifikat mit einem nicht übereinstimmenden Domainnamen oder ein selbst signiertes Zertifikat. Die SSL-Zertifikatvalidierung ist nur für HTTPS-Diagnosen von URL-Ressourcen verfügbar.

Kennungen für Verfügbarkeitsdiagnosen

Bei der Erstellung der Verfügbarkeitsdiagnose weist Monitoring dieser eine Kennung zu, die als Verfügbarkeitsdiagnosen-ID bezeichnet wird. Diese Kennung ist in den Ressourcennamen für die neue Verfügbarkeitsdiagnose eingebettet:

projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]

Sie können die Verfügbarkeitsdiagnosen-ID der Antwort eines Methodenaufrufs entnehmen, um Verfügbarkeitsdiagnosen zu erstellen oder aufzulisten. Außerdem finden Sie die Verfügbarkeitsdiagnose-ID im Fenster Betriebszeitdetails im Abschnitt Konfiguration.

Verfügbarkeitsdiagnose überprüfen

Wenn Sie eine Verfügbarkeitsdiagnose in der Cloud Console erstellen, können Sie die Konfiguration vor dem Speichern testen.

Diagnose erfolgreich

Eine Verfügbarkeitsdiagnose ist erfolgreich, wenn zwei Bedingungen erfüllt sind:

  • Der HTTP-Status ist Success.
  • Es gibt für die Antwort keinen erforderlichen Inhalt bzw. der erforderliche Inhalt ist in der Antwort auffindbar.
Diagnose fehlgeschlagen

Im Folgenden sind einige mögliche Fehlerursachen bei Verfügbarkeitsdiagnosen aufgeführt:

  • Connection Error – Refused (Verbindungsfehler – Abgelehnt): Achten Sie bei Verwendung des Standardverbindungstyps HTTP darauf, dass ein Webserver installiert ist, der auf HTTP-Anfragen reagiert. Dies kann bei einer neuen Instanz passieren, wenn Sie keinen Webserver installiert haben. Siehe dazu Schnellstart für Compute Engine. Bei Verwendung des Verbindungstyps HTTPS müssen Sie unter Umständen zusätzliche Konfigurationsschritte ausführen. Informationen zu Firewallproblemen finden Sie unter IP-Adressen abrufen.
  • Name or service not found (Name oder Dienst nicht gefunden): Der Hostname ist möglicherweise falsch.
  • 403 Forbidden (403 – Verboten): Der Dienst gibt während der Verfügbarkeitsdiagnose einen Fehlercode zurück. Die Standardkonfiguration für den Apache-Webserver gibt diesen Code beispielsweise unter Amazon Linux zurück. Unter bestimmten Linux-Versionen erhalten Sie hingegen den Code 200 (Success) (200 (Erfolg)). Weitere Informationen finden Sie in der LAMP-Anleitung für Amazon Linux oder in der Dokumentation Ihres Webservers.
  • 404 – Not found (404 – Nicht gefunden): Möglicherweise ist der Pfad falsch.
  • 408 Request timeout (408 – Zeitüberschreitung bei Anfrage) oder keine Antwort: Möglicherweise ist die Portnummer falsch, der Dienst wird nicht ausgeführt oder ist nicht erreichbar oder das Zeitlimit ist zu niedrig. Achten Sie darauf, dass die Firewall Traffic von den für die Verfügbarkeitsdiagnose verwendeten Servern zulässt. Weitere Informationen erhalten Sie unter IP-Adressen abrufen. Das Zeitlimit ist unter Erweiterte Optionen im Abschnitt Systemdiagnose angegeben.

Verfügbarkeitsdiagnose aufrufen

So rufen Sie eine Verfügbarkeitsdiagnose auf:

Console

So rufen Sie den detaillierten Status einer einzelnen Verfügbarkeitsdiagnose auf:

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Klicken Sie auf Verfügbarkeitsdiagnosen.

  3. Suchen Sie nach der Verfügbarkeitsdiagnose, die Sie sehen möchten, und klicken Sie auf den Namen der Verfügbarkeitsdiagnose, um das Fenster Uptime details (Betriebszeitdetails) aufzurufen.

    Der folgende Screenshot zeigt die Betriebszeitdetails für eine Verfügbarkeitsdiagnose mit dem Namen "My Uptime Check":

    Beispiel für Dashboard zu den Betriebszeitdetails

    Das Fenster Uptime details (Betriebszeitdetails) enthält die folgenden Informationen:

    • Das ausgewählte Zeitintervall. Standardmäßig beträgt das Intervall 1 hour (1 Stunde).
    • Den Namen der Verfügbarkeitsdiagnose. Im Beispiel lautet der Name My Uptime Check.
    • Den Prozentsatz der Verfügbarkeit und die durchschnittliche Latenz. Der Wert Percent uptime (Verfügbarkeit in %) ist ein Prozentsatz, der mit (S/T)*100 berechnet wird, wobei S die Anzahl der erfolgreichen Diagnoseantworten und T die Gesamtzahl der Diagnoseantworten von allen Standorten ist. Bei Gruppendiagnosen werden die Werte von S und T für alle aktuellen Gruppenmitglieder addiert.

      In einem Zeitraum von 25 Minuten würde eine Verfügbarkeitsdiagnose, die eine Minute dauert und für alle Regionen ausgeführt wird, z. B. 25 Anfragen von allen 6 Standorten und damit insgesamt 150 Anfragen erhalten. Wenn das Dashboard eine Verfügbarkeit von 83,3 % meldet, sind 125 von 150 Anfragen erfolgreich.

    • In den Bereichen Passed checks (Erfolgreiche Diagnosen) und Uptime check latency (Latenz der Verfügbarkeitsdiagnose) werden die Anzahl der erfolgreichen Diagnosen und die Latenz jeder Diagnose grafisch als Funktion in Abhängigkeit von der Zeit dargestellt.

    • Im Bereich Current Status (Aktueller Status) wird der Status der letzten Diagnosen angezeigt. Ein grüner Kreis mit einem Häkchen neben einer Region gibt an, wann die letzte Diagnose in dieser Region erfolgreich war. Ein roter Kreis mit einem x weist auf einen Fehler hin.

    • Im Bereich Configuration (Konfiguration) wird die Konfiguration der Verfügbarkeitsdiagnose angezeigt. Diese Daten werden zugewiesen, wenn die Verfügbarkeitsdiagnose erstellt wird. Der Wert Check Id (Diagnose-ID) entspricht dem Wert [UPTIME_CHECK_ID] in API-Aufrufen.

    • Der Bereich Alert Policies (Benachrichtigungsrichtlinien) enthält Informationen zu den zugehörigen Benachrichtigungsrichtlinien. Im Beispiel-Dashboard ist eine Benachrichtigungsrichtlinie konfiguriert.

C#

public static object GetUptimeCheckConfig(string configName)
{
    var client = UptimeCheckServiceClient.Create();
    UptimeCheckConfig config = client.GetUptimeCheckConfig(configName);
    if (config == null)
    {
        Console.Error.WriteLine(
            "No configuration found with the name {0}", configName);
        return -1;
    }
    Console.WriteLine("Name: {0}", config.Name);
    Console.WriteLine("Display Name: {0}", config.DisplayName);
    Console.WriteLine("Http Path: {0}", config.HttpCheck.Path);
    return 0;
}

Java

private static void getUptimeCheckConfig(String projectId, String checkName) throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    String fullCheckName = UptimeCheckConfigName.format(projectId, checkName);
    UptimeCheckConfig config = client.getUptimeCheckConfig(fullCheckName);
    if (config != null) {
      System.out.println(config.toString());
    } else {
      System.out.println(
          "No uptime check config found with name " + checkName + " in project " + projectId);
    }
  } catch (Exception e) {
    usage("Exception getting uptime check: " + e.toString());
    throw e;
  }
}

Go


// get is an example of getting an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func get(w io.Writer, resourceName string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.GetUptimeCheckConfigRequest{
		Name: resourceName,
	}
	config, err := client.GetUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Config: %v", config)
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.uptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Retrieving ${request.name}`);

// Retrieves an uptime check config
const [uptimeCheckConfig] = await client.getUptimeCheckConfig(request);
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log(`Resource: %j`, uptimeCheckConfig.monitoredResource);
console.log(`Period: %j`, uptimeCheckConfig.period);
console.log(`Timeout: %j`, uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  `Check: %j`,
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * get_uptime_check($projectId, $configName);
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $configName
 */
function get_uptime_check($projectId, $configName)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($configName);

    print('Retrieved an uptime check:' . PHP_EOL);
    print($uptimeCheck->serializeToJsonString() . PHP_EOL);
}

Python

def get_uptime_check_config(config_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    config = client.get_uptime_check_config(config_name)
    pprint.pprint(config)

Ruby

def get_uptime_check_config config_name
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  config = client.get_uptime_check_config config_name
  pp config.to_h
  config
end

Verfügbarkeitsdiagnose bearbeiten

Gehen Sie zum Bearbeiten einer Verfügbarkeitsdiagnose so vor:

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Klicken Sie auf Verfügbarkeitsdiagnosen.

  3. Suchen Sie nach der Verfügbarkeitsdiagnose, die Sie bearbeiten möchten, und führen Sie dann einen der folgenden Schritte aus:

    • Klicken Sie auf das Dreipunkt-Menü  und wählen Sie Edit (Bearbeiten) aus.
    • Sehen Sie sich die Details zur Verfügbarkeitsdiagnose an und klicken Sie auf Edit (Bearbeiten).
  4. Ändern Sie die Werte der Felder nach Bedarf. Sie können nicht alle Felder ändern. Wenn die benutzerdefinierten Headerwerte einer Diagnose ausgeblendet sind, können sie nicht sichtbar gemacht werden.

  5. Klicken Sie auf Testen, um zu prüfen, ob die Diagnose erfolgreich war. Wenn der Test fehlschlägt, können Sie dem Abschnitt Diagnose fehlgeschlagen mögliche Ursachen entnehmen.

  6. Klicken Sie auf Speichern.

API

Rufen Sie die Methode projects.uptimeCheckConfigs.patch auf. Legen Sie die Parameter der Methode so fest:

  • uptimeCheckConfig.name: Erforderlich. Dies ist Teil der REST-URL. Dies ist der Ressourcenname der zu bearbeitenden Verfügbarkeitsdiagnose:

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    Sie können die [UPTIME_CHECK_ID] aus der Antwort der Methode create oder list abrufen. Die ID wird nicht in der Stackdriver Monitoring-Konsole angezeigt.

  • updateMask: Optional. Dies ist ein Abfrageparameter: ?updateMask=[FIELD_LIST]. [FIELD_LIST] ist eine durch Kommas getrennte Liste von Feldern im Objekt UptimeCheckConfig, die geändert werden sollte. Beispiel:

    "resource.type,httpCheck.path"
    
  • Der Anfragetext muss das Objekt UptimeCheckConfig mit den neuen Feldwerten enthalten.

Wenn updateMask festgelegt ist, ersetzen nur die in updateMask aufgelisteten Felder die entsprechenden Felder in der vorhandenen Konfiguration. Wenn ein Feld untergeordnete Felder hat und das Feld in der Feldmaske aufgeführt ist, aber keines seiner Unterfelder, dann ersetzen alle Unterfelder dieses Feldes die entsprechenden Felder.

Wenn updateMask nicht festgelegt ist, ersetzt die Konfiguration im Anfragetext die gesamte vorhandene Konfiguration.

Die Methode patch gibt das Objekt UptimeCheckConfig für die geänderte Konfiguration zurück.

C#

public static object UpdateUptimeCheck(string configName,
    string newHttpPath, string newDisplayName)
{
    var client = UptimeCheckServiceClient.Create();
    var config = client.GetUptimeCheckConfig(configName);
    var fieldMask = new FieldMask();
    if (newDisplayName != null)
    {
        config.DisplayName = newDisplayName;
        fieldMask.Paths.Add("display_name");
    }
    if (newHttpPath != null)
    {
        config.HttpCheck.Path = newHttpPath;
        fieldMask.Paths.Add("http_check.path");
    }
    client.UpdateUptimeCheckConfig(config);
    return 0;
}

Java

private static void updateUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  String fullCheckName = UptimeCheckConfigName.format(projectId, displayName);

  UpdateUptimeCheckConfigRequest request = UpdateUptimeCheckConfigRequest
      .newBuilder()
      .setUpdateMask(FieldMask
          .newBuilder()
          .addPaths("http_check.path"))
      .setUptimeCheckConfig(UptimeCheckConfig
          .newBuilder()
          .setName(fullCheckName)
          .setMonitoredResource(MonitoredResource
              .newBuilder()
              .setType("uptime_url")
              .putLabels("host", hostName))
          .setHttpCheck(HttpCheck
              .newBuilder()
              .setPath(pathName)
              .setPort(80))
          .setTimeout(Duration.newBuilder().setSeconds(10))
          .setPeriod(Duration.newBuilder().setSeconds(300)))
      .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.updateUptimeCheckConfig(request);
    System.out.println("Uptime check updated: \n" + config.toString());
  } catch (Exception e) {
    usage("Exception updating uptime check: " + e.toString());
    throw e;
  }
}

Go


// update is an example of updating an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func update(w io.Writer, resourceName, displayName, httpCheckPath string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	getReq := &monitoringpb.GetUptimeCheckConfigRequest{
		Name: resourceName,
	}
	config, err := client.GetUptimeCheckConfig(ctx, getReq)
	if err != nil {
		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
	}
	config.DisplayName = displayName
	config.GetHttpCheck().Path = httpCheckPath
	req := &monitoringpb.UpdateUptimeCheckConfigRequest{
		UpdateMask: &field_mask.FieldMask{
			Paths: []string{"display_name", "http_check.path"},
		},
		UptimeCheckConfig: config,
	}
	config, err = client.UpdateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("UpdateUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully updated %v", resourceName)
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';
// const displayName = 'A New Display Name';
// const path = '/some/path';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.uptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Updating ${request.name} to ${displayName}`);

// Updates the display name and path on an uptime check config
request.uptimeCheckConfig = {
  name: request.name,
  displayName: displayName,
  httpCheck: {path: path},
};

request.updateMask = {paths: ['display_name', 'http_check.path']};

const [response] = await client.updateUptimeCheckConfig(request);
console.log(`${response.name} config updated.`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Protobuf\FieldMask;

/**
 * Example:
 * ```
 * update_uptime_checks($projectId);
 * ```
 */
function update_uptime_checks($projectId, $configName, $newDisplayName = null, $newHttpCheckPath = null)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($displayName);
    $fieldMask = new FieldMask();
    if ($newDisplayName) {
        $fieldMask->getPaths()[] = 'display_name';
        $uptimeCheck->setDisplayName($newDisplayName);
    }
    if ($newHttpCheckPath) {
        $fieldMask->getPaths()[] = 'http_check.path';
        $uptimeCheck->getHttpCheck()->setPath($newHttpCheckPath);
    }

    $uptimeCheckClient->updateUptimeCheckConfig($uptimeCheck, $fieldMask);

    print($uptimeCheck->serializeToString() . PHP_EOL);
}

Python

def update_uptime_check_config(config_name, new_display_name=None,
                               new_http_check_path=None):
    client = monitoring_v3.UptimeCheckServiceClient()
    config = client.get_uptime_check_config(config_name)
    field_mask = monitoring_v3.types.FieldMask()
    if new_display_name:
        field_mask.paths.append('display_name')
        config.display_name = new_display_name
    if new_http_check_path:
        field_mask.paths.append('http_check.path')
        config.http_check.path = new_http_check_path
    client.update_uptime_check_config(config, field_mask)

Ruby

def update_uptime_check_config config_name: nil, new_display_name: nil, new_http_check_path: nil
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  config = { name: config_name }
  field_mask = { paths: [] }
  unless new_display_name.to_s.empty?
    field_mask[:paths].push "display_name"
    config[:display_name] = new_display_name
  end
  unless new_http_check_path.to_s.empty?
    field_mask[:paths].push "http_check.path"
    config[:http_check] = { path: new_http_check_path }
  end
  client.update_uptime_check_config config, update_mask: field_mask
end

Es kann bis zu 5 Minuten dauern, bis die Ergebnisse der neuen Verfügbarkeitsdiagnose angezeigt werden. Bis dahin werden die Ergebnisse der vorherigen Verfügbarkeitsdiagnose in den Dashboards angezeigt und in Benachrichtigungsrichtlinien verwendet.

Verfügbarkeitsdiagnose löschen

Bevor Sie eine Verfügbarkeitsdiagnose löschen, entfernen Sie diese aus allen Benachrichtigungsrichtlinien, in denen die Diagnose verwendet wird. Wenn Sie die Verfügbarkeitsdiagnose nicht entfernen, können Sie sie nicht über die Monitoring-Konsole löschen. Wenn Sie die Verfügbarkeitsdiagnose über die API löschen, ignoriert die Benachrichtigungsrichtlinie die fehlende Verfügbarkeitsdiagnose. Die Richtlinie erstellt keinen Vorfall für die fehlende Diagnose.

Gehen Sie zum Löschen einer Verfügbarkeitsdiagnose so vor:

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Klicken Sie auf Verfügbarkeitsdiagnosen.

  3. Suchen Sie nach der Verfügbarkeitsdiagnose, die Sie bearbeiten möchten, und führen Sie dann einen der folgenden Schritte aus:

    • Klicken Sie auf das Dreipunkt-Menü  und wählen Sie Löschen aus.
    • Rufen Sie die Details zur Verfügbarkeitsdiagnose auf und klicken Sie auf Löschen .

API

Rufen Sie die Methode projects.uptimeCheckConfigs.delete auf. Legen Sie den Parameter so fest:

  • name: Erforderlich. Dies ist der Ressourcenname der zu löschenden Verfügbarkeitsdiagnose.

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    Sie können die [UPTIME_CHECK_ID] aus der Antwort der Methode create oder list abrufen. Die ID wird nicht in der Stackdriver Monitoring-Konsole angezeigt.

C#

public static object DeleteUptimeCheckConfig(string configName)
{
    var client = UptimeCheckServiceClient.Create();
    client.DeleteUptimeCheckConfig(configName);
    Console.WriteLine($"Deleted {configName}");
    return 0;
}

Java

private static void deleteUptimeCheckConfig(String projectId, String checkName)
    throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    client.deleteUptimeCheckConfig(UptimeCheckConfigName.format(projectId, checkName));
  } catch (Exception e) {
    usage("Exception deleting uptime check: " + e.toString());
    throw e;
  }
}

Go


// delete is an example of deleting an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func delete(w io.Writer, resourceName string) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.DeleteUptimeCheckConfigRequest{
		Name: resourceName,
	}
	if err := client.DeleteUptimeCheckConfig(ctx, req); err != nil {
		return fmt.Errorf("DeleteUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully deleted %q", resourceName)
	return nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.uptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Deleting ${request.name}`);

// Delete an uptime check config
await client.deleteUptimeCheckConfig(request);
console.log(`${request.name} deleted.`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * delete_uptime_check($projectId, $configName);
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $configName
 */
function delete_uptime_check($projectId, $configName)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheckClient->deleteUptimeCheckConfig($configName);

    printf('Deleted an uptime check: ' . $configName . PHP_EOL);
}

Python

def delete_uptime_check_config(config_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    client.delete_uptime_check_config(config_name)
    print('Deleted ', config_name)

Ruby

def delete_uptime_check_config config_name
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  client.delete_uptime_check_config config_name
  puts "Deleted #{config_name}"
end

Stackdriver Monitoring-Konsole verwenden

Stackdriver Monitoring kann die Verfügbarkeit Ihres Dienstes überprüfen, wenn von verschiedenen Standorten weltweit darauf zugegriffen wird. Sie können die Ergebnisse dieser Verfügbarkeitsdiagnosen in Ihren Benachrichtigungsrichtlinien verwenden oder die Ergebnisse direkt in den Monitoring-Dashboards für Verfügbarkeitsdiagnosen überprüfen.

Diese Seite enthält Anleitungen für Folgendes:

  • Neue Verfügbarkeitsdiagnose erstellen
  • Vorhandene Verfügbarkeitsdiagnosen auflisten
  • Verfügbarkeitsdiagnose bearbeiten
  • Verfügbarkeitsdiagnose löschen

Informationen zum Status Ihrer Verfügbarkeitsdiagnosen und zum Abrufen einer Liste mit IP-Adressen für Verfügbarkeitsdiagnosen finden Sie unter IP-Adressen abrufen. Bestimmen Sie den Messwert monitoring.googleapis.com/uptime_check/check_passed, um den Status Ihrer Verfügbarkeitsdiagnosen mithilfe der API zu ermitteln. Weitere Informationen finden Sie in der Google Cloud-Messwertliste.

Hinweise

  1. Die Verwendung von Verfügbarkeitsdiagnosen hängt von den Firewalls zum Schutz des Dienstes ab.

    • Wenn die zu prüfende Ressource nicht öffentlich verfügbar ist, müssen Sie die Firewall der Ressource so konfigurieren, dass von den Servern der Verfügbarkeitsdiagnose eingehender Traffic zugelassen wird. Informationen zum Herunterladen dieser Liste mit den IP-Adressen finden Sie unter IP-Adressen abrufen.
    • Wenn die geprüfte Ressource keine externe IP-Adresse hat, kann sie von Verfügbarkeitsdiagnosen nicht erreicht werden.
  2. Bei der Verfügbarkeitsdiagnose werden keine Seitenelemente geladen oder JavaScript ausgeführt. Die Standardkonfiguration einer Verfügbarkeitsdiagnose umfasst keine Authentifizierung. Sie können die Authentifizierung mit den Erweiterten Optionen aktivieren.

    Für HTTP und HTTPS gibt die Verfügbarkeitsdiagnose den Befehl GET aus und ruft die Rohdaten ab. Wenn es sich bei der GET-Antwort um eine Weiterleitung zu einer anderen URL handelt, ruft die Diagnose die Daten dieser URL ab. Zuletzt prüft die Verfügbarkeitsdiagnose die Daten, um festzustellen, ob die Diagnose erfolgreich war oder fehlgeschlagen ist.

    Es müssen zwei Bedingungen erfüllt sein, damit sie erfolgreich ist:

    • Der HTTP-Status ist Success.
    • Es gibt für die Daten keinen erforderlichen Inhalt bzw. der erforderliche Inhalt ist vorhanden. Der erforderliche Inhalt wird unter Erweiterte Optionen angegeben.

Verfügbarkeitsdiagnosen erstellen

In diesem Abschnitt wird das Erstellen und Konfigurieren von Verfügbarkeitsdiagnosen erläutert.

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Wählen Sie Verfügbarkeitsdiagnosen aus und wählen Sie dann Verfügbarkeitsdiagnosen-Übersicht aus.

  3. Klicken Sie oben rechts auf Verfügbarkeitsdiagnose hinzufügen.

  4. Füllen Sie im Fenster New uptime check (Neue Verfügbarkeitsdiagnose) die Felder für die Diagnose aus, wie unter Grundlegende Optionen auf dieser Seite beschrieben.

    Verfügbarkeitsdiagnose erstellen

  5. Klicken Sie optional auf Advanced options (Erweiterte Optionen), um auf die Konfiguration für Port, benutzerdefinierte Header und Authentifizierung zuzugreifen. Weitere Informationen finden Sie unter Erweiterte Optionen auf dieser Seite.

  6. Klicken Sie auf Testen, um das Ergebnis der Verfügbarkeitsdiagnose aufzurufen. Wenn das Ergebnis nicht Ihren Erwartungen entspricht, lesen Sie weiter unten den Abschnitt Diagnose fehlgeschlagen, korrigieren Sie Ihre Konfiguration und wiederholen Sie den Test.

  7. Klicken Sie auf Save (Speichern). Sie können eine Verfügbarkeitsdiagnose nicht speichern, wenn ein erforderliches Feld fehlt. Wenn die Schaltfläche Save (Speichern) deaktiviert ist, suchen Sie nach fehlenden Werten. Geben Sie in das Feld Hostname unbedingt einen Namen ein.

API

Rufen Sie die Methode projects.uptimeCheckConfigs.create auf. Legen Sie die Parameter der Methode so fest:

  • parent: Erforderlich. Dies muss der Name des Projekts sein, in dem die Verfügbarkeitsdiagnose erstellt werden soll. Ersetzen Sie [PROJECT_ID] durch Ihre Google Cloud-Projekt-ID. Das Format dafür ist:

    projects/[PROJECT_ID]
    
  • Der Anfragetext muss das Objekt UptimeCheckConfig für die neue Verfügbarkeitsdiagnose enthalten. Die Felder im Objekt werden auf dieser Seite in den Abschnitten Grundlegende Optionen und Erweiterte Optionen erläutert.

    Lassen Sie das Feld name des Konfigurationsobjekts leer, wie es im zurückgegebenen Konfigurationsobjekt festgelegt ist.

Die Methode create gibt das Objekt UptimeCheckConfig für die neue Konfiguration zurück.

Wenn die erstellte Verfügbarkeitsdiagnose nicht wie erwartet funktioniert, lesen Sie den Abschnitt Diagnose fehlgeschlagen auf dieser Seite.

C#

public static object CreateUptimeCheck(string projectId, string hostName,
    string displayName)
{
    // Define a new config.
    var config = new UptimeCheckConfig()
    {
        DisplayName = displayName,
        MonitoredResource = new MonitoredResource()
        {
            Type = "uptime_url",
            Labels = { { "host", hostName } }
        },
        HttpCheck = new UptimeCheckConfig.Types.HttpCheck()
        {
            Path = "/",
            Port = 80,
        },
        Timeout = TimeSpan.FromSeconds(10).ToDuration(),
        Period = TimeSpan.FromMinutes(5).ToDuration()
    };
    // Create a client.
    var client = UptimeCheckServiceClient.Create();
    string projectName = new ProjectName(projectId).ToString();
    // Create the config.
    var newConfig = client.CreateUptimeCheckConfig(projectName, config,
        CallSettings.FromCallTiming(CallTiming.FromTimeout(TimeSpan.FromMinutes(2))));
    Console.WriteLine(newConfig.Name);
    return 0;
}

Java

private static void createUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  CreateUptimeCheckConfigRequest request = CreateUptimeCheckConfigRequest
      .newBuilder()
      .setParent(ProjectName.format(projectId))
      .setUptimeCheckConfig(UptimeCheckConfig
          .newBuilder()
          .setDisplayName(displayName)
          .setMonitoredResource(MonitoredResource
              .newBuilder()
              .setType("uptime_url")
              .putLabels("host", hostName))
          .setHttpCheck(HttpCheck
              .newBuilder()
              .setPath(pathName)
              .setPort(80))
          .setTimeout(Duration.newBuilder().setSeconds(10))
          .setPeriod(Duration.newBuilder().setSeconds(300)))
      .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.createUptimeCheckConfig(request);
    System.out.println("Uptime check created: " + config.getDisplayName());
  } catch (Exception e) {
    usage("Exception creating uptime check: " + e.toString());
    throw e;
  }
}

Go


// create creates an example uptime check.
func create(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.CreateUptimeCheckConfigRequest{
		Parent: "projects/" + projectID,
		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
			DisplayName: "new uptime check",
			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
				MonitoredResource: &monitoredres.MonitoredResource{
					Type: "uptime_url",
					Labels: map[string]string{
						"host": "example.com",
					},
				},
			},
			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
					Path: "/",
					Port: 80,
				},
			},
			Timeout: &duration.Duration{Seconds: 10},
			Period:  &duration.Duration{Seconds: 300},
		},
	}
	config, err := client.CreateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully created uptime check %q\n", config.GetDisplayName())
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const hostname = 'mydomain.com';

const request = {
  // i.e. parent: 'projects/my-project-id'
  parent: client.projectPath(projectId),
  uptimeCheckConfig: {
    displayName: 'My Uptime Check',
    monitoredResource: {
      // See the Uptime Check docs for supported MonitoredResource types
      type: 'uptime_url',
      labels: {host: hostname},
    },
    httpCheck: {path: '/', port: 80},
    timeout: {seconds: 10},
    period: {seconds: 300},
  },
};

// Creates an uptime check config for a GCE instance
const [uptimeCheckConfig] = await client.createUptimeCheckConfig(request);
console.log('Uptime check created:');
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log(`Resource: %j`, uptimeCheckConfig.monitoredResource);
console.log(`Period: %j`, uptimeCheckConfig.period);
console.log(`Timeout: %j`, uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  `Check: %j`,
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
use Google\Api\MonitoredResource;

/**
 * Example:
 * ```
 * create_uptime_check($projectId, 'myproject.appspot.com', 'Test Uptime Check!');
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $hostName
 * @param string $displayName
 */
function create_uptime_check($projectId, $hostName = 'example.com', $displayName = 'New uptime check')
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $monitoredResource = new MonitoredResource();
    $monitoredResource->setType('uptime_url');
    $monitoredResource->setLabels(['host' => $hostName]);

    $uptimeCheckConfig = new UptimeCheckConfig();
    $uptimeCheckConfig->setDisplayName($displayName);
    $uptimeCheckConfig->setMonitoredResource($monitoredResource);

    $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig(
        $uptimeCheckClient->projectName($projectId),
        $uptimeCheckConfig
    );

    printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
}

Python

def create_uptime_check_config(project_name, host_name=None,
                               display_name=None):
    config = monitoring_v3.types.uptime_pb2.UptimeCheckConfig()
    config.display_name = display_name or 'New uptime check'
    config.monitored_resource.type = 'uptime_url'
    config.monitored_resource.labels.update(
        {'host': host_name or 'example.com'})
    config.http_check.path = '/'
    config.http_check.port = 80
    config.timeout.seconds = 10
    config.period.seconds = 300

    client = monitoring_v3.UptimeCheckServiceClient()
    new_config = client.create_uptime_check_config(project_name, config)
    pprint.pprint(new_config)
    return new_config

Ruby

def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  project_name = Google::Cloud::Monitoring::V3::UptimeCheckServiceClient.project_path project_id
  config = {
    display_name:       display_name.nil? ? "New uptime check" : display_name,
    monitored_resource: {
      type:   "uptime_url",
      labels: { "host" => host_name.nil? ? "example.com" : host_name }
    },
    http_check:         { path: "/", port: 80 },
    timeout:            { seconds: 10 },
    period:             { seconds: 300 }
  }
  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  new_config = client.create_uptime_check_config project_name, config
  puts new_config.name
  new_config
end

Es kann bis zu 5 Minuten dauern, bis die Ergebnisse der Verfügbarkeitsdiagnose bei Monitoring eintreffen. Bis dahin meldet das Verfügbarkeitsdiagnose-Dashboard als Status "no data available" (Keine Daten verfügbar).

Grundlegende Optionen

Geben Sie Werte für die Konfiguration der Verfügbarkeitsdiagnose an, um eine neue Verfügbarkeitsdiagnose zu erstellen. Wenn Sie die Verfügbarkeitsdiagnose in der Stackdriver Monitoring-Konsole erstellen, füllen Sie ein Formular aus. Bei Verwendung der API für diesen Zweck geben Sie die entsprechenden Parameter in einem UptimeCheckConfig-Objekt an.

  1. Titel: Ein Name zur Erkennung der Diagnose. Beispiel: Example.com uptime check

  2. Diagnosetyp: Wählen Sie als Protokoll HTTP, HTTPS oder TCP aus.

    Wenn Sie HTTPS auswählen, versucht der Dienst, eine Verbindung über HTTPS herzustellen, das SSL-Zertifikat wird jedoch nicht überprüft. Abgelaufene oder selbst signierte Zertifikate führen dann beispielsweise nicht dazu, dass eine Diagnose fehlschlägt.

  3. Ressourcentyp: Wählen Sie einen der folgenden Ressourcentypen aus.

    • App Engine: Google App Engine-Anwendungen (Module)
    • Elastic Load Balancer (Elastic-Load-Balancer): AWS-Load-Balancer
    • Instanz: Compute Engine- oder AWS EC2-Instanzen. In der API werden sie in gce_instance und aws_ec2_instance unterteilt.
    • URL: Eine IPv4-Adresse oder ein Hostname. Pfad und Port werden separat eingegeben.
  4. Füllen Sie die Verbindungsinformationen entsprechend dem ausgewählten Diagnose- und Ressourcentyp aus:

    • Gilt für (App Engine, ELB oder Instanz): Sie können die Verfügbarkeitsdiagnose auf eine einzelne Ressource oder eine Gruppe von Ressourcen wie Alle Instanzen anwenden. Eine einzelne Ressource wählen Sie aus den vorhandenen Ressourcen aus, die im Menü aufgeführt sind. Wenn Sie die API verwenden, füllen Sie die überwachte Ressource mit den erforderlichen Ressourcenlabels aus, wie in der Liste überwachter Ressourcen beschrieben.

    • Modul: App Engine. Geben Sie Ihr Anwendungsmodul an.

    • Hostname (Alle außer App Engine): Geben Sie den Hostnamen Ihres Dienstes an. Geben Sie beispielsweise example.com ein.

    • Pfad (HTTP, HTTPS): Geben Sie einen Pfad im Host oder in der Ressource ein oder verwenden Sie den Standardpfad. Wenn Sie beispielsweise nach example.com suchen möchten, lassen Sie dieses Feld leer. Geben Sie /tester ein, um nach example.com/tester zu suchen. Geben Sie nicht das Präfix example.com an. Lassen Sie in der API dieses Feld leer, um den Standardwert / zu verwenden.

    • Port: Wählen Sie einen Port für die Verbindung aus.

      • Diese Option befindet sich für HTTP- und HTTPS-Diagnosen unter Erweiterte Optionen.
      • In der API lassen Sie dieses Feld leer, um den Standardwert zu verwenden, nämlich 80 für TCP- oder HTTP-Diagnosen und 443 für HTTPS-Diagnosen.
    • Antwort enthält den Text: Geben Sie einen String ein (max. 1.024 Byte). Wenn dieser String in der Diagnoseantwort enthalten ist, war die Diagnose erfolgreich. Die Diagnose gilt als fehlgeschlagen, wenn der String an keiner Stelle in der Antwort vorhanden ist. Dieses Feld wird bei HTTP- und HTTPS-Diagnosen unter Erweiterte Optionen angezeigt.

    • Antwort enthält nicht den Text: Geben Sie einen String ein (max. 1.024 Byte). Dieser String muss in der Diagnoseantwort enthalten sein, damit die Diagnose erfolgreich ist. Die Diagnose schlägt fehl, wenn der String irgendwo in der Antwort erscheint. Dieses Feld wird bei HTTP- und HTTPS-Diagnosen unter Erweiterte Optionen angezeigt.

  5. Diagnose: alle: 1, 5, 10 oder 15 Minuten. Wenn Sie beispielsweise 5 Minuten auswählen, versucht jeder geografische Standort einmal alle fünf Minuten, Ihren Dienst zu erreichen. Bei Verwendung der standardmäßigen sechs Standorte und bei einer Diagnose alle fünf Minuten erhält der Dienst im Durchschnitt 1,2 Anfragen pro Minute. Findet die Diagnose jede Minute statt, erhält der Dienst durchschnittlich 6 Anfragen pro Minute.

Erweiterte Optionen

Der Abschnitt Erweiterte Optionen gilt für HTTP-, HTTPS- und TCP-Diagnosetypen.

Für HTTP und HTTPS gibt die Verfügbarkeitsdiagnose den Befehl GET aus und ruft die Rohdaten von der Antwort ab. Wenn es sich bei der GET-Antwort um eine Weiterleitung zu einer anderen URL handelt, ruft die Diagnose die Daten dieser URL ab. Zuletzt prüft die Verfügbarkeitsdiagnose die Antwortheader (und optional die Antwortdaten), um festzustellen, ob die Diagnose erfolgreich war oder fehlgeschlagen ist.

Es müssen zwei Bedingungen erfüllt sein, damit sie erfolgreich ist:

  1. Der HTTP-Status ist Success.
  2. Die Diagnose hat entweder keinen Inhaltsabgleich oder die für den Inhaltsabgleich erforderlichen Daten wurden gefunden. Der spezifische Typ des Inhaltsabgleichs wird mithilfe der Erweiterten Optionen festgelegt.

Diese Einstellungen sind optional und variieren je nach Diagnosetyp:

  • HTTP Host Header (HTTP-Hostheader): Geben Sie einen Header ein, um virtuelle Hosts zu prüfen. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.

  • Port: Geben Sie eine Portnummer an. Bei TCP-Diagnosen wird dieses Feld unter Grundlegende Optionen angezeigt.

  • Antwort enthält den Text: Geben Sie einen String ein (max. 1.024 Byte). Wenn dieser String in der Antwort enthalten ist, gilt die Diagnose als erfolgreich. Bei HTTP- und HTTPS-Diagnosen werden nur die ersten 4 MB der Antwort geprüft. Bei TCP-Diagnosen wird dieses Feld unter Grundlegende Optionen angezeigt und nur das erste 1 MB der Antwort wird geprüft.

  • Antwort enthält nicht den Text: Geben Sie einen String ein (max. 1.024 Byte). Dieser String darf in der Diagnoseantwort nicht enthalten sein, wenn die Diagnose erfolgreich sein soll. Bei HTTP- und HTTPS-Diagnosen werden nur die ersten 4 MB der Antwort geprüft. Bei TCP-Diagnosen wird dieses Feld unter Grundlegende Optionen angezeigt und nur das erste 1 MB der TCP-Antwort wird geprüft.

  • Antwortinhalt entspricht dem Regex: Diese Option ist nur für HTTP- und HTTPS-Diagnosen verfügbar. Geben Sie einen regulären Ausdruck (max. 1.024 Byte) in das Textfeld ein. Wenn der Inhalt mit dem regulären Ausdruck übereinstimmt, ist die Verfügbarkeitsdiagnose erfolgreich. Nur die ersten 4 MB der Antwort werden geprüft.

  • Antwortinhalt entspricht nicht mit dem Regex: Diese Option ist nur für HTTP- und HTTPS-Diagnosen verfügbar. Geben Sie einen regulären Ausdruck (max. 1.024 Byte) in das Textfeld ein. Wenn der Inhalt nicht mit dem regulären Ausdruck übereinstimmt, ist die Verfügbarkeitsdiagnose erfolgreich. Nur die ersten 4 MB der Antwort werden geprüft.

  • Standorte: Wählen Sie die entsprechenden geografischen Regionen aus, in denen die Diagnose Anfragen erhalten soll. Sie müssen genügend Regionen auswählen, um mindestens drei aktive Standorte zu haben. Wenn eine Diagnose erstellt wird, werden die Standorte in jeder Region unter dem Namen der Region aufgeführt. Neue Diagnosestandorte in den ausgewählten Regionen senden automatisch Anfragen an die konfigurierten Ziele. Damit immer von allen verfügbaren Standorten Anfragen gesendet werden, wählen Sie Global aus. Wählen Sie anstelle von Global alle vorhandenen Regionen aus, um von allen Standorten in vorhandenen Regionen Anfragen zu senden, jedoch nicht von neuen Standorten in neuen Regionen.

  • Benutzerdefinierte Header: Geben Sie benutzerdefinierte Header an und verschlüsseln Sie diese bei Bedarf. Durch die Verschlüsselung werden die Werte der Header im Formular ausgeblendet. Verwenden Sie die Verschlüsselung für Header, die mit der Authentifizierung verbunden sind und für andere Mitglieder Ihres Teams nicht sichtbar sein sollen. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.

  • Systemdiagnosen-Zeitlimit: Geben Sie ein Zeitlimit von 1 bis 60 Sekunden an. Eine Verfügbarkeitsdiagnose schlägt fehl, wenn innerhalb des konfigurierten Zeitlimits die Systemdiagnosen von mehr als einem Standort keine Antwort erhalten. Wenn nur eine Systemdiagnose keine Antwort erhält, schlägt die Verfügbarkeitsdiagnose nicht fehl.

  • Authentication (Authentifizierung): Geben Sie einen Nutzernamen und ein Passwort an. Diese Werte werden als Autorisierungsheader gesendet. Wenn Sie hier Werte festlegen, geben Sie keinen Autorisierungsheader an. Wenn Sie hingegen einen Autorisierungsheader angeben, legen Sie hier keine Werte fest. Passwörter werden im Formular immer ausgeblendet. Dieses Feld ist für TCP-Diagnosen nicht verfügbar.

  • SSL-Zertifikatvalidierung: Klicken Sie das Kästchen SSL-Zertifikate validieren an. Eine Verfügbarkeitsdiagnose schlägt fehl, wenn eine URL ein ungültiges Zertifikat aufweist. Gründe für ein ungültiges Zertifikat sind ein abgelaufenes Zertifikat, ein Zertifikat mit einem nicht übereinstimmenden Domainnamen oder ein selbst signiertes Zertifikat. Die SSL-Zertifikatvalidierung ist nur für HTTPS-Diagnosen von URL-Ressourcen verfügbar.

Kennungen für Verfügbarkeitsdiagnosen

Bei der Erstellung der Verfügbarkeitsdiagnose weist Stackdriver dieser eine Kennung zu, die als Verfügbarkeitsdiagnosen-ID bezeichnet wird. Diese Kennung ist in den Ressourcennamen für die neue Verfügbarkeitsdiagnose eingebettet:

projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]

Sie können die Verfügbarkeitsdiagnosen-ID der Antwort eines Methodenaufrufs entnehmen, um Verfügbarkeitsdiagnosen zu erstellen oder aufzulisten. Außerdem finden Sie die Verfügbarkeitsdiagnosen-ID in der Stackdriver Monitoring-Konsole auf der Seite der Verfügbarkeitsdiagnosen im Feld Check ID (Diagnose-ID) des Bereichs Check config (Diagnosekonfiguration).

Verfügbarkeitsdiagnose überprüfen

Wenn Sie eine Verfügbarkeitsdiagnose in der Stackdriver Monitoring Console erstellen, können Sie die Konfiguration vor dem Speichern testen.

Diagnose erfolgreich

Eine Verfügbarkeitsdiagnose ist erfolgreich, wenn zwei Bedingungen erfüllt sind:

  • Der HTTP-Status ist Success.
  • Es gibt für die Antwort entweder keinen erforderlichen Inhalt oder der erforderliche Inhalt ist in der Antwort auffindbar.
Diagnose fehlgeschlagen

Im Folgenden sind einige mögliche Fehlerursachen bei Verfügbarkeitsdiagnosen aufgeführt:

  • Connection Error – Refused (Verbindungsfehler – Abgelehnt): Achten Sie bei Verwendung des Standardverbindungstyps HTTP darauf, dass ein Webserver installiert ist, der auf HTTP-Anfragen reagiert. Dies kann bei einer neuen Instanz passieren, wenn Sie keinen Webserver installiert haben. Siehe dazu Schnellstart für Compute Engine. Bei Verwendung des Verbindungstyps HTTPS müssen Sie unter Umständen zusätzliche Konfigurationsschritte ausführen. Informationen zu Firewallproblemen finden Sie unter IP-Adressen abrufen.
  • Name or service not found (Name oder Dienst nicht gefunden): Der Hostname ist möglicherweise falsch.
  • 403 Forbidden (403 – Verboten): Der Dienst gibt während der Verfügbarkeitsdiagnose einen Fehlercode zurück. Die Standardkonfiguration für den Apache-Webserver gibt diesen Code beispielsweise unter Amazon Linux zurück. Unter bestimmten Linux-Versionen erhalten Sie hingegen den Code 200 (Success) (200 (Erfolg)). Weitere Informationen finden Sie in der LAMP-Anleitung für Amazon Linux oder in der Dokumentation Ihres Webservers.
  • 404 – Not found (404 – Nicht gefunden): Möglicherweise ist der Pfad falsch.
  • 408 Request timeout (408 – Zeitüberschreitung bei Anfrage) oder keine Antwort: Möglicherweise ist die Portnummer falsch, der Dienst wird nicht ausgeführt oder ist nicht erreichbar oder das Zeitlimit ist zu niedrig. Achten Sie darauf, dass die Firewall Traffic von den für die Verfügbarkeitsdiagnose verwendeten Servern zulässt. Weitere Informationen erhalten Sie unter IP-Adressen abrufen. Das Zeitlimit ist unter Erweiterte Optionen im Abschnitt Systemdiagnose angegeben.

Benachrichtigungsrichtlinie erstellen

Wenn Sie über fehlgeschlagene Verfügbarkeitsdiagnosen informiert werden möchten, erstellen Sie eine Benachrichtigungsrichtlinie für die neue Verfügbarkeitsdiagnose. Weitere Informationen finden Sie unter Benachrichtigungen für Verfügbarkeitsdiagnosen.

Verfügbarkeitsdiagnosen auflisten

Zum Auflisten Ihrer aktuellen Verfügbarkeitsdiagnosen gehen Sie so vor:

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Wählen Sie Verfügbarkeitsdiagnosen aus und wählen Sie dann Verfügbarkeitsdiagnosen-Übersicht aus.

  3. Führen Sie einen der folgenden Schritte aus, um die Liste der Diagnosen zu filtern:

    • Geben Sie im Feld Filter Suchbegriffe ein, um die Liste auf Diagnosen zu beschränken, die diese im Titel enthalten.
    • Verwenden Sie die Schaltfläche links neben dem Feld Filter, um nach Mitgliedern einer bestimmten Gruppe zu filtern.

    Klicken Sie auf eine Verfügbarkeitsdiagnose, um weitere Informationen zu erhalten.

API

Rufen Sie die Methode projects.uptimeCheckConfigs.list auf, um eine Liste der verfügbaren Konfigurationen zu erhalten. Geben Sie folgenden Parameter an:

  • parent: Das Projekt, dessen Verfügbarkeitsdiagnosen Sie auflisten möchten. Das Format dafür ist:

    projects/[PROJECT_ID]
    

Rufen Sie die Methode projects.uptimeCheckConfigs.get auf, um eine bestimmte Verfügbarkeitsdiagnose zu erhalten. Geben Sie folgenden Parameter an:

  • name: Der vollständige Name der Verfügbarkeitsdiagnosekonfiguration.

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    Sie können die [UPTIME_CHECK_ID] aus der Antwort der Methode create oder list abrufen. Die ID wird nicht in der Stackdriver Monitoring-Konsole angezeigt.

C#

public static object ListUptimeCheckConfigs(string projectId)
{
    var client = UptimeCheckServiceClient.Create();
    var configs = client.ListUptimeCheckConfigs(
        new ProjectName(projectId).ToString());
    foreach (UptimeCheckConfig config in configs)
    {
        Console.WriteLine(config.Name);
    }
    return 0;
}

Java

private static void listUptimeChecks(String projectId) throws IOException {
  ListUptimeCheckConfigsRequest request = ListUptimeCheckConfigsRequest
      .newBuilder()
      .setParent(ProjectName.format(projectId))
      .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    ListUptimeCheckConfigsPagedResponse response = client.listUptimeCheckConfigs(request);
    for (UptimeCheckConfig config : response.iterateAll()) {
      System.out.println(config.getDisplayName());
    }
  } catch (Exception e) {
    usage("Exception listing uptime checks: " + e.toString());
    throw e;
  }
}

Go


// list is an example of listing the uptime checks in projectID.
func list(w io.Writer, projectID string) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.ListUptimeCheckConfigsRequest{
		Parent: "projects/" + projectID,
	}
	it := client.ListUptimeCheckConfigs(ctx, req)
	for {
		config, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListUptimeCheckConfigs: %v", err)
		}
		fmt.Fprintln(w, config)
	}
	fmt.Fprintln(w, "Done listing uptime checks")
	return nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';

const request = {
  parent: client.projectPath(projectId),
};

// Retrieves an uptime check config
const [uptimeCheckConfigs] = await client.listUptimeCheckConfigs(request);

uptimeCheckConfigs.forEach(uptimeCheckConfig => {
  console.log(`ID: ${uptimeCheckConfig.name}`);
  console.log(`  Display Name: ${uptimeCheckConfig.displayName}`);
  console.log(`  Resource: %j`, uptimeCheckConfig.monitoredResource);
  console.log(`  Period: %j`, uptimeCheckConfig.period);
  console.log(`  Timeout: %j`, uptimeCheckConfig.timeout);
  console.log(`  Check type: ${uptimeCheckConfig.check_request_type}`);
  console.log(
    `  Check: %j`,
    uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
  );
  console.log(
    `  Content matchers: ${uptimeCheckConfig.contentMatchers
      .map(matcher => matcher.content)
      .join(', ')}`
  );
  console.log(`  Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);
});

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * list_uptime_checks($projectId);
 * ```
 */
function list_uptime_checks($projectId)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $pages = $uptimeCheckClient->listUptimeCheckConfigs(
        $uptimeCheckClient->projectName($projectId)
    );

    foreach ($pages->iteratePages() as $page) {
        foreach ($page as $uptimeCheck) {
            print($uptimeCheck->getName() . PHP_EOL);
        }
    }
}

Python

def list_uptime_check_configs(project_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    configs = client.list_uptime_check_configs(project_name)

    for config in configs:
        pprint.pprint(config)

Ruby

def list_uptime_check_configs project_id
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  project_name = Google::Cloud::Monitoring::V3::UptimeCheckServiceClient.project_path project_id
  configs = client.list_uptime_check_configs project_name

  configs.each { |config| puts config.name }
end

Sie können auch eine einzelne Verfügbarkeitsdiagnose abrufen:

C#

public static object GetUptimeCheckConfig(string configName)
{
    var client = UptimeCheckServiceClient.Create();
    UptimeCheckConfig config = client.GetUptimeCheckConfig(configName);
    if (config == null)
    {
        Console.Error.WriteLine(
            "No configuration found with the name {0}", configName);
        return -1;
    }
    Console.WriteLine("Name: {0}", config.Name);
    Console.WriteLine("Display Name: {0}", config.DisplayName);
    Console.WriteLine("Http Path: {0}", config.HttpCheck.Path);
    return 0;
}

Java

private static void getUptimeCheckConfig(String projectId, String checkName) throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    String fullCheckName = UptimeCheckConfigName.format(projectId, checkName);
    UptimeCheckConfig config = client.getUptimeCheckConfig(fullCheckName);
    if (config != null) {
      System.out.println(config.toString());
    } else {
      System.out.println(
          "No uptime check config found with name " + checkName + " in project " + projectId);
    }
  } catch (Exception e) {
    usage("Exception getting uptime check: " + e.toString());
    throw e;
  }
}

Go


// get is an example of getting an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func get(w io.Writer, resourceName string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.GetUptimeCheckConfigRequest{
		Name: resourceName,
	}
	config, err := client.GetUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Config: %v", config)
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.uptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Retrieving ${request.name}`);

// Retrieves an uptime check config
const [uptimeCheckConfig] = await client.getUptimeCheckConfig(request);
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log(`Resource: %j`, uptimeCheckConfig.monitoredResource);
console.log(`Period: %j`, uptimeCheckConfig.period);
console.log(`Timeout: %j`, uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  `Check: %j`,
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * get_uptime_check($projectId, $configName);
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $configName
 */
function get_uptime_check($projectId, $configName)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($configName);

    print('Retrieved an uptime check:' . PHP_EOL);
    print($uptimeCheck->serializeToJsonString() . PHP_EOL);
}

Python

def get_uptime_check_config(config_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    config = client.get_uptime_check_config(config_name)
    pprint.pprint(config)

Ruby

def get_uptime_check_config config_name
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  config = client.get_uptime_check_config config_name
  pp config.to_h
  config
end

Verfügbarkeitsdiagnosen bearbeiten

Gehen Sie zum Bearbeiten einer Verfügbarkeitsdiagnose so vor:

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Wählen Sie Verfügbarkeitsdiagnosen aus und wählen Sie dann Verfügbarkeitsdiagnosen-Übersicht aus.

  3. Klicken Sie unter Verfügbarkeitsdiagnosen-Übersicht im Menü rechts neben der Zusammenfassung Ihrer Verfügbarkeitsdiagnose auf Bearbeiten.

  4. Ändern Sie die Werte der Felder nach Bedarf. Sie können nicht alle Felder ändern. Wenn die benutzerdefinierten Headerwerte einer Diagnose ausgeblendet sind, können sie nicht sichtbar gemacht werden.

  5. Klicken Sie auf Testen, um zu prüfen, ob die Diagnose erfolgreich war. Wenn der Test fehlschlägt, können Sie dem Abschnitt Diagnose fehlgeschlagen mögliche Ursachen entnehmen.

  6. Klicken Sie auf Speichern.

API

Rufen Sie die Methode projects.uptimeCheckConfigs.patch auf. Legen Sie die Parameter der Methode so fest:

  • uptimeCheckConfig.name: Erforderlich. Dies ist Teil der REST-URL. Dies ist der Ressourcenname der zu bearbeitenden Verfügbarkeitsdiagnose:

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    Sie können die [UPTIME_CHECK_ID] aus der Antwort der Methode create oder list abrufen. Die ID wird nicht in der Stackdriver Monitoring-Konsole angezeigt.

  • updateMask: Optional. Dies ist ein Abfrageparameter: ?updateMask=[FIELD_LIST]. [FIELD_LIST] ist eine durch Kommas getrennte Liste von Feldern im Objekt UptimeCheckConfig, die geändert werden sollte. Beispiel:

    "resource.type,httpCheck.path"
    
  • Der Anfragetext muss das Objekt UptimeCheckConfig mit den neuen Feldwerten enthalten.

Wenn updateMask festgelegt ist, ersetzen nur die in updateMask aufgelisteten Felder die entsprechenden Felder in der vorhandenen Konfiguration. Wenn ein Feld untergeordnete Felder hat und das Feld in der Feldmaske aufgeführt ist, aber keines seiner Unterfelder, dann ersetzen alle Unterfelder dieses Feldes die entsprechenden Felder.

Wenn updateMask nicht festgelegt ist, ersetzt die Konfiguration im Anfragetext die gesamte vorhandene Konfiguration.

Die Methode patch gibt das Objekt UptimeCheckConfig für die geänderte Konfiguration zurück.

C#

public static object UpdateUptimeCheck(string configName,
    string newHttpPath, string newDisplayName)
{
    var client = UptimeCheckServiceClient.Create();
    var config = client.GetUptimeCheckConfig(configName);
    var fieldMask = new FieldMask();
    if (newDisplayName != null)
    {
        config.DisplayName = newDisplayName;
        fieldMask.Paths.Add("display_name");
    }
    if (newHttpPath != null)
    {
        config.HttpCheck.Path = newHttpPath;
        fieldMask.Paths.Add("http_check.path");
    }
    client.UpdateUptimeCheckConfig(config);
    return 0;
}

Java

private static void updateUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  String fullCheckName = UptimeCheckConfigName.format(projectId, displayName);

  UpdateUptimeCheckConfigRequest request = UpdateUptimeCheckConfigRequest
      .newBuilder()
      .setUpdateMask(FieldMask
          .newBuilder()
          .addPaths("http_check.path"))
      .setUptimeCheckConfig(UptimeCheckConfig
          .newBuilder()
          .setName(fullCheckName)
          .setMonitoredResource(MonitoredResource
              .newBuilder()
              .setType("uptime_url")
              .putLabels("host", hostName))
          .setHttpCheck(HttpCheck
              .newBuilder()
              .setPath(pathName)
              .setPort(80))
          .setTimeout(Duration.newBuilder().setSeconds(10))
          .setPeriod(Duration.newBuilder().setSeconds(300)))
      .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.updateUptimeCheckConfig(request);
    System.out.println("Uptime check updated: \n" + config.toString());
  } catch (Exception e) {
    usage("Exception updating uptime check: " + e.toString());
    throw e;
  }
}

Go


// update is an example of updating an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func update(w io.Writer, resourceName, displayName, httpCheckPath string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	getReq := &monitoringpb.GetUptimeCheckConfigRequest{
		Name: resourceName,
	}
	config, err := client.GetUptimeCheckConfig(ctx, getReq)
	if err != nil {
		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
	}
	config.DisplayName = displayName
	config.GetHttpCheck().Path = httpCheckPath
	req := &monitoringpb.UpdateUptimeCheckConfigRequest{
		UpdateMask: &field_mask.FieldMask{
			Paths: []string{"display_name", "http_check.path"},
		},
		UptimeCheckConfig: config,
	}
	config, err = client.UpdateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("UpdateUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully updated %v", resourceName)
	return config, nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';
// const displayName = 'A New Display Name';
// const path = '/some/path';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.uptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Updating ${request.name} to ${displayName}`);

// Updates the display name and path on an uptime check config
request.uptimeCheckConfig = {
  name: request.name,
  displayName: displayName,
  httpCheck: {path: path},
};

request.updateMask = {paths: ['display_name', 'http_check.path']};

const [response] = await client.updateUptimeCheckConfig(request);
console.log(`${response.name} config updated.`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Protobuf\FieldMask;

/**
 * Example:
 * ```
 * update_uptime_checks($projectId);
 * ```
 */
function update_uptime_checks($projectId, $configName, $newDisplayName = null, $newHttpCheckPath = null)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($displayName);
    $fieldMask = new FieldMask();
    if ($newDisplayName) {
        $fieldMask->getPaths()[] = 'display_name';
        $uptimeCheck->setDisplayName($newDisplayName);
    }
    if ($newHttpCheckPath) {
        $fieldMask->getPaths()[] = 'http_check.path';
        $uptimeCheck->getHttpCheck()->setPath($newHttpCheckPath);
    }

    $uptimeCheckClient->updateUptimeCheckConfig($uptimeCheck, $fieldMask);

    print($uptimeCheck->serializeToString() . PHP_EOL);
}

Python

def update_uptime_check_config(config_name, new_display_name=None,
                               new_http_check_path=None):
    client = monitoring_v3.UptimeCheckServiceClient()
    config = client.get_uptime_check_config(config_name)
    field_mask = monitoring_v3.types.FieldMask()
    if new_display_name:
        field_mask.paths.append('display_name')
        config.display_name = new_display_name
    if new_http_check_path:
        field_mask.paths.append('http_check.path')
        config.http_check.path = new_http_check_path
    client.update_uptime_check_config(config, field_mask)

Ruby

def update_uptime_check_config config_name: nil, new_display_name: nil, new_http_check_path: nil
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  config = { name: config_name }
  field_mask = { paths: [] }
  unless new_display_name.to_s.empty?
    field_mask[:paths].push "display_name"
    config[:display_name] = new_display_name
  end
  unless new_http_check_path.to_s.empty?
    field_mask[:paths].push "http_check.path"
    config[:http_check] = { path: new_http_check_path }
  end
  client.update_uptime_check_config config, update_mask: field_mask
end

Es kann bis zu 5 Minuten dauern, bis die Ergebnisse der neuen Verfügbarkeitsdiagnose angezeigt werden. Bis dahin werden die Ergebnisse der vorherigen Verfügbarkeitsdiagnose in den Dashboards angezeigt und in Benachrichtigungsrichtlinien verwendet.

Verfügbarkeitsdiagnosen löschen

Bevor Sie eine Verfügbarkeitsdiagnose löschen, entfernen Sie diese aus allen Benachrichtigungsrichtlinien, in denen die Diagnose verwendet wird. Wenn Sie die Verfügbarkeitsdiagnose nicht entfernen, können Sie sie nicht über die Monitoring-Konsole löschen. Wenn Sie die Verfügbarkeitsdiagnose über die API löschen, ignoriert die Benachrichtigungsrichtlinie die fehlende Verfügbarkeitsdiagnose. Die Richtlinie erstellt keinen Vorfall für die fehlende Diagnose.

Gehen Sie zum Löschen einer Verfügbarkeitsdiagnose so vor:

Console

  1. Wählen Sie in der Cloud Console Monitoring aus:

    Zu Monitoring

  2. Wählen Sie Verfügbarkeitsdiagnosen > Verfügbarkeitsdiagnosen-Übersicht aus.

  3. Klicken Sie unter Verfügbarkeitsdiagnosen-Übersicht im Menü rechts neben der Zusammenfassung Ihrer Verfügbarkeitsdiagnose auf Löschen.

API

Rufen Sie die Methode projects.uptimeCheckConfigs.delete auf. Legen Sie den Parameter so fest:

  • name: Erforderlich. Dies ist der Ressourcenname der zu löschenden Verfügbarkeitsdiagnose.

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
    

    Sie können die [UPTIME_CHECK_ID] aus der Antwort der Methode create oder list abrufen. Die ID wird nicht in der Stackdriver Monitoring-Konsole angezeigt.

C#

public static object DeleteUptimeCheckConfig(string configName)
{
    var client = UptimeCheckServiceClient.Create();
    client.DeleteUptimeCheckConfig(configName);
    Console.WriteLine($"Deleted {configName}");
    return 0;
}

Java

private static void deleteUptimeCheckConfig(String projectId, String checkName)
    throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    client.deleteUptimeCheckConfig(UptimeCheckConfigName.format(projectId, checkName));
  } catch (Exception e) {
    usage("Exception deleting uptime check: " + e.toString());
    throw e;
  }
}

Go


// delete is an example of deleting an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func delete(w io.Writer, resourceName string) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.DeleteUptimeCheckConfigRequest{
		Name: resourceName,
	}
	if err := client.DeleteUptimeCheckConfig(ctx, req); err != nil {
		return fmt.Errorf("DeleteUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully deleted %q", resourceName)
	return nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.uptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Deleting ${request.name}`);

// Delete an uptime check config
await client.deleteUptimeCheckConfig(request);
console.log(`${request.name} deleted.`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * delete_uptime_check($projectId, $configName);
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $configName
 */
function delete_uptime_check($projectId, $configName)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheckClient->deleteUptimeCheckConfig($configName);

    printf('Deleted an uptime check: ' . $configName . PHP_EOL);
}

Python

def delete_uptime_check_config(config_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    client.delete_uptime_check_config(config_name)
    print('Deleted ', config_name)

Ruby

def delete_uptime_check_config config_name
  require "google/cloud/monitoring/v3"

  client = Google::Cloud::Monitoring::V3::UptimeCheck.new
  client.delete_uptime_check_config config_name
  puts "Deleted #{config_name}"
end