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

优化日志监控的异常处理。

上级 06f955da
......@@ -26,10 +26,18 @@ def dingding_send_message(error_log_url,ding_type):
# 日志类型:1.预定系统对内服务;2.预定系统对外服务
log_type = ''
if ding_type == '标准版预定-对内服务服务监测':
log_type = '预定系统对内服务日志出现异常,请尽快排查处理!!!'
elif ding_type == '标准版预定-对外服务服务监测':
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 = '展厅预定-对外服务服务监测'
logging.info(f"预定服务日志类型:{log_type}")
# 生成时间戳
......@@ -61,7 +69,7 @@ def dingding_send_message(error_log_url,ding_type):
'link': {
'title': log_type,
'messageUrl': error_log_url,
'text': log_type
'text': "请点击链接,尽快排查处理!!!"
},
"at": {
"atMobiles": "13724387318",
......
......@@ -5,4 +5,7 @@
- 补充对外服务的日志监测。
2. 2025-06-06:
- 处理重连一直失败,会无限循环重试。建议加个重试计数器和退避时间增长策略;
- 处理运行12小时后被远程主机主动断开连接问题,通过配置 SSH Client 的 keepalive 参数,让连接保持活跃,避免超时断开。
\ No newline at end of file
- 处理运行12小时后被远程主机主动断开连接问题,通过配置 SSH Client 的 keepalive 参数,让连接保持活跃,避免超时断开。
- 增加多台服务器的连接监测,补充对展厅的日志监测,调整error_log日志文件存放路径,补充对应的ngrok映射目录。
3. 2025-06-09:
- 优化日志监控的异常处理。
\ No newline at end of file
12212121
\ No newline at end of file
server_addr: ngrok.ubsyun.com:9083
trust_host_root_certs: false
tunnels:
nat1:
proto:
tcp: 127.0.0.1:80
remote_port: 32233
ngrok -config=ngrok.cfg start nat1
\ No newline at end of file
server_addr: ngrok.ubsyun.com:9083
trust_host_root_certs: false
tunnels:
nat1:
proto:
tcp: 127.0.0.1:80
remote_port: 31133
ngrok -config=ngrok.cfg start nat1
\ No newline at end of file
......@@ -75,7 +75,7 @@ class LogMonitor:
logging.info(f"Connected to {self.host}, monitoring {self.log_path}")
return True
except Exception as e:
logging.info(f"连接失败: {e}")
logging.info(f"连接失败: {e},目标主机: {self.host}")
return False
def start_monitoring(self):
......@@ -129,7 +129,7 @@ class LogMonitor:
root_dir = os.path.dirname(root_dir) # 返回到 "ubains-module-test"
# 拼接目标路径
full_path = os.path.normpath(os.path.join(root_dir, "预定系统", "reports", "error_log"))
full_path = os.path.normpath(os.path.join(root_dir, "日志监测", "error_log"))
# 确保目录存在
os.makedirs(full_path, exist_ok=True)
......@@ -270,47 +270,58 @@ class LogMonitor:
if __name__ == "__main__":
# 配置参数
host = "192.168.5.218"
username = "root"
private_key_path = "C:/Users/29194/.ssh/id_rsa"
passphrase = "Ubains@123"
LOG_PATHS = [
# 多个服务器配置
SERVERS = [
{
"log_path": "/var/www/java/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "标准版预定-对内服务服务监测"
"host": "192.168.5.235",
"username": "root",
"private_key_path": "C:/Users/UBAINS/.ssh/id_rsa",
"passphrase": "Ubains@123",
"logs": [
{
"log_path": "/var/www/java/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "235标准预定-对内服务服务监测"
},
{
"log_path": "/var/www/java/external-meeting-api/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "235标准预定-对外服务服务监测"
}
]
},
{
"log_path": "/var/www/java/external-meeting-api/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "标准版预定-对外服务服务监测"
"host": "192.168.5.200",
"username": "root",
"private_key_path": "C:/Users/UBAINS/.ssh/id_rsa",
"passphrase": "Ubains@123",
"logs": [
{
"log_path": "/var/www/javaredline/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "展厅预定系统-对内服务服务监测"
},
{
"log_path": "/var/www/javaredline/external-meeting-api/logs/ubains-INFO-AND-ERROR.log",
"ding_type": "展厅预定系统-对外服务服务监测"
}
]
}
]
monitors = []
threads = []
for config in LOG_PATHS:
monitor = LogMonitor(
host=host,
username=username,
private_key_path=private_key_path,
passphrase=passphrase,
log_path=config["log_path"],
ding_type=config["ding_type"]
)
monitors.append(monitor)
thread = threading.Thread(target=monitor.start_monitoring)
threads.append(thread)
thread.start()
logging.info(f"已启动对 {config['log_path']} 的监控")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
logging.info("用户终止监控,正在停止所有监控器...")
for monitor in monitors:
monitor.stop_monitoring()
print("所有日志监控已停止。")
for server in SERVERS:
for log_config in server["logs"]:
monitor = LogMonitor(
host=server["host"],
username=server["username"],
private_key_path=server["private_key_path"],
passphrase=server["passphrase"],
log_path=log_config["log_path"],
ding_type=log_config["ding_type"]
)
monitors.append(monitor)
thread = threading.Thread(target=monitor.start_monitoring)
threads.append(thread)
thread.start()
logging.info(f"已启动对 {log_config['log_path']} 的监控")
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论