从zk监控canal-client消费延迟情况
#zk监控 import json from datetime import datetime, timedelta from kazoo.client import KazooClient from kazoo.exceptions import NoNodeError def canal_monitor(**kwargs): zk = KazooClient(hosts='host1:port,host2:port,host3:port') zk.start() instance_list = zk.get_children('/otter/canal/destinations') count = 0 err_count = 0 for instance in instance_list: if instance : count = count + 1 try: result = zk.get('/otter/canal/destinations/{instance}/1001/cursor'.format(instance=instance)) time_tuple = get_time(result) content = '{}.canal consume cursor:{},delay {} minutes'.format(instance, time_tuple[0].strftime('%Y-%m-%d %H:%M:%S'),time_tuple[1]) if time_tuple[1] > 60: err_count = err_count + 1 print(content) else: print(content) except NoNodeError as e: print(e) zk.stop() if err_count != 0: print('zookeeper监控完毕,当前订阅业务数{},{}延迟!'.format(str(count), str(err_count))) def get_time(result): result_str = str(result[0], encoding="utf-8") result_json = json.loads(result_str) result_ts = result_json['postion']['timestamp'] result_utc_dt = datetime.fromtimestamp(result_ts / 1000) result_dt = result_utc_dt + timedelta(hours=8) now = datetime.now() time_delay = now - result_utc_dt return tuple([result_dt, int(time_delay.seconds / 60)])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗