发布网友 发布时间:2022-04-29 08:22
共2个回答
懂视网 时间:2022-04-10 00:28
CMDB需要实现的功能
1 资产自动收集
2 API
3 可视化管理
资产收集
一收集方式
1 paramiko方式
通过API获取主机名,利用paramiko获取数据解析成字典返回给API并入库
2 saltstack方式
3 puppet方式
4 Agent方式
二 收集要点
1 采集方式配置
2 插件定制(信息收集以及存放)
3 测试模式 (功能测试)
4 错误日志(详细行)
5 回报数据(API认证)
6 资产唯一标识(使用主机名等不重复的信息作为唯一标识,并将唯一标识信息写入指定文件,以后从文件中获取唯一标识)
logging模块
http://www.cnblogs.com/wupeiqi/articles/5501365.html
单文件日志
import
logging
logging.basicConfig(filename
=
‘log.log‘
,
format
=
‘%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s‘
,
datefmt
=
‘%Y-%m-%d %H:%M:%S %p‘
,
level
=
10
) 配置日志格式
logging.debug(
‘debug‘
)
logging.info(
‘info‘
)
logging.warning(
‘warning‘
)
logging.error(
‘error‘
)
logging.critical(
‘critical‘
)
logging.log(
10
,
‘log‘
)
日志级别
CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0
多日志文件
定义文件
file_2_1 = logging.FileHandler(‘l2_1.log‘, ‘a‘) fmt = logging.Formatter() file_2_1.setFormatter(fmt)
定义日志
logger2 = logging.Logger(‘s2‘, level=logging.INFO) logger2.addHandler(file_2_1)
写日志
logger1.critical(‘1111‘)
API认证
客户端
appid=‘....‘
current_time =‘...‘
m=hashlib.md5(appid+current_time)
new_appid=‘%s|%s‘%(m,current_time)
requests.get(url=‘‘,headers=‘new_appid‘)
服务器
1 分割new_appid,获取客户端的current_time并获取服务器端的current_time,比较超过10秒就返回验证失败。
2 否则循环appid列表,如果已存在就返回验证失败,不存在就下一步验证,同时将保存时间超过10秒的删除。
3 根据自己的appid和客户端的current_time生成md5值,然后和客户端的md5值比较,相同则返回结果并将appid添加到列表,否则返回验证失败
restfulapi
同一个资源使用一个api链接,根据请求方式不同作出不同响应
数据库表设计
1 运维及业务联系人信息表
2 权限信息表
3 用户组表,根据业务分组
4 业务信息表
5 idc机房
6 资产类型
7 标签
8 服务器
9 具体硬件资源(硬盘,网卡,内存)
10 资产变更
11 错误
获取未更新主机
根据最后更新时间与当前时间对比
CMDB
标签:plain mat dha 硬件 获取数据 message ror ogg evel
热心网友 时间:2022-04-09 21:36
CMDB也叫做配置管理,是ITIL系统、ITSOM系统的一个模块。