רשימת כתובות ה-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, מוצגת שגיאת אימות של הטופס ולא ניתן לשמור את הגדרות הבדיקה.

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