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