首页 > 代码库 > CMDB

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