如何使用 Geekflare API 在您的網站出現故障時收到通知?
已發表: 2021-08-22用戶嘗試訪問您的站點,您知道發生了什麼嗎? 它沒有出現。 有些錯誤是您之前沒有弄清楚的。 用戶感到沮喪並離開您的網站。 所以,你失去了一些忠實的用戶。
如何解決這個問題呢? 您如何在用戶找到網站之前了解該網站?
有兩種可能的方法:
如果您不介意花幾美元,您可以選擇 StatusCake 或此處提到的其他監控解決方案。
但是,如果您是開發人員或不准備按月付費,則可以利用 Geekflare API – Is Site Up?
網站上線了嗎? API 從不同的位置檢查站點是啟動還是關閉。
讓我向您展示 Python 代碼,當您的網站通過Gmail出現故障時,它會立即通知您。
讓我們從探索Is Site Up? 應用程序接口。
網站上線了嗎? 應用程序接口
在檢查 API 之前,我們需要安裝一個名為 requests 的包,以便在 Python 中使用 API。 但是,沒有必要只使用 Python。 您可以使用您喜歡的語言。 但請確保您設置了發出 API 請求所需的內容。
因此,對於那些使用 Python 的人,使用命令pip install requests
請求包
完成其他語言的設置(如果您選擇 Python 以外的語言)並繼續執行後續步驟。
現在,轉到 Geekflare API 頁面。
您可以找到不同類型的 API,包括 Is Site Up? API,我們對本文感興趣。 要使用 Geekflare API,我們需要一個 API 密鑰,我們可以通過註冊 Geekflare API 獲得該密鑰。
單擊標題上的免費註冊按鈕並在 Geeflare API 中創建一個帳戶。
創建帳戶後,您將被重定向到 Geekflare API 的儀表板。 在儀表板中,您會找到 API 密鑰和其他詳細信息,例如您的電子郵件、活動計劃等。
您可以復制 API 密鑰。 現在,讓我們檢查Is Site Up API 的文檔。 單擊您的個人資料圖標和文檔。
它會將您重定向到 Geeflare API 文檔。
您將在此處找到網站狀態(網站是否正常運行?) API 文檔。 去吧。
您將在右側獲得 API 的用法。 從右側的代碼片段部分選擇 Python。 如果您不使用 Python,請選擇您的首選語言。
您將獲得調用Is Site Up?的代碼。 應用程序接口。 讓我們稍微修改一下,這有助於我們稍後輕鬆添加更多代碼。 看看 Python 中修改後的代碼。
import requests import json API_URL = "https://api.geekflare.com/up" def make_api_request(): headers = { 'x-api-key': 'YOUR-API-KEY', 'Content-Type': 'application/json' } payload = json.dumps({"url": "https://geekflare.com"}) response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data)
在 Geekflare API 儀表板上用您自己的 API 密鑰替換YOUR-API-KEY 。 每個用戶都會有所不同。 從儀表板複製 API 密鑰並將其添加到上面的代碼中
多地點
上面的代碼從一個位置(美國紐約)檢查站點是否正常運行。 但是,我們可以在請求正文中使用proxyCountry從不同的位置對其進行測試。
其他可用地點是英格蘭(倫敦)和新加坡。 我們可以將proxyCountry數據與站點 URL 一起傳遞,如下所示。
{ "proxyCountry": "uk", "url": "geekflare.com" }
您可以從此處的可用位置中選擇您喜歡的任何位置。
我們已經完成了發出 API 請求的代碼,該請求可獲取有關站點是否正常運行的數據。 現在,是時候編寫更多的代碼來在站點關閉時發送郵件了。 我們走吧。
站點關閉時接收電子郵件
您可以找到有關如何在 Python 中通過 Gmail 發送電子郵件的詳細教程,或者使用以下代碼,其中使用了一個名為yagmail的包,該包專門用於從Gmail發送電子郵件。
在通過您的 Gmail 帳戶發送郵件之前,我們必須打開允許安全性較低的應用程序選項。 你可以在這裡打開它。
讓我們看看代碼。
def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "[email protected]" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, )
您可以在此處找到 yagmail 的完整教程。
現在,我們有了 API 請求和發送郵件的代碼。 我們的下一步是在我們從 API 請求收到錯誤狀態時調用send_mail 。
那麼,我們怎麼知道我們的網站是關閉還是打開呢? 當我們請求Is Site Up? API,它會響應一些數據如下。
{ "timestamp": 1671545622213, "apiStatus": "success", "apiCode": 200, "message": "Site is up.", "meta": { "url": "https://geekflare.com", "proxyCountry": "United Kingdom", "followRedirect": false, "test": { "id": "riah3dvi04ngaa1jw1b75smiibrus2a7" } }, "data": { "statusCode": 200, "reasonPhrase": "OK" } }
您會在其中找到一個名為message的鍵。 關鍵消息的值告訴我們站點是運行還是關閉。 因此,可以是如下兩種類型的消息。
- 網站上線了。
- 網站已關閉
我想你現在明白了。 因此,我們將在收到“站點已關閉”消息時發送郵件。 最終代碼如下所示。
import requests import json import yagmail API_URL = "https://api.geekflare.com/up" def make_api_request(): headers = { 'x-api-key': 'YOUR-API-KEY', 'Content-Type': 'application/json' } payload = json.dumps({ "url": "https://geekflare.com", "followRedirect": True, "proxyCountry": "uk" }) response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "[email protected]" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down': ## extracting the location and error location = data['meta']['proxyCountry'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below.nn" if location: mail_content += f"{location}" mail_content += f"{data['data']['reasonPhrase']}nn" mail_content += "Check the error and resolve it as soon as possible." send_mail(mail_content)
您可以根據需要更新郵件內容。 每當我們的站點關閉時,我們都已完成發送郵件。
但是還有一個問題。
我們必須執行我們的代碼來檢查我們的站點是啟動還是關閉。 我們多久運行一次? 是的,這取決於你的喜好。 假設我們必須每小時檢查一次。
我們可以打開一個終端或命令行,每小時執行一次我們的代碼。 但這是一個重複的過程,而且很無聊。 有時我們會忘記檢查它。 所以,我們需要每小時自動執行一次代碼。
在這裡我們可以使用 cron 每小時自動執行我們的代碼。 讓我們看看如何設置它。
計劃設定
讓我們看看在基於 UNIX 的操作系統上設置 cron 的步驟。
- 打開終端。
- 運行命令
crontab -e
以在終端中打開 crontab 文件。 - 按
i
鍵進入 INSERT 模式。 - 現在,添加 cron 模式、Python 目錄和我們的代碼文件目錄。 你看下面的例子。
0 * * * * /usr/bin/python3 /home/sample.py
我們已將模式設置為每小時執行一次代碼。 但您可能需要根據需要將其設置為每分鐘。 因此,您可以使用 Crontab Guru 或其他 cron 工具來生成計劃的 cron 模式。
而已。 我們已完成設置,以便在站點關閉時收到通知。
結論
使用 cron 安排腳本在 24/7 全天候運行的雲服務器上定期運行,以便在站點關閉時通過電子郵件收到通知。 自動化為我們節省了大量時間和工作。 因此,請像我們在本文中所做的那樣使用它。
快樂監控