人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

詳解Python實(shí)現(xiàn)URL監(jiān)測與即時推送

發(fā)布日期:2021-12-10 13:01 | 文章來源:站長之家

原理

采用Python requests發(fā)起請求監(jiān)測的URL,檢測Http響應(yīng)狀態(tài)及是否超時,如果Http狀態(tài)異?;蝽憫?yīng)超時,則通過聚合云推的消息推送API將預(yù)警消息發(fā)送至郵箱、釘釘機(jī)器人、企業(yè)微信機(jī)器人、微信公眾號等,服務(wù)端通過crontab定時(每分鐘)執(zhí)行代碼,實(shí)現(xiàn)動態(tài)監(jiān)測功能。

環(huán)境

操作系統(tǒng): CentOS 7.x

Python版本: 3.6

消息推送服務(wù): tui.juhe.cn

代碼

#!/usr/bin/python3
import requests
import time
import json
# 監(jiān)測URL是否正常響應(yīng)
def url_check(url):
 # 當(dāng)前時間
 check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
 print("開始監(jiān)測:%s -- %s" % (url, check_time))
 try:
  # 請求URL, 設(shè)置3s超時
  r = requests.get(url, timeout=3)
  if r.status_code != 200:
# 請求響應(yīng)狀態(tài)異常
msg = "監(jiān)控的URL:%s%sHttp狀態(tài)異常:%s%s監(jiān)測時間:%s" % (url, "\n\n", r.status_code, "\n\n", check_time)
print("監(jiān)測結(jié)果:異常(Http狀態(tài)異常:%s) -- %s" % (r.status_code, check_time))
# 通過云推推送消息
yuntui_push(msg)
  else:
# 請求響應(yīng)正常
print("監(jiān)測結(jié)果:正常 -- %s" % check_time)
 except requests.exceptions.ConnectTimeout:
  # 請求響應(yīng)超時
  msg = "監(jiān)控的URL:%s%s請求異常:%s%s監(jiān)測時間:%s" % (url, "\n\n", "請求超時", "\n\n", check_time)
  print("監(jiān)測結(jié)果:超時 -- %s" % check_time)
  # 通過云推推送消息
  yuntui_push(msg)
# 將預(yù)警消息通過云推推送
def yuntui_push(content):
 # 當(dāng)前時間
 push_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
 # 云推接口的信息配置,可以通過 https://tui.juhe.cn 自行注冊創(chuàng)建
 # (可以配置郵件、釘釘機(jī)器人、微信公眾號等接收方式)
 token = "*****************"
 service_id = "******"
 title = "URL可用性監(jiān)控預(yù)警"
 doc_type = "markdown"
 body = {"token": token, "service_id": service_id, "title": title, "content": content, "doc_type": doc_type}
 try:
  r = requests.post("https://tui.juhe.cn/api/plus/pushApi", data=body, timeout=15)
  push_res = json.loads(r.content)
  code = push_res['code']
  if code == 200:
print("推送結(jié)果:成功 -- %s" % push_time)
  else:
print("推送結(jié)果:失?。?s) -- %s" % (push_res['reason'], push_time))
 except requests.exceptions.ConnectTimeout:
  print("推送結(jié)果:超時 -- %s" % push_time)
# 執(zhí)行URL可用性監(jiān)測
if __name__ == '__main__':
 # 監(jiān)控URL可用性
 # url_check("https://www.test.com")
 url_check("https://www.baidu.com/")

如果requests未安裝可以執(zhí)行以下命令安裝

pip3 install requests

crontab計(jì)劃任務(wù)配置

命令行輸入crontab -e進(jìn)入計(jì)劃任務(wù)配置

# 每分鐘執(zhí)行一次
*/1 * * * * /usr/bin/python3 /data/check_url/main.py >> /data/log.txt

查看日志

cat /data/log.txt
開始監(jiān)測:https://www.baidu.com/ -- 2021-11-16 15:04:01
監(jiān)測結(jié)果:正常 -- 2021-11-16 15:04:01
開始監(jiān)測:https://www.baidu.com/ -- 2021-11-16 15:05:02
監(jiān)測結(jié)果:正常 -- 2021-11-16 15:05:02
開始監(jiān)測:https://www.baidu.com/ -- 2021-11-16 15:06:01
監(jiān)測結(jié)果:正常 -- 2021-11-16 15:06:01
開始監(jiān)測:https://www.baidu.com/ -- 2021-11-16 15:07:01
監(jiān)測結(jié)果:正常 -- 2021-11-16 15:07:01
開始監(jiān)測:https://www.baidu.com/ -- 2021-11-16 15:08:01
監(jiān)測結(jié)果:正常 -- 2021-11-16 15:08:01
開始監(jiān)測:https://www.test.com -- 2021-11-16 15:11:01
監(jiān)測結(jié)果:超時 -- 2021-11-16 15:11:01
推送結(jié)果:成功 -- 2021-11-16 15:11:04
開始監(jiān)測:https://www.test.com -- 2021-11-16 15:12:01
監(jiān)測結(jié)果:超時 -- 2021-11-16 15:12:01
推送結(jié)果:成功 -- 2021-11-16 15:12:04

預(yù)警消息效果

如果監(jiān)測到異常結(jié)果,你在云推配置的接收終端將會收到通知,類似如下:

釘釘群機(jī)器人:

郵件:

微信公眾號:

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部