1、资产采集涉及的技术点:

  - 线程池

  - 兼容三种方式:Agent 、SSH 、Slat

  - 可插拔式插件:basic 、board 、nic 、memory 、disk 

  - 配置文件

  - request 模块:

      发送:requests.post(url = ' ' ,data = , json = )

         requests.get()

      Django接受:request.POST , content-type:

  - traceback:错误详细信息
  - paramiko模块,基于SSH链接远程主机并执行命令
  - SaltStack
  - API验证
    key,time|time  时间验证、规则验证、是否已存在

 2、常见问题

  a. 服务器资产采集系统流程?

    ssh:中控机,
    salt:master,
    agent:每台服务器都需要   

  b. 代码如何部署到服务器上?

    - git
    - 代码打成:rpm包,运维
      yum install xxxxx  

  c. 什么时候安装到服务器上的?

    服务器装完系统后,自动做环境初始化:c1.com
    使用puppet 模板

      c1.com 文件:
      yum install python
      yum isntall requests
      create file a1.py
      cp xx xxx
      yum install xxxxx
      加入到定时任务中

    saltstack 模块

      c1.com 文件:
      yum install python
      yum isntall requests
      create file a1.py
      cp xx xxx
      yum install xxxxx
  

  d. 如何运行:

    Salt和SSH
      Linux写定时任务,执行bin目录下可执行文件
      - 获取未采集主机名(用户手动通过后台管理录入)
      - 采集数据
      - 汇报API
    Agent
      Linux写定时任务,执行bin目录下可执行文件
      - Agent上执行,采集资产并自动汇报
      - 数据库有:更新
      - 数据库无:增加【自动发现】

      **** 主机名不能重复 ****

    梳理

    a. 程序开发完成

    b. 部署:

      Agent模式,部署到每台机器上,当装机完成环境初始化的时候,使用rpm包安装。每天执行定时任务。

      SSH 和 Salt模式,部署到中控机或者master上。前提是装机前登陆服务器管理系统,找到指定的机器,修改设置主机名。每次通过API 进行HTTP请求获取未采集主机列表,再进行资产采集,并提交数据。

  e. 临时修改主机名,可能造成资产重复汇报

    1. salt和SSH不会出现资产重复汇报,因为首先获取了未采集的主机名,再进行数据采集,可能会找不到主机名。

    2. Agent模式可能会出现这种情况。如何避免:

      系统安装完成后,立即执行资产采集任务;

      获取当前主机名,将主机名写入到本地cert文件。

      old_hostname = cert文件内容(空或主机名)

      new_hostname = 获取当前主机名

      如果 old_hostname为空,使用new_hostname进行汇报并且写入到cert文件中

      如果 old_hostname不为空,且new_hostname和old_hostname不相同,使用old_hostname进行汇报。

3、流程

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、唯一标识:主机名

4、代码流程

zabbix采集windows硬件信息_主机名

5、代码结构

zabbix采集windows硬件信息_初始化_02