官方网站建设审批手续,国内特效比漂亮的网站,郑州建网站的公司,虹口建设机械网站在现代的互联网世界中#xff0c;网站的可用性对于业务的成功至关重要。如果您是一个网站管理员或负责监控网站运行状况的工程师#xff0c;那么您知道及时发现并解决问题对于确保用户满意度至关重要。如何使用 Bash 脚本来监控多个网站的可用性#xff0c;并在网站出现问题…在现代的互联网世界中网站的可用性对于业务的成功至关重要。如果您是一个网站管理员或负责监控网站运行状况的工程师那么您知道及时发现并解决问题对于确保用户满意度至关重要。如何使用 Bash 脚本来监控多个网站的可用性并在网站出现问题时自动发送通知
背景
在项目中我们使用了 Rails 框架Nginx 作为代理服务器实现了前后端分离的架构共有 6 个网站。为了及时发现这些网站的可用性问题曾考虑使用 UptimeRobot这是一个免费且简单易用的监控工具。然而由于 UptimeRobot 的报警通知功能限制只能通知注册账号的人无法邀请团队成员这让我们感到不便。因此决定自己编写一个监控脚本
基本功能
监控脚本需要实现以下基本功能
当网站出现故障时发送通知。当网站首次成功启动并处于正常运行状态时发送通知。在连续检查中如果服务一直保持正常状态不发送重复通知。
#!/bin/bash# 定义要监视的网站列表
websites(https://dev.1.com https://dev.2.com https://dev.1.com)# 定义Feishu机器人的Webhook URL
webhook_urlxxxxxxxxx# 函数发送消息到 Feishu 机器人
send_message_to_feishu() {local website$1local status$2# 构建要发送的消息messageMonitor is $status: $website 监控时间: $(date %Y-%m-%d %H:%M:%S)echo $message# 发送消息到 Feishu 机器人curl -X POST \$webhook_url \-H Content-Type: application/json \-d {msg_type: post,content: {post: {zh_cn: {title: Monitor - 服务告警,content: [[{tag: text,text: $message},{tag: at,user_id: all}]]}}}
}
}# 文件夹用于存储状态文件
status_folderstatus_files# 创建状态文件夹如果不存在
mkdir -p $status_folder# 遍历网站列表并检查
for website in ${websites[]}; do# 从网站URL中提取名称用作状态文件名website_name$(echo $website | sed s/[^a-zA-Z0-9]/_/g)status_file$status_folder/$website_name.statusstatus_code$(curl -s -o /dev/null -w %{http_code} $website)echo status_code $status_codeif [[ ! $status_code ~ ^4[0-9][0-9] $status_code ! 000 ]]; thenif [ ! -e $status_file ] || [ $(cat $status_file) down ]; thensend_message_to_feishu $website Up and Runningfiecho up $status_file # 更新状态为 upelsesend_message_to_feishu $website Downecho down $status_file # 更新状态为 downfi
done
上述脚本是一个用于监控多个网站可用性的 Bash 脚本。它会定期检查这些网站的状态并在网站出现问题时发送通知。脚本中使用了 Feishu 机器人 来发送通知根据自己的需求选择其他通知方式。
总结
通过这个简单的 Bash 脚本能够自动监控多个网站的可用性并在必要时发送通知确保我们的网站始终保持良好的运行状态。这种自动化的监控方式可以大大减轻管理员和工程师的负担提高了网站的可用性和用户体验。
希望这个示例对您有所帮助可以根据您的实际需求进行修改和定制。如果您有任何问题或建议欢迎在评论中分享