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

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

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