zoukankan      html  css  js  c++  java
  • CMDB运维开发项目

     ITIL:Information Technology Infrastructure Library 信息技术基础架构库,主要适用于IT服务管理(ITSM)。ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范。

    CMDB(Configuration Management Database 配置管理数据库)

    存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。在实际的项目中,CMDB常常被认为是构建其它ITIL流程的基础而优先考虑,ITIL项目的成败与是否成功建立CMDB有非常大的关系。
    70%~80%的IT相关问题与环境的变更有着直接的关系。实施变更管理的难点和重点并不是工具,而是流程。即通过一个自动化的、可重复的流程管理变更,使得当变更发生的时候,有一个标准化的流程去执行,能够预测到这个变更对整个系统管理产生的影响,并对这些影响进行评估和控制。而变更管理流程自动化的实现关键就是CMDB。

    • 整合是指能够充分利用来自其他数据源的信息,对CMDB中包含的记录源属性进行存取,将多个数据源合并至一个视图中,生成连同来自CMDB和其他数据源信息在内的报告
    • 调和能力是指通过对来自每个数据源的匹配字段进行对比,保证CMDB中的记录在多个数据源中没有重复现象,维持CMDB中每个配置项目数据源的完整性;自动调整流程使得初始实施、数据库管理员的手动运作和现场维护支持工作降至最低
    • 同步指确保CMDB中的信息能够反映联合数据源的更新情况,在联合数据源更新频率的基础上确定CMDB更新日程,按照经过批准的变更来更新 CMDB,找出未被批准的变更
    • 应用映射与可视化,应用间的关系以及应用和其他组件之间的依存关系,变更造成的影响等
    • 配置项:纳入配置管理范畴的工作成果都是配置项(CI)
    • 配置项名称:配置项根据生成规则自动生成的名称信息
    • 设备名称:该设备的hostname
    • 设备序列号:设备的出厂S/N号码
    • 主管人员:设备/系统主管人员
    • 维护人员:设备/系统维护人员
    • 系统名称:该设备/应用/系统的标准名称(地市的系统名称则添加前缀地市名称,如:广州统一信息平台)
    • 区域:设备/系统/软件所使用公司划分,如:省公司、广州、深圳等
    • 网元状态:工程、退网、退网待删除、现网(不承载业务)、现网(承载业务)
    • 设备类型:使用设备的类型,即交换机、路由器、防火墙、小型机等
    • 品牌:设备的品牌,一般国外的厂商用英文大标识,国内的厂商用中文标识;虚拟机的品牌为虚拟技术实现的品牌,如Vmware等
    • 管理IP:设备的实际管理IP
    • 标准名:统一标准命名规范化;地市_业务系统_设备类型_编号 。如:省公司_综合网管系统_防火墙_001

    目前CMDB资产管理的实现有如下方式:
    1.SSH类

    基于CMDB中控机和SSH对远程服务器执行命令实现

     1 # 基于paramiko模块, pip3 install paramiko
     2 import requests
     3 import paramiko
     4 
     5 # ################## 获取今日未采集主机名 ##################
     6 #result = requests.get('http://www.127.0.0.1:8000/assets.html')
     7 # result = ['c1.com','c2.com']
     8 
     9 
    10 # ################## 通过paramiko连接远程服务器,执行命令 ##################
    11 # 创建SSH对象
    12 ssh = paramiko.SSHClient()
    13 # 允许连接不在know_hosts文件中的主机
    14 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    15 # 连接服务器
    16 ssh.connect(hostname='192.168.179.130', port=22, username='root', password='')
    17 
    18 # 执行命令
    19 stdin, stdout, stderr = ssh.exec_command('ifconfig')
    20 
    21 # 获取命令结果
    22 result = stdout.read()
    23 
    24 # 关闭连接
    25 ssh.close()
    26 print(result)
    27 
    28 # data_dict = {result}
    29 
    30 # ##################  发送数据 ##################
    31 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)

    去api取今天未采集资产的主机列表,把主机名拿过来,远程连接服务器,执行命令,把结果拿回来,给中控机再汇报给api--负责入库。

    优点是无agent,缺点是慢

    2.Agent 基于shell命令实现

    import subprocess
    import requests
    # pip3 install requests
    
    # ################## 采集数据 ##################
    result = subprocess.getoutput('ipconfig')
    # result正则处理获取想要数据
    
    # 整理资产信息
    data_dict ={
        'nic': {},
        'disk':{},
        'mem':{}
    }
    
    ##################  发送数据 ##################
    requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)

    对于Agent的版本的实现思路:

    • Agent采集硬件资产
    • API提供相关处理的接口
    • 管理平台为用户提供可视化操作

    3.saltstack

    # 1. 安装saltstack
    #       rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
    #
    
            Master: yum install salt-master
           Master准备:
                a. 配置文件,监听本机IP
                    vim /etc/salt/master
                    interface: 本机IP地址
                b. 启动master
                    /etc/init.d/salt-master start
    
    
            Slave:  yum install salt-minion
            Slave准备:
                a. 配置文件,连接那个master
                    vim /etc/salt/minion 16行
                    master: 远程master地址
                b. 启动slave
                    /etc/init.d/salt-minion start
    
    2. 创建关系
        查看
        Master:salt-key -L
            Accepted Keys:
            Denied Keys:
            Unaccepted Keys:
                c1.com
                c2.com
                c3.com
            Rejected Keys:
        接受
        Master:salt-key -a c1.com
            Accepted Keys:
                c1.com
                c2.com
            Denied Keys:
            Unaccepted Keys:
                c3.com
            Rejected Keys:
    
    3. 执行命令
        master:
            salt 'c1.com' cmd.run  'ifconfig'
        import salt.client
        local = salt.client.LocalClient()
        result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
    
        vim /usr/bin/salt
    
    import requests
    ################## 获取今日未采集主机名 ##################
    result = requests.get('http://www.127.0.0.1:8000/assets.html')
    result = ['c1.com','c2.com']
    
    
    ################## 远程服务器执行命令 ##################
    import subprocess
    result = subprocess.getoutput("salt 'c1.com' cmd.run  'ifconfig'")
    
    import salt.client
    local = salt.client.LocalClient()
    result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
    
    ##################  发送数据 ##################
    requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)

    4.Puppet
    基于Puppet的factor和report功能实现

    优点是自动汇报,缺点是使用ruby语言

     
  • 相关阅读:
    tomcat部署web应用的4种方法
    Spring连接数据库的几种常用的方式
    Spring 的两个配置容器的讲解
    c3p0详细配置
    tomcat启动很慢的原因
    J2EE程序员应该要掌握的linux知识
    hibernate-mapping的各种属性配置
    在Eclipse添加Android兼容包( v4、v7 appcompat )
    微信抢红包软件-android
    Gradle sync failed: Failed to find Build Tools revision 26.0.2的解决办法
  • 原文地址:https://www.cnblogs.com/ningxin18/p/7881216.html
Copyright © 2011-2022 走看看