CMDB项目总结

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 xxxx
    b.什么时候安装到服务器上
    服务器装完系统后,自动做环境初始化
    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.临时修改主机名,可能造成资产重复汇报
  1. salt和SSH不会出现资产重复汇报,因为首先获取了未采集的主机名,再进行数据采集,可能会找不到主机名。
  2. Agent模式可能会出现这种情况。如何避免:
    系统安装完成后,立即执行资产采集任务;
    获取当前主机名,将主机名写入到本地cert文件。
    old_hostname = cert文件内容(空或主机名)
    new_hostname = 获取当前主机名
    如果 old_hostname为空,使用new_hostname进行汇报并且写入到cert文件中
    如果 old_hostname不为空,且new_hostname和old_hostname不相同,使用old_hostname进行汇报。

流程

SSH 和 Salt 模式
  1. 购买服务器,厂商提供 SN 号、硬盘等网卡进本信息。服务器组装放置到机房机柜上,统计好相关信息,通过Excel录入到数据库中。
  2. 手动装机情况:找到指定机器,安装系统,设置主机名,安装相关软件。
    自动装机情况:cobbler 装机+saltstack / puppet进行初始化环境
    都需要通过后台管理——跟新主机名
  3. 唯一标示:主机名
Agent 模式

只有物理机算资产:
1.购买服务器,厂商提供 SN 号、硬盘等网卡进本信息。服务器组装放置到机房机柜上,统计好相关信息,通过Excel录入到数据库中。
2.手动装机情况:找到指定机器,安装系统,设置主机名,安装相关软件。
自动装机情况:cobbler 装机+saltstack / puppet进行初始化环境
3.唯一标示:SN号

物理机+虚拟机都算资产:
1.购买服务器,厂商提供 SN 号、硬盘等网卡进本信息。
2.手动装机情况:找到指定机器,安装系统,设置主机名,安装相关软件。
自动装机情况:cobbler 装机+saltstack / puppet进行初始化环境
3.采集资产:
   - 自动发现:自动收集硬件信息(管理员、业务线、机房等信息需手动录入)
   - 已经存在:更新硬件信息
4.唯一标识:主机名

代码运行流程

代码流程

代码结构

代码流程

CMDB_server 硬件信息采集系统服务端

代码结构

CMDB_server 思维导图

CMDB_server

server_json 思维导图

server_json

nb-list.js 思维导图

nb-list,js