List uptime-check server IP addresses

This document shows you how to get a list of IP addresses used by uptime-check servers, and how you can identify traffic from the uptime-check servers in your logs.

List IP addresses

When you're checking a service that is behind a firewall, you can configure your service's firewall to accept traffic from the current set of IP addresses used for uptime checking. To get these IP addresses, use the following instructions:

Console

  1. In the Google Cloud console, go to the Uptime checks page:

    Go to Uptime checks

    If you use the search bar to find this page, then select the result whose subheading is Monitoring .

  2. In the toolbar of the Google Cloud console, select your Google Cloud project. For App Hub configurations, select the App Hub host project or the app-enabled folder's management project.
  3. In the Uptime checksmenu, click Download. A file uptime-source-ips.txt is downloaded and contains the IP addresses.

gcloud

Run the gcloud monitoring uptime list-ips command:

 gcloud  
monitoring  
uptime  
list-ips 

The method returns the following information for each IP address:

  • The IP address, not a range, in IPv4 or IPv6 format.
  • The region: USA , EUROPE , SOUTH_AMERICA , or ASIA_PACIFIC .
  • The location within the region.

API

Call the uptimeCheckIps.list method of the Monitoring API.

The method returns the following information for each IP address:

  • The region: USA , EUROPE , SOUTH_AMERICA , or ASIA_PACIFIC .
  • A more specific location within the region.
  • The IP address, not a range, in IPv4 or IPv6 format.

C#

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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 
 ); 
  
 } 
  
 re 
 
turn  
 0 
 ; 
 } 

Java

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  // 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 c 
 
heck IPs" ) 
  
 return 
  
 nil 
 } 

Node.js

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  // Imports the Google Cloud client library 
 const 
  
 monitoring 
  
 = 
  
 require 
 ( 
 & #39;@google-cloud/monito 
ring' 
 ); 
 // Creates a client 
 const 
  
 client 
  
 = 
  
 new 
  
 mon itoring 
 
 . 
 UptimeCheckServiceClient 
 (); 
 // List uptime check IPs 
 const 
  
 [ 
 uptimeCheckIps 
 ] 
  
 = 
  
 await 
  
 client 
 . 
 listUptimeCheckIps 
 (); 
 uptimeCheckIps 
 . 
 forEach 
 ( 
 uptimeC>heckIp 
  
 = 
  
 { 
  
 console 
 . 
 log 
 ( 
  
 uptimeCheckIp 
 . 
 region 
 , 
  
 uptimeCheckIp 
 . 
 location 
 , 
  
 uptimeCheckIp 
 . 
 ipAddress 
  
 
 ); 
 }); 

PHP

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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([ 
 'projectI>d' = $projectId, 
 ]); 
 $listUptimeCheckIpsRequest = new ListUptimeCheckIpsRequest(); 
 $pages = $uptimeChec>kClient-listUptimeCheckIps($listUptimeCheckIpsRequest); 
 foreach >($pages-iteratePages() as $page) { 
 $ips >= $page-getResponseO>bject()-getUptimeCheckIps(); 
 foreach ($ips as $ip) { 
 printf( 
 'ip address: %s, region: %s, location: %s' . PHP_EOL, 
 >            $ip-getIpAddress(), 
 >            $ip-getRegion(), 
 >            $ip-getLocation() 
 ); 
  
 
} } 
 } 

Python

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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

To authenticate to Monitoring, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  gem 
  
 "google-cloud-monitoring" 
 require 
  
 "google/cloud/monitoring" 
 def 
  
 list_ips 
  
 clie nt 
 
  
 = 
  
 Google 
  :: 
 Cloud 
 :: 
 Monitoring 
 . 
 
 uptime_check_service 
  
 # Iterate over all results. 
  
 client 
 . 
 list_uptime_check_ips 
 ({}) 
 . 
 each 
  
 do 
  
 | 
 element 
 | 
  
 puts 
  
 " 
 #{ 
 ele ment 
 
 . 
 location 
 } 
  
 #{ 
 eleme 
 
nt . 
 ip_address 
 } 
 " 
  
 end 
 end 

Uptime checks can come from any of the IP addresses, but only one address from each geographic location is used for each time interval. The geographic locations are listed in the uptime checks dashboard, as shown in the previous section. You can also use free, web-based services to identify the registered locations of the IP addresses you downloaded.

Identify uptime-check traffic in logs

You can identify requests from the uptime-check servers by the following information in your service's request logs :

  • ip: The ip field contains one of the addresses used by the uptime-check servers. For information about how to list all IP addresses, see List IP addresses .
  • User-Agent: The User-Agent header value is always the following:

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

    Specifying a User-Agent custom header results in a form validation error and prevents the check configuration from being saved.

What's next

Create a Mobile Website
View Site in Mobile | Classic
Share by: