רשימת כתובות ה-IP של שרתים לבדיקת זמינות

במאמר הזה מוסבר איך מקבלים רשימה של כתובות IP שמשמשות שרתים של בדיקת זמינות, ואיך אפשר לזהות תנועה מהשרתים של בדיקת הזמינות ביומנים.

רשימת כתובות IP

כשבודקים שירות שנמצא מאחורי חומת אש, אפשר להגדיר את חומת האש של השירות כך שתקבל תעבורה ממערך כתובות ה-IP הנוכחי שמשמש לבדיקת זמינות. כדי לקבל את כתובות ה-IP האלה, פועלים לפי ההוראות הבאות:

המסוף

  1. במסוף Google Cloud , עוברים לדף  בדיקת זמני פעילות:

    לדף בדיקת זמני פעילות

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.

  2. בסרגל הכלים של מסוף Google Cloud , בוחרים את Google Cloud הפרויקט. בהגדרות של מרכז האפליקציות, בוחרים את הפרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.
  3. בתפריט בדיקת זמני פעילות, לוחצים על הורדה. קובץ uptime-source-ips.txt יורד וכולל את כתובות ה-IP.

gcloud

מריצים את הפקודה gcloud monitoring uptime list-ips:

gcloud monitoring uptime list-ips

השיטה מחזירה את המידע הבא לכל כתובת IP:

  • כתובת ה-IP, לא טווח, בפורמט IPv4 או IPv6.
  • האזור: USA,‏ EUROPE,‏ SOUTH_AMERICA או ASIA_PACIFIC.
  • המיקום בתוך האזור.

API

מבצעים קריאה ל-method‏ uptimeCheckIps.list של Monitoring API.

השיטה מחזירה את המידע הבא לכל כתובת IP:

  • האזור: USA,‏ EUROPE,‏ SOUTH_AMERICA או ASIA_PACIFIC.
  • מיקום ספציפי יותר באזור.
  • כתובת ה-IP, לא טווח, בפורמט IPv4 או IPv6.

C#

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

public static object ListUptimeCheckIps()
{
    var client = UptimeCheckServiceClient.Create();
    var ips = client.ListUptimeCheckIps(new ListUptimeCheckIpsRequest());
    foreach (UptimeCheckIp ip in ips)
    {
        Console.WriteLine("{0,20} {1}", ip.IpAddress, ip.Location);
    }
    return 0;
}

Java

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

private static void listUptimeCheckIps() throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    ListUptimeCheckIpsPagedResponse response =
        client.listUptimeCheckIps(ListUptimeCheckIpsRequest.newBuilder().build());
    for (UptimeCheckIp config : response.iterateAll()) {
      System.out.println(config.getRegion() + " - " + config.getIpAddress());
    }
  } catch (Exception e) {
    usage("Exception listing uptime IPs: " + e.toString());
    throw e;
  }
}

Go

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.


// listIPs is an example of listing uptime check IPs.
func listIPs(w io.Writer) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %w", err)
	}
	defer client.Close()
	req := &monitoringpb.ListUptimeCheckIpsRequest{}
	it := client.ListUptimeCheckIps(ctx, req)
	for {
		config, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListUptimeCheckIps: %w", err)
		}
		fmt.Fprintln(w, config)
	}
	fmt.Fprintln(w, "Done listing uptime check IPs")
	return nil
}

Node.js

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

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

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

// List uptime check IPs
const [uptimeCheckIps] = await client.listUptimeCheckIps();
uptimeCheckIps.forEach(uptimeCheckIp => {
  console.log(
    uptimeCheckIp.region,
    uptimeCheckIp.location,
    uptimeCheckIp.ipAddress
  );
});

PHP

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

use Google\Cloud\Monitoring\V3\Client\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\ListUptimeCheckIpsRequest;

/**
 * Example:
 * ```
 * list_uptime_check_ips($projectId);
 * ```
 */
function list_uptime_check_ips(string $projectId): void
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);
    $listUptimeCheckIpsRequest = new ListUptimeCheckIpsRequest();

    $pages = $uptimeCheckClient->listUptimeCheckIps($listUptimeCheckIpsRequest);

    foreach ($pages->iteratePages() as $page) {
        $ips = $page->getResponseObject()->getUptimeCheckIps();
        foreach ($ips as $ip) {
            printf(
                'ip address: %s, region: %s, location: %s' . PHP_EOL,
                $ip->getIpAddress(),
                $ip->getRegion(),
                $ip->getLocation()
            );
        }
    }
}

Python

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

def list_uptime_check_ips() -> pagers.ListUptimeCheckIpsPager:
    """Gets all locations and IP addresses used by uptime check servers

    Returns:
        A list of locations and IP addresses of uptime check servers.
        Iterating over this object will yield results and resolve additional pages automatically.
    """
    client = monitoring_v3.UptimeCheckServiceClient()
    ips = client.list_uptime_check_ips(request={})
    print(
        tabulate.tabulate(
            [(ip.region, ip.location, ip.ip_address) for ip in ips],
            ("region", "location", "ip_address"),
        )
    )
    return ips

Ruby

כדי לבצע אימות ב-Monitoring, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

gem "google-cloud-monitoring"
require "google/cloud/monitoring"

def list_ips
  client = Google::Cloud::Monitoring.uptime_check_service

  # Iterate over all results.
  client.list_uptime_check_ips({}).each do |element|
    puts "#{element.location} #{element.ip_address}"
  end
end

הבדיקות של זמן הפעולה הרציפה יכולות להגיע מכל אחת מכתובות ה-IP, אבל רק כתובת אחת מכל מיקום גיאוגרפי משמשת לכל מרווח זמן. המיקומים הגיאוגרפיים מפורטים בלוח הבקרה של בדיקות זמן הפעולה הרציפה, כמו שמוצג בקטע הקודם. אפשר גם להשתמש בשירותים חינמיים מבוססי-אינטרנט כדי לזהות את המיקומים הרשומים של כתובות ה-IP שהורדתם.

זיהוי תנועה של בדיקות זמינות ביומנים

אפשר לזהות בקשות משרתי בדיקת הזמינות לפי המידע הבא ביומני הבקשות של השירות:

  • ip: השדה ip מכיל אחת מהכתובות שמשמשות את השרתים של בדיקת הזמינות. למידע על הצגת רשימה של כל כתובות ה-IP, אפשר לעיין במאמר הצגת רשימת כתובות IP.
  • User-Agent: ערך הכותרת User-Agent הוא תמיד:

    GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
    

    אם מציינים כותרת מותאמת אישית User-Agent, מוצגת שגיאה באימות הטופס והגדרות הבדיקה לא נשמרות.

המאמרים הבאים