CMDB
Posted 美好生活
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMDB相关的知识,希望对你有一定的参考价值。
CMDB http://www.cnblogs.com/wupeiqi/articles/6192986.html
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的主要内容,如果未能解决你的问题,请参考以下文章