Nginx

如何對沒有外部 IP(私有網站)的實例實施 Cloud Monitoring Uptime 檢查

  • May 15, 2020

Cloud Monitoring 正常執行時間檢查允許使用者向資源發送請求以查看它是否響應。

由於檢查是在 Google Cloud 基礎架構之外執行的,因此需要一個外部 ip

有沒有辦法對沒有公共 IP 的網站(http 請求)實施正常執行時間檢查?

TL;DR:是的,通過使用具有外部 IP 的堡壘主機可以查詢到達內部站點並使用代理(NGINX、SquidProxy 等)將您的健康檢查請求從外部服務傳遞到您的內部站點。

你需要什麼:

  1. 在您的私有VMS的同一VPC中具有外部 IP 的虛擬機(沒有公共 IP 的虛擬機)。
  2. 具有外部 IP 的虛擬機(現在稱為探測虛擬機)與託管您的內部網站的虛擬機之間的通信。
  3. (可選,但強烈推薦)您的網站應該有一個健康檢查網頁。如果站點和系統正常並且最好是身份驗證保護,則此頁面應返回 200。

過程:

  1. 在您的內部網站所在的同一 VPC 中創建一個 VM。您可以創建執行您喜歡的 linux 發行版的基本 linux VM 。VM 的大小可以是n1-standard-1e2-standard-2,大小實際上取決於您要監控的站點數量。您可能需要根據需要調整 VM 的大小。
  2. 允許您的探測虛擬機與託管您站點的內部虛擬機之間進行通信。建議您只允許內部站點使用的埠。
  3. 限製到您的探測虛擬機的所有流量,以避免任何類型的數據洩漏。使用Google云防火牆來實現這一點。(注意:不要忘記將您的 IP 列入埠 22 的白名單,以便管理您的探測虛擬機)
  4. 允許 HTTP(埠 80)流量到您的探測虛擬機Cloud Monitoring ips
  5. 在你的探針 vm上安裝NGINX Opensource

如果您想跳過安裝過程,您可以選擇使用NGINX PLUS並使用Google Cloud MarketPlace進行安裝

你也可以使用NGINX Docker 容器來完成這個任務。

  1. 將 NGINX配置為反向代理
  2. 在 Cloud Monitoring 中創建正常執行時間檢查。

關於如何配置 nginx 的一些提示和技巧

當您按照 NGINX 的說明安裝 NGINX 時,您將在該過程結束時獲得功能正常的 NGINX。但是您可能需要額外的配置才能實現目標。

  1. 修改文件/etc/nginx/conf.d/default.conf以響應任何不包含有效 HOST 標頭的請求的 404:
server {
   listen       80 default;
   location / {
       return 404;
   }
}
  1. /etc/nginx/conf.d/在目錄下為您要監控的每個站點創建一個配置文件。即/etc/nginx/conf.d/finance-sites.conf。不要忘記 .conf 終止。
  2. 為您要監控的每個站點設置一個虛假主機,並且不要忘記在Stackdriver Monitoring中設置主機標頭。
  3. 每次更改配置時不要忘記檢查語法nginx -t並重新載入配置。nginx -s reload

引用自:https://serverfault.com/questions/1017243