当您的网站出现故障时如何使用Geekflare API收到通知?
用户试图访问您的网站,你知道发生了什么吗?它没有显示出来。在此之前,有一些错误您没有找出来。用户感到沮丧并离开您的网站。因此,您失去了一些忠实的用户。
如何解决这个问题?如何在用户发现之前得知网站崩溃了?
有两种可能的方法:
如果您不介意花费一些钱,可以选择像StatusCake或其他mentioned here这样的监控解决方案。
然而,如果您是开发人员或者不打算每月花费,您可以利用Geekflare API – Is Site Up?
“Is Site Up?” API可以检查网站在不同位置是否正常。
让我展示给您一段Python代码,以通过Gmail立即通知您网站崩溃的情况。
让我们从探索“Is Site Up?” API开始。
“Is Site Up?” API
在检查API之前,我们需要安装一个叫做requests的包,以便在Python中使用API。但是,您不仅仅可以使用Python。您可以使用您喜欢的语言。但是请确保您设置了必要的内容来发出API请求。
所以,对于那些想要安装requests包的人(如果您选择的不是Python),请使用命令pip install requests
完成其他语言的设置,并继续下一步。
现在,转到Geekflare API页面。

您可以找到不同类型的API,包括我们在本文中感兴趣的“Is Site Up?” API。要使用Geekflare API,我们需要一个API Key,我们可以通过注册Geekflare API来获得。
点击头部的Sign Up Free按钮,并在Geekflare API上创建一个帐户。

创建帐户后,您将被重定向到dashboard of Geekflare API。在仪表板中,您将找到API密钥和其他详细信息,如您的电子邮件、活跃计划等。

您可以复制API密钥。现在,让我们来检查一下Is Site Up API的文档。点击您的个人资料图标和文档。

它将重定向您到Geekflare API的文档。
您将在右侧找到Site status (Is Site Up?) API文档here。转到它。
您将在右侧的Code Snippets部分选择Python。如果您使用其他语言,请选择您喜欢的语言。
您将获得调用“Is Site Up?” API的代码。我们稍微修改一下,以便以后可以轻松添加更多代码。看一下在Python中修改后的代码。
import requests
import json
API_URL = "https://api.yaoweibin.com/up"
def make_api_request():
headers = {
'x-api-key': 'YOUR-API-KEY',
'Content-Type': 'application/json'
}
payload = json.dumps({"url": "https://yaoweibin.cn"})
response = requests.request("POST", API_URL, data=payload, headers=headers)
return response.json()
if __name__ == '__main__':
data = make_api_request()
print(data)
将YOUR-API-KEY替换为您来自Geekflare API仪表板的API密钥。每个用户的API密钥都是不同的。从仪表板上复制API密钥并将其添加到上述代码中
多地点检测
上述代码只从一个地点(美国纽约)检查网站是否正常。但是,我们可以使用请求主体中的proxyCountry从不同的位置进行测试。
其他可用的位置有英格兰(伦敦)和新加坡。我们可以将proxyCountry数据与网站URL一起传递,如下所示。
{
"proxyCountry": "uk",
"url": "yaoweibin.com"
}
您可以从available locations here中选择您喜欢的任何位置。
我们已经完成了用于获取网站是否正常工作的API请求的代码。现在,是时候编写一些代码,在网站失效时发送电子邮件了。我们开始吧。
当网站失效时接收电子邮件
您可以在链接_8中找到如何通过Gmail发送电子邮件的详细教程。或者使用以下代码,该代码使用一个名为yagmail的包专门用于从Gmail发送电子邮件。
在通过Gmail帐户发送邮件之前,我们必须打开“允许不安全的应用程序”选项。您可以在链接_9中打开它。
让我们看看代码。
“`python
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,
)
“`
您可以在链接_10中找到yagmail的完整教程。
现在,我们已经有了用于API请求和发送邮件的代码。我们的下一步是在从API请求接收到错误状态时调用send_mail。
那么,我们如何知道我们的网站是故障还是正常运行?当我们请求“网站是否正常?”API时,它将用以下数据响应。
“`python
{
“timestamp”: 1671545622213,
“apiStatus”: “success”,
“apiCode”: 200,
“message”: “Site is up.”,
“meta”: {
“url”: “https://yaoweibin.cn”,
“proxyCountry”: “United Kingdom”,
“followRedirect”: false,
“test”: {
“id”: “riah3dvi04ngaa1jw1b75smiibrus2a7”
}
},
“data”: {
“statusCode”: 200,
“reasonPhrase”: “OK”
}
}
“`
您将在其中找到一个名为message的键。键message的值告诉我们网站是正常还是故障。因此,可以有两种类型的消息,如下所示。
– 网站正常运行。
– 网站已故障。
我想你现在明白了。因此,当我们收到消息“网站已故障”时,我们将发送邮件。最终的代码如下所示。
“`python
import requests
import json
import yagmail
API_URL = “https://api.yaoweibin.com/up”
def make_api_request():
headers = {
‘x-api-key': ‘YOUR-API-KEY',
‘Content-Type': ‘application/json'
}
payload = json.dumps({
“url”: “https://yaoweibin.cn”,
“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来自动执行我们的代码。让我们看看如何设置它。
Cron设置
让我们看看在基于UNIX的操作系统上设置cron的步骤。
- 打开终端。
- 运行命令
crontab -e
,它会在终端中打开crontab文件。 - 按下键
i
进入插入模式。 - 现在,添加cron模式、Python目录和我们的代码文件目录。您可以在下面看到示例。
0 * * * * /usr/bin/python3 /home/sample.py

我们已经设置了每小时执行代码的模式。但根据要求,您可能需要将其设置为每分钟执行。因此,您可以使用链接或其他来生成计划的cron模式。
就是这样。我们已经完成了在站点宕机时收到通知的设置。
结论
使用cron来调度脚本在您的上定期运行,以在站点宕机时通过电子邮件收到通知。自动化节省了大量时间并为我们工作。所以,像我们在本文中所做的那样充分利用它。
Happy Monitoring 🙂