提交 4af0f3e4 authored 作者: 陈泽健's avatar 陈泽健

补充服务进程监控的代码实现,自动生成中文Word异常报告,通过钉钉机器人发送异常告警通知,优化补充日志打印。

上级 6a0036da
......@@ -9,6 +9,8 @@
- pip install requests
- pip install chardet
- pip install pyyaml
- pip install colorama
- pip install python-docx
- 若切换电脑环境后需要输入指令: 将本地库导入到外部库中。
- # 找到 site-packages 路径
......
......@@ -26,24 +26,8 @@ def dingding_send_message(error_log_url,ding_type):
# 这是错的
# secret = 'SEC610498ed6261ae2df1d071d0880aaa70abf5e67efe47f75a809c1f2314e0dbd612211221'
# 日志类型:1.预定系统对内服务;2.预定系统对外服务
log_type = ''
if ding_type == '235标准预定-对内服务服务监测':
log_type = '235标准预定-对内服务日志出现异常'
elif ding_type == '235标准预定-对外服务服务监测':
log_type = '235标准预定-对外服务日志出现异常'
elif ding_type == '展厅预定系统-对内服务服务监测':
log_type = '展厅预定-对内服务服务监测'
elif ding_type == '展厅预定系统-对外服务服务监测':
log_type = '展厅预定-对外服务日志出现异常'
elif ding_type == '展厅运维集控系统-服务监测':
log_type = '展厅运维集控系统-服务监测'
logging.info(f"预定服务日志类型:{log_type}")
logging.info(f"预定服务日志类型:{ding_type}")
# 生成时间戳
timestamp = str(round(time.time() * 1000))
......@@ -70,17 +54,17 @@ def dingding_send_message(error_log_url,ding_type):
# 构建消息体
headers = {'Content-Type': 'application/json'}
message = {
'msgtype': 'link',
'link': {
'title': log_type,
'messageUrl': error_log_url,
'text': "请点击链接,尽快排查处理!!!"
},
"at": {
"atMobiles": "13724387318",
"isAtAll": True
'msgtype': 'link',
'link': {
'title': ding_type,
'messageUrl': error_log_url,
'text': "请点击链接,尽快排查处理!!!"
},
"at": {
"atMobiles": "13724387318",
"isAtAll": True
}
}
}
try:
# 发送 POST 请求
......
......@@ -10,4 +10,6 @@
3. 2025-06-09:
- 优化日志监控的异常处理。处理路径拼接方式,处理服务出现错误日志没有发送的问题,调试重复发送问题。
4. 2025-06-10:
- 通过组合日志格式中的模块+操作+消息内容 作为错误唯一标识转为固定的哈希值,记录每个错误最后发送时间 {hash: timestamp},定时任务每天00:00清空发送记录,避免历史错误永远被屏蔽。
\ No newline at end of file
- 通过组合日志格式中的模块+操作+消息内容 作为错误唯一标识转为固定的哈希值,记录每个错误最后发送时间 {hash: timestamp},定时任务每天00:00清空发送记录,避免历史错误永远被屏蔽。
5. 2025-06-12:
- 补充服务进程监控的代码实现,自动生成中文Word异常报告,通过钉钉机器人发送异常告警通知,优化补充日志打印。
\ No newline at end of file
......@@ -42,7 +42,7 @@ except ImportError as e:
class LogMonitor:
def __init__(self, host, username, private_key_path, passphrase, log_path,
check_interval=1, ding_type="标准版服务监测", resend_interval=43200):
check_interval=1, ding_type="标准版服务监测", resend_interval=10800):
self.host = host
self.username = username
self.private_key_path = private_key_path
......@@ -336,11 +336,11 @@ if __name__ == "__main__":
"logs": [
{
"log_path": "/var/www/java/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "235标准预定-对内服务监测"
"ding_type": "235标准预定对内服务"
},
{
"log_path": "/var/www/java/external-meeting-api/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "235标准预定-对外服务监测"
"ding_type": "235标准预定对外服务"
}
]
},
......@@ -352,11 +352,11 @@ if __name__ == "__main__":
"logs": [
{
"log_path": "/var/www/java/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "展厅预定系统-对内服务监测"
"ding_type": "展厅预定对内服务"
},
{
"log_path": "/var/www/java/external-meeting-api/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "展厅预定系统-对内服务监测"
"ding_type": "展厅预定对外服务"
}
]
},
......@@ -368,7 +368,7 @@ if __name__ == "__main__":
"logs": [
{
"log_path": "/var/www/html/log/uinfo.log",
"ding_type": "展厅运维集控系统-服务监测"
"ding_type": "展厅运维集控服务监测"
}
]
}
......
......@@ -32,6 +32,10 @@ class RolePermissionManagement:
wd = GSTORE['wd']
name = self.name
# 执行完一个用例就刷新一下页面重置
wd.refresh()
sleep(4)
for step in self.para:
# 赋值页面类型page
page_type = step.get('page')
......@@ -50,23 +54,20 @@ class RolePermissionManagement:
if element_type == "click":
safe_click((locator_type, locator_value), wd)
sleep(2)
SELENIUM_LOG_SCREEN(wd, "75")
elif element_type == "input":
safe_send_keys((locator_type, locator_value), element_value, wd)
sleep(2)
SELENIUM_LOG_SCREEN(wd, "75")
elif element_type == "getTips":
notify_text = get_notify_text(wd, (locator_type, locator_value))
INFO(f"获取到的提示信息为:{notify_text}")
sleep(2)
CHECK_POINT(f"获取到的提示信息为:{notify_text}", expented_result in notify_text)
SELENIUM_LOG_SCREEN(wd, "50")
SELENIUM_LOG_SCREEN(wd, "75")
elif element_type == "getText":
text = elment_get_text((locator_type, locator_value), wd)
INFO(f"获取到的文本信息为:{text}")
CHECK_POINT(f"获取到的文本信息为:{text}", expented_result in text)
SELENIUM_LOG_SCREEN(wd, "50")
# 执行完一个用例就刷新一下页面重置
wd.refresh()
wd.refresh()
sleep(2)
\ No newline at end of file
SELENIUM_LOG_SCREEN(wd, "75")
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论