• CMDB运维(一)——CMDB架构(实现方案)、项目目录结构设计、高级配置文件、插件采集实现方式


    一、CMDB架构

    1.agent实现方案

    实现步骤:
    1.每个服务器都放一个脚本(agent脚本),使用python的subprocess模块执行linux相关的命令
    2.将每个服务器获取到的数据通过requests.post传给一个API端(django服务端)
    3.在API端对数据进行二次清洗,然后放入数据库中
    4.Django搭建的web后台接收前端请求,从数据库中请求数据,通过web界面展现给用户
    注意:GET和POST请求中的数据,都是从body中获取的
    如果头信息:content-type:application/www-form-urlencoded 此时body就会将数据赋值给POST (表单提交的头部信息就是这个)
    此时头信息:content-type:application/json 所以需要从body中获取信息

    crontab服务(循环执行定时任务)

    缺点:需要在每一个服务器都布置agent脚本

    2.ssh实现方案(基于Paramiko模块)    ansible软件

    在中控机服务器通过Paramiko(py模块)登录到各个服务器上,然后执行相关的linux命令的去获取各个服务器上的信息,主要是在中控机中写代码

    和第一种方式只是采集方式不一样,其他步骤都是差不多,两者通过不同的配置文件来实现不同的采集方式。网上还有其他方式实现,自行百度。

    二、CMDB项目目录结构设计

    采集端:      autoclient是运行的代码文件

    autoserver是web可视化页面

    -bin
        --start.py  启动文件
    -conf
        --config.py   自定制配置文件(类似于Django的settings.py文件)
    -lib             库文件
        --conf
            --conf.py   整合两个配置文件的所有配置信息
            --gloab_settings.py    高级配置信息
    -src   核心文件
        --plugins
            --__init__.py   管理采集的插件
            --basic.py      

    三、高级配置文件(参考Django的global_settings(默认配置)和settings(自定制配置))

    整合两个配置文件的所有配置信息

    from conf import config   #### 自定制
    from . import gloab_settings  #### 高级的
    
    #整合两个配置文件的所有配置信息
    class Settings():
        def __init__(self):
    
            #整合高级的配置信息
            for key in dir(gloab_settings):
                if key.isupper():
                    v = getattr(gloab_settings, key)
                    setattr(self, key, v)
    
            #整合自定制配置文件
         #为什么放在高级配置文件的下面,如果两个配置文件信息重复的话
    for key in dir(config): if key.isupper(): v = getattr(config, key) setattr(self, key, v) settings = Settings()

    实现方法:参考Django插拔式

    四、插件采集实现方式:

    1.写一个父类base  所有的采集子类继承父类base

    2.将采集的函数作为参数传入

  • 相关阅读:
    git删除远程tag
    date的getTime问题
    EasyExcel读取excel文件反射成实体后全为NULL
    springboot回滚部分异常
    Java8 LocalDate、Date、LocalDateTime、时间戳的转换
    mysql未查到行,返回一条默认结果
    Maven No archetype found in remote catalog. Defaulting to internal catalog.
    HashMap相关资料
    HibernateHql
    用户名登录
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12206075.html
Copyright © 2020-2023  润新知