CMDB管理系统

发布时间:2018-12-13 08:24:10编辑:admin阅读(9539)

    说明

    CMDB管理系统,基于Ansible最新版开发,采用前后端分离架构


    项目主要结构

    ./
    ├── ansible_client  # ansible_client客户端
    │   └── monitor
    │       ├── cpu.py  # 监控cpu
    │       └── memory.py  # 监控内存
    ├── api  # api部分
    │   ├── api_urls.py  # api相关的url
    │   ├── serializers  # 序列化相关
    │   │   ├── ansible.py  # ansible
    │   │   ├── disk.py  # 磁盘
    │   │   ├── hostinfo.py  # 主机详细信息
    │   │   ├── host.py  # 主机信息
    │   │   └── network.py  # 网络信息
    │   ├── utils
    │   │   ├── ansible  # ansible相关
    │   │   │   ├── check_ip.py  # 检测ip可用性
    │   │   │   ├── exec_ansible.py  # ansible的API,用来执行ansible命令
    │   │   │   ├── extract_setup.py  # 检测硬件信息
    │   │   │   ├── hosts_fm.py  # ansible的hosts文件写入
    │   │   │   ├── login_host.py  # 远程登录主机
    │   │   │   └── remotExect.sh  # 输入密码
    │   │   ├── auth.py  # 认证
    │   │   ├── response.py  # 统一code返回值
    │   │   └── serialization_general.py  # 标准序列化返回值
    │   └── views
    │       ├── ansible.py  # ansible相关
    │       ├── disk.py  # 磁盘相关
    │       ├── hostinfo.py  # 主机详情
    │       ├── host.py  # 主机
    │       ├── monit  # 监控相关
    │       │   ├── cpu.py
    │       │   └── memory.py
    │       └── network.py  # 网卡相关
    ├── AutoCmdb
    │   ├── settings.py  # 项目配置文件
    │   ├── urls.py  # 总入口
    ├── cron
    │   └── test_orm.py  # 测试脚本
    ├── db.sqlite3  # 数据库
    ├── manage.py  # 启动文件
    ├── README.md
    ├── repository
    │   └── models.py  # 数据库文件
    └── web  # 前端展示部分
        ├── static  # 静态目录
        │   ├── css
        │   ├── img
        │   ├── js
        │   └── plugins
        │       ├── bootstrap-3.3.7  # bootstrap
        │       ├── font-awesome-4.7.0  # 图标库插件
        │       ├── Highcharts-6.1.2  # 图表插件
        │       └── sweetalert  # 弹框插件
        ├── templates  # 模板相关
        │   ├── ansible_add_host.html  # 添加ansible主机
        │   ├── ansible_add.html  # 添加ansible组
        │   ├── ansible_list.html  # ansible列表
        │   ├── base.html  # 母版
        │   ├── default.html  # 默认首页的右侧部分
        │   ├── host_info.html  # 主机详情
        │   ├── host_list.html  # 主机列表
        │   ├── index.html  # 首页主体部分,包含左侧边栏和头部
        │   └── monitor  # 监控图表相关
        │       ├── cpu.html
        │       └── memory.html
        ├── views
        │   ├── ansible.py  # ansible相关
        │   ├── host.py  # 主机相关
        │   └── index.py
        └── web_urls.py  # web页面相关路由


    运行环境


    ProjectversionDescription
    python3.6.5
    django1.11.15必须此版本
    djangorestframework3.8.2
    ansible2.7.0不能低于此版本


    功能说明

    以下功能,都是用python来完成的
    1.  使用django rest framework开发api
    2.  优雅获取本机IP
    3.  判断ip地址是否有效
    4.  判断ssh端口是否开放
    5.  自动使用yum安装软件
    6.  自动完成ssh免密码登录
    7.  根据数据库记录的变化,自动写入文件/etc/ansible/hosts
    8.  使用ansible 2.x API收集客户端硬件信息
    9.  根据返回的硬件信息,使用事务写入数据库中
    10. 使用psutil模块获取cpu和内存使用情况,并发送给后端API,统一入库.
    11. 使用Highcharts插件来展示监控图表,比如: cpu和内存.


    效果

    首页:

    首页.png



    ansible管理:

    ansible管理.png


    ansible主机:

    ansible主机.png


    主机详情:

    主机详情.png



    运行方式

    ansible主控端


    首先需要编译安装python3,请参考链接:
    http://www.py3study.com/Article/details/id/320.html
    做到添加豆瓣源为止,请务必按照本教程操作,否则会出现没有pip3的问题!!!
    
    安装2个系统软件
    yum install -y ansible expect
    
    
    安装python相关模块
    pip3 install django==1.11.15
    pip3 install djangorestframework
    pip3 install ansible
    或者使用requirements.txt文件安装相关模块
    pip3 install -r requirements.txt
    
    最后切换到项目目录,使用以下命令运行
    python3 manage.py runserver 0.0.0.0:8000


    ansible被控端


    编译安装python3,参考上面的操作!
    注意:被控端不需要安装ansible!!!
    
    安装python相关模块
    pip3 install requests psutil
    
    将项目中的ansible_client拷贝到opt目录中
    注意:务必修改cpu.py和memory.py中的ip地址
    
    设置linux任务计划:
    
    # 监控cpu和内存
    * * * * * python3 /opt/ansible_client/monitor/cpu.py
    * * * * * python3 /opt/ansible_client/monitor/memory.py


    网页操作


    请务必安装以下操作进行:
    访问页面: http://ip地址/web/  
    注意:必须使用谷歌浏览器访问,360浏览器可能某些数据无法加载!
    
    1. 进入首页,点击左侧ansible管理。必须先添加组
    2. 添加组之后,再点击添加主机
    3. 最后点击左侧ansible主机,就可以查看主机详情和监控图表了


    备注

    本项目只是一个demo,请勿直接用于生产环境!


    github地址:

    https://github.com/py3study/AutoCmdb



关键字