赞
踩
本文来自腾讯蓝鲸智云社区用户:木讷大叔爱运维
在蓝鲸社区“社区问答”帖子中发现这么一个需求:
究其原因,我在《不是CMDB筑高墙,运维需要一定的开发能力!》一文中已经介绍,在此我再简单重复下:
CMDB 版本的迭代,或许说明老版本的“事件推送”已经不符合蓝鲸的设计理念,作为此功能的对接使用者感同深受:
通过对事件推送功能对接过程的回顾以及对替代服务resource watch的使用对比,就非常理解蓝鲸社区推陈出新的做法了!
既然是小伙伴们“插眼关注”的问题,与其等待答案,不如我们自己去寻找答案!
该 watch 功能的主要特性包括:
链接:https://bk.tencent.com/docs/document/6.1/190/14399
对接CMDB属于事件驱动,因此事件先行,先来分析通过API都能获取哪些事件:
以上事件未必都能用到,我们只要按需获取即可,这也体现了watch服务的灵活性!
每类事件都有其相应的动作:
我们的工作重点就是从事件中将增、删、改的动作分离出来,对下游系统进行事件回放,从而保证数据同步。
虽然时间回溯最长间隔为3小时,我们还是希望对不同粒度的事件进行区分,原则如下:
时间回溯保证我们能查到历史数据,而事件回溯的cursor游标
能够保证我们避免重复的事件。
因此我们对于时间/事件回溯要有一个清醒的理解!
通过API的分析,其实我们的功能需求也就同时梳理了出来:
根据”监听资源变化事件“接口的特性,我梳理了下开发过程的几个要点:
通过以上分析,我们初步确认了python + celery + rabbitmq
的几个组件:
其具体的实现流程如下图:
1.Python 3.9
2.Celery
3.Rabbitmq 保存celery调度任务
1.python环境
conda create -n resource-watch python=3.9
source activate resource-watch
pip install requests celery pyamqp flower kombu
2.rabbitmq环境
# 安装rabbitmq yum install rabbitmq-server systemctl start rabbitmq-server systemctl enable rabbitmq-server # 开启 RabbitMQ 的web管理界面 rabbitmq-plugins enable rabbitmq_management # 创建admin用户并授权 rabbitmqctl add_user admin admin rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p '/' admin '.' '.' '.*' rabbitmqctl list_users rabbitmqctl list_user_permissions admin systemctl restart rabbitmq-server # 访问rabbitmq管理界面 http://ip:15672
1.路由队列
针对不同事件,使用不同的队列
交换机 | 路由 | 队列 | 备注 |
---|---|---|---|
cmdb | cmdb.host_relation | cmdb.host_relation | 主机关联关系事件 |
cmdb | cmdb.module | cmdb.module | 模块事件 |
cmdb | cmdb.set | cmdb.set | 集群事件 |
cmdb | cmdb.biz | cmdb.biz | 业务事件 |
2.运行
cd /app/resource-watch
# 启动beat,将定时任务发送至worker
celery -A celery_cmdb beat -l INFO --detach
# 启动worker,异步执行任务,绑定相应事件队列
celery -A celery_cmdb worker -Q cmdb.host_relation -l INFO -c 1 -D
celery -A celery_cmdb worker -Q cmdb.module -l INFO -c 1 -D
celery -A celery_cmdb worker -Q cmdb.set -l INFO -c 1 -D
celery -A celery_cmdb worker -Q cmdb.biz -l INFO -c 1 -D
# 启动flower,任务查看
整个开发过程比较重要的是“对不同事件结果数据的封装”,除了部分开发经验外,就是要不断的试错,这样才能保证我们完成对最终的数据格式的解析,从而更好的匹配下游运维子系统!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。