1 Star 0 Fork 0

恐咖兵糖/www.ftls.xyz

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2022-01-13-Automatically-report-service-status.md 3.86 KB
一键复制 编辑 原始数据 按行查看 历史
恐咖兵糖 提交于 2024-02-24 17:21 . pref: 修改分类
title: "python3 访问 若依-Vue 后端 端口"
subtitle: ""
slug: "20220113"
date: 2022-01-13T17:46:30+08:00
lastmod: 2022-01-13T17:46:30+08:00
draft: false
description: ""

tags: ["Web","宝塔"]
categories: ["代码"]

featuredImage: ""
featuredImagePreview: ""

hiddenFromHomePage: false

lightgallery: true
toc: false

服务器是2核1G的配置,为了防止若依被挤掉,并且及时发现,写了一个程序监控。

服务器是2核1G的配置 Centos7,安装了宝塔面板 ,安装了Python3 环境。运行一个7×24小时若依程序,版本3.18。是前后端分离的一个程序。之前安装了几个比较占内存的应用。然后没想到竟然让若依程序挂掉了几分钟,具体表现就是磁盘io量过大,延迟很高。打开前端后,显示后端接口访问异常。在我安装编译Python环境时,甚至出现了若依程序无故消失。由于源于未知,因此写了一个小程序来监控后端端口。

{{< image src="https://cdn.ftls.xyz/images/2022/01/202101182.png" caption="高io读取延迟">}}

具体的一个原理就是访问端口时能够返回一串数据。其实可以在java里写controller,然后把这个API暴露出来。定时访问来监控程序和设备运行情况。我这里没有那么复杂,我直接访问了一个后端端口,返回 欢迎使用RuoYi后台管理框架,当前版本:v3.8.1,请通过前端地址访问。

原理是Python访问后端端口,比对字符串,如果访问成功并且正确返回数据,就代表后端正常。如果超时,就表示后端异常。然后将访问的结果,通过 WebHook 发送到企业微信群机器人中。然后将这个Python程序在宝塔定时任务中设置好。就可以正常使用了。

文件 /home/ruoyi/status.py

import requests
import time

# 获取数据信息

url = 'http://0.0.0.0:80'
run = '欢迎使用RuoYi后台管理框架,当前版本:v3.8.1,请通过前端地址访问。'
status = '后端异常'
t = time.strftime('%Y-%m-%d %H:%M:%S')
try:
  text = requests.get(url, timeout=5).text
  if text==run:
      status = '后端接口正常'
  else:
    status = '不同'
  s = '成功访问'
except requests.exceptions.RequestException as e:
  s = '异常'
  print(e)

print(t)
print(s)
print(status)

# 微信发送

headers = {
    'Content-Type': 'application/json',
}
# key 是 webhook 群机器人提供的,注意不要散播出去
params = (('key', '12345678-1234-1234-1234-123456789012'),)
content = t+'\\n>'+s+'\\n>'+status+'\\n'
content = content.encode('utf-8').decode('latin-1')
data = '{"msgtype": "markdown","markdown": { "content": "'+content+ '"  }   }'
 
response = requests.post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send', headers=headers, params=params, data=data)
# print(response.content.decode())

在宝塔定时任务里设置 python3 /home/ruoyi/status.py。设置好间隔之后就可以正常使用了。

定时任务日志:

HTTPConnectionPool(host='0.0.0.0', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4ac8097668>: Failed to establish a new connection: [Errno 111] Connection refused',))
2022-01-12 10:13:25
异常
后端异常
----------------------------------------------------------------------------
★[2022-01-12 10:13:25] Successful
----------------------------------------------------------------------------
2022-01-12 10:15:34
成功访问
后端接口正常
----------------------------------------------------------------------------
★[2022-01-12 10:15:35] Successful
--------------------------------------------------------------------------------------------

企业微信:

{{< image src="https://cdn.ftls.xyz/images/2022/01/20220118.jpg" caption="企业微信效果">}}

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/kkbt/www.ftls.xyz.git
git@gitee.com:kkbt/www.ftls.xyz.git
kkbt
www.ftls.xyz
www.ftls.xyz
master

搜索帮助

A270a887 8829481 3d7a4017 8829481