CMDB_client 硬件信息采集系统客户端
资产采集涉及的技术点
- 线程池
- 兼容三种方式:Agent 、SSH 、Slat
- 可插拔式插件:basic 、board 、nic 、memory 、disk(参考Django中间件)
- 配置文件(用户配置、全局配置)
- requests 模块:
发送:requests.post(url = ‘ ‘ ,data = , json = )
requests.get()
Django接受:request.POST , Content-Type: - traceback:错误详细信息
- paramiko模块,基于SSH链接远程主机并执行命令
- SaltStack
- API验证
key,time|time 时间验证、规则验证、是否已存在
常见问题
a.代码如何部署到中控机/master(服务器)上
- git
- 代码打成rpm包,运维做
yum install xxxxb.什么时候安装到服务器上
服务器装完系统后,自动做环境初始化
puppet模板
c1.com文件
yum install python
yum install requests
create file a1.py
cp xx xxx
yum install xxxx
加入到定时任务中
saltstack模板c.代码如何运行
ssh:中控机 salt:master
代码打包成rpm包,服务器装机后,环境初始化时将代码装到中控机或master上,写上定时任务,执行bin目录下的可执行文件。
代码流程:1. 获取未采集主机名(通过后台管理手动录入)2. 采集数据 3. 汇报API
Agent:每台机都装(服务器多用此模式)
代码打包成rpm包,服务器装机后,环境初始化时每天机都安装软件。
定时任务,执行bin目录下的可执行文件
代码流程:1. Agent上执行,采集资产并自动汇报 2. 数据库有:更新 3. 数据库无:增加(自动发现)
主机名不能重复梳理:
a. 代码开发完成
b. 部署
Agent模式,部署到每台机器上,当装机完成环境初始化的时候,使用rpm包安装。每天执行定时任务。
SSH 和 Salt模式,部署到中控机或者master上。前提是装机前登陆服务器管理系统,找到指定的机器,修改设置主机名。每次通过API 进行HTTP请求获取未采集主机列表,再进行资产采集,并提交数据。
d.临时修改主机名,可能造成资产重复汇报
- salt和SSH不会出现资产重复汇报,因为首先获取了未采集的主机名,再进行数据采集,可能会找不到主机名。
- Agent模式可能会出现这种情况。如何避免:
系统安装完成后,立即执行资产采集任务;
获取当前主机名,将主机名写入到本地cert文件。
old_hostname = cert文件内容(空或主机名)
new_hostname = 获取当前主机名
如果 old_hostname为空,使用new_hostname进行汇报并且写入到cert文件中
如果 old_hostname不为空,且new_hostname和old_hostname不相同,使用old_hostname进行汇报。
流程
SSH 和 Salt 模式
- 购买服务器,厂商提供 SN 号、硬盘等网卡进本信息。服务器组装放置到机房机柜上,统计好相关信息,通过Excel录入到数据库中。
- 手动装机情况:找到指定机器,安装系统,设置主机名,安装相关软件。
自动装机情况:cobbler 装机+saltstack / puppet进行初始化环境
都需要通过后台管理——跟新主机名 - 唯一标示:主机名
Agent 模式
只有物理机算资产:
1.购买服务器,厂商提供 SN 号、硬盘等网卡进本信息。服务器组装放置到机房机柜上,统计好相关信息,通过Excel录入到数据库中。
2.手动装机情况:找到指定机器,安装系统,设置主机名,安装相关软件。
自动装机情况:cobbler 装机+saltstack / puppet进行初始化环境
3.唯一标示:SN号
物理机+虚拟机都算资产:
1.购买服务器,厂商提供 SN 号、硬盘等网卡进本信息。
2.手动装机情况:找到指定机器,安装系统,设置主机名,安装相关软件。
自动装机情况:cobbler 装机+saltstack / puppet进行初始化环境
3.采集资产:
- 自动发现:自动收集硬件信息(管理员、业务线、机房等信息需手动录入)
- 已经存在:更新硬件信息
4.唯一标识:主机名
代码运行流程

代码结构

CMDB_server 硬件信息采集系统服务端
代码结构
CMDB_server 思维导图

server_json 思维导图

nb-list.js 思维导图
