IT筆記:使用Google Apps Script 監察網站狀況

參考了這個網站( Spreadsheet Dev )的文章,使用 Google Sheet 和改動了一些 Google Apps Script程式碼,用來監察網站的服務是否正常。

步驟如下 : 

創建一個 Google 表格電子表格來跟踪網站隨時間的狀態

登錄谷歌賬戶並在瀏覽器輸入 https://spreadsheet.new 來創建新的 Google Sheet

將新的試算表命名為 Web Monitor 並加上四個欄位 "Url " , "Date", "Status", "Load time"


在Google試算表菜單選擇「擴充功能」,Apps Script。



重新命名專案命名為 web monitor 20221216,並創建兩個分別命名為 checkWebsiteStatus 及 SetTimeTrigger的 Google Script。


輸入需要監察網站的地址url及接收電郵的帳戶。

function checkWebsiteStatus() {
  let url = "https://www.abovethcloud.com/";

  // Record time so we can track how long the website
  // takes to load.
  let start = new Date();
  let response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  let end = new Date();

  let responseCode = response.getResponseCode();
  let loadTimeMs = end - start;

  // Record a log of the website's status to the spreadsheet.
  SpreadsheetApp.getActive().getSheetByName("Data").appendRow([url, start, responseCode, loadTimeMs]);

  // Send email notification if 
  if(response.getResponseCode() != 200) {
    let email = "xxxxxx@yahoo.com.hk";
    let subject = "[ACTION REQUIRED] Website may be down - " + new Date();
    let body = `The URL ${url} may be down. Expected response code 200 but got ${responseCode} instead.`;
    MailApp.sendEmail(email, subject,body);
  }
}





function setUpTrigger() {
  let triggers = ScriptApp.getProjectTriggers();

  // Do not set up a duplicate trigger
  if(triggers.length > 0) {
    return;
  }

  // Set up a time based trigger to check status every
  // four hours.
  ScriptApp.newTrigger("checkWebsiteStatus")
    .timeBased()
    .everyMinutes(1)
    .create();
}

網站的監測頻率亦可以通過修改.everyMinutes(1)這個參數而更改,範例中.everyMinutes(1)的設定為每一分鐘檢測一次,如果將改變為.everyMinutes(5),檢測的頻率會變為五分鐘一次。
其他設定 Time-Based Trigger 的方式還可以使用everyHours(n) ,everyDays(n) ,everyWeeks(n) 將更新時間頻率轉變為小時、日及星期等。

使用.veryMinutes(1)這個參數,監察數據會每分鐘更新一次並寫入google sheet。



數據的更新頻率亦可手動編輯「web monitor 20221216」觸發條件設置。



以時間觸發:將數據更新頻率改為每10分鐘一次

經手動更改設定後,Google Sheet 內容更新頻率改為每10分鐘一次。




用以表示網頁伺服器超文字傳輸協定響應狀態的3位數字代碼(HTTP狀態碼),當 status的數值等於200時,代表請求已成功被伺服器接收、理解、並接受。

利用HTTP狀態碼傳回值,可以進一步加強Apps Script功能,當 status的數值不等於等於200時,系統就會即時寄出電子郵件通知,藉由email的通知,便可以確切得知網站的即時狀況。









Comments

Popular posts from this blog

旅遊筆記 : 吉隆坡前往檳城交通方式及網上購買馬來西亞KTM火車票教學

旅遊筆記 : 馬來西亞電動 Platinum ETS 列車初體驗

日本行山:善用免費資源規劃行程 YAMAP 應用篇 (3)