3.
选择一个可以测量单个事务持续时间的ITIL监控工具。虽然吞吐率是重要的,但是最终用户关心的是在发出请求之后事务执行的时间。如果事务执行时间对于关键应用来说是可以接受的,那么就无须担心底层的事务细节了。

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

3.1.2.1 准备工作
  1. 做好基础配置信息,IT资产的配置项依赖于基础的配置信息,
    基础的配置信息包括组织、联系人、品牌、型号、OS系统及版本、用户角色、机柜、机位、电源等;

    图片 1
    组织信息配置

    图片 2
    联系人信息配置

    图片 3
    基础类型配置

  2. 做好基础配置数据后,就可以对配置项进行增加、修改、删除等操作。

Python开发【Django】:CMDB开发,djangocmdb

Infrastructure Technology Infrastructure Library
(ITIL)承诺能够提高员工生产力,缩短解决问题时间,以及将IT运营更加紧密地向业务目标看齐。但为了实现ITIL和使它投入运行,您必须首先找到正确的ITIL监控工具以便详细且精确地了解网络组件以及它们之间的数据流。

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

3.1 配置管理

浅谈ITIL

  TIL即IT基础架构库(Information Technology Infrastructure Library,
ITIL,信息技术基础架构库)由英国政府部门CCTA(Central Computing and
Telecommunications Agency)在20世纪80年代末制订,现由英国商务部OGC(Office
of Government
Commerce)负责管理,主要适用于IT服务管理(ITSM)。ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范。

1、事件管理(Incident Management)

事故管理负责记录、归类和安排专家处理事故并监督整个处理过程直至事故得到解决和终止。事故管理的目的是在尽可能最小地影响客户和用户业务的情况下使IT系统恢复到服务级别协议所定义的服务级别。

目标是:在不影响业务的情况下,尽可能快速的恢复服务,从而保证最佳的效率和服务的可持续性。事件管理流程的建立包括事件分类,确定事件的优先级和建立事件的升级机制。

2、问题管理(Problem Management)

问题管理是指通过调查和分析IT基础架构的薄弱环节、查明事故产生的潜在原因,并制定解决事故的方案和防止事故再次发生的措施,将由于问题和事故对业务产生的负面影响减小到最低的服务管理流程。与事故管理强调事故恢复的速度不同,问题管理强调的是找出事故产生的根源,从而制定恰当的解决方案或防止其再次发生的预防措施。

目标是:调查基础设施和所有可用信息,包括事件数据库,来确定引起事件发生的真正潜在原因,一起提供的服务中可能存在的故障。

3、配置管理(Configuration Management)

配置管理是识别和确认系统的配置项,记录和报告配置项状态和变更请求,检验配置项的正确性和完整性等活动构成的过程,其目的是提供IT基础架构的逻辑模型,支持其它服务管理流程特别是变更管理和发布管理的运作。

目标是:定义和控制服务与基础设施的部件,并保持准确的配置信息。

4、变更管理(Change Management)

变更管理是指为在最短的中断时间内完成基础架构或服务的任一方面的变更而对其进行控制的服务管理流程。变更管理的目标是确保在变更实施过程中使用标准的方法和步骤,尽快地实施变更,以将由变更所导致的业务中断对业务的影响减小到最低。

目标是:以受控的方式,确保所有变更得到评估、批准、实施和评审。

5、发布管理(Release Management)

 发布管理是指对经过测试后导入实际应用的新增或修改后的配置项进行分发和宣传的管理流程。发布管理以前又称为软件控制与分发。

目标是:在实际运行环境的发布中,交付、分发并跟踪一个或多个变更。

 

实际工作场景中自动化工具举例:

图片 4

 

 

在全面地检查初始应用之后,接下来是处理其它的应用。要通过每个分析得到的信息继续监控应用性能,检测问题,并估计将来由于业务需求变化引起的流量级别变化而带来的容量问题。

3.saltstack

3.1.2 配置项管理

iTop系统提供了配置项管理功能,方便IT运维工程师可以通过配置项类型维护相关的配置项信息。

iTop系统维护复杂的IT资产关联关系,
配置项之间的关系存在相互的关联,如下图所示。

图片 5

配置项关联

因此,在实际的CMDB配置数据库管理过程中,
一般按照硬件基础设施到软件基础设施的配置管理过程进行配置管理的。

注:
以下配置说明过程可能与实际的系统有所差别(如后期系统定制),配置时以实际的系统操作为准。

CMDB

  CMDB –Configuration Management Database
配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性

在实际的项目中,CMDB常常被认为是构建其它ITIL流程的基础而优先考虑,ITIL项目的成败与是否成功建立CMDB有非常大的关系。

70%~80%的IT相关问题与环境的变更有着直接的关系。实施变更管理的难点和重点并不是工具,而是流程。即通过一个自动化的、可重复的流程管理变更,使得当变更发生的时候,有一个标准化的流程去执行,能够预测到这个变更对整个系统管理产生的影响,并对这些影响进行评估和控制。而变更管理流程自动化的实现关键就是CMDB。
CMDB工具中至少包含这几种关键的功能:整合、调和、同步、映射和可视化。

整合是指能够充分利用来自其他数据源的信息,对CMDB中包含的记录源属性进行存取,将多个数据源合并至一个视图中,生成连同来自CMDB和其他数据源信息在内的报告;

调和能力是指通过对来自每个数据源的匹配字段进行对比,保证CMDB中的记录在多个数据源中没有重复现象,维持CMDB中每个配置项目数据源的完整性;自动调整流程使得初始实施、数据库管理员的手动运作和现场维护支持工作降至最低;

同步指确保CMDB中的信息能够反映联合数据源的更新情况,在联合数据源更新频率的基础上确定CMDB更新日程,按照经过批准的变更来更新
CMDB,找出未被批准的变更;

应用映射与可视化,说明应用间的关系并反应应用和其他组件之间的依存关系,了解变更造成的影响并帮助诊断问题。

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

1、Paramiko类

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

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', password='123')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()

# 关闭连接
ssh.close()

2、SaltStack

基于SaltStack的master上的pillar以及远程执行命令实现

import salt.client
local = salt.client.LocalClient()
local.cmd('*', 'cmd.run', ['whoami'])

3、Puppet

puppet中默认自带了5个report,放置在【/usr/lib/ruby/site_ruby/1.8/puppet/reports/】路径下。如果需要执行某个report,
那么就在puppet的master的配置文件中做如下配置:

######################## on master ###################
/etc/puppet/puppet.conf
[main]
reports = store #默认
#report = true #默认
#pluginsync = true #默认


####################### on client #####################

/etc/puppet/puppet.conf
[main]
#report = true #默认

[agent]
runinterval = 10
server = master.puppet.com
certname = c1.puppet.com

如上述设置之后,每次执行client和master同步,就会在master服务器的 【/var/lib/puppet/reports】路径下创建一个文件,主动执行:puppet agent  --test

图片 6

在 /etc/puppet/modules 目录下创建如下文件结构: 

modules
└── cmdb
    ├── lib
    │   └── puppet
    │       └── reports
    │           └── cmdb.rb
    └── manifests
        └── init.pp

################ cmdb.rb ################
# cmdb.rb
require 'puppet'
require 'fileutils'
require 'puppet/util'

SEPARATOR = [Regexp.escape(File::SEPARATOR.to_s), Regexp.escape(File::ALT_SEPARATOR.to_s)].join

Puppet::Reports.register_report(:cmdb) do
  desc "Store server info
    These files collect quickly -- one every half hour -- so it is a good idea
    to perform some maintenance on them if you use this report (it's the only
    default report)."

  def process
    certname = self.name
    now = Time.now.gmtime
    File.open("/tmp/cmdb.json",'a') do |f|
      f.write(certname)
      f.write(' | ')
      f.write(now)
      f.write("\r\n")
    end

  end
end


################ 配置 ################
/etc/puppet/puppet.conf
[main]
reports = cmdb
#report = true #默认
#pluginsync = true #默认 

自定义factor示例
图片 7

$LOAD_PATH.unshift(File.dirname(__FILE__)) unless $LOAD_PATH.include?(File.dirname(__FILE__))
require "rubygems"
require 'pp'
require 'json'
require 'utils'

def dmi_get_ram(cmd)

    ram_slot = []

    key_map = {
        'Size' => 'capacity',
        'Serial Number' => 'sn',
        'Type' => 'model',
        'Manufacturer' => 'manufactory',
        'Locator' => 'slot',
    }

    output = Utils.facter_exec(cmd)
    devices = output.split('Memory Device')

    devices.each do |d|
      next if d.strip.empty?
      segment = {}
      d.strip.split("\n\t").each do |line|
        key, value = line.strip.split(":")
        if key_map.has_key?(key.strip)
          if key.strip == 'Size'
            segment[key_map['Size']] = value.chomp("MB").strip.to_i / 1024.0 # unit GB
          else
            segment[key_map[key.strip]] =  value ? value.strip : ''
          end
        end
      end

      ram_slot.push(segment) unless segment.empty?
    end

    return ram_slot

end

Facter.add("ram") do
  confine :kernel => "Linux"
  setcode do

    ram_slot = []
    cmd = "dmidecode -q -t 17 2>/dev/null"
    ram_slot = dmi_get_ram(cmd)

    JSON.dump(ram_slot)

  end
end


Facter.add("ram") do
  confine :kernel => 'windows'
  setcode do

    ram_slot = []

    if Facter.value(:manufacturer)  =~ /.*HP.*/i
      cli = 'C:\cmdb_report\dmidecode.exe'
      cmd = "#{cli} -q -t 17"
      ram_slot = dmi_get_ram(cmd) if File.exist?(cli)

    else

      require 'facter/util/wmi'
      Facter::Util::WMI.execquery("select * from Win32_PhysicalMemory").each do | item |

        if item.DeviceLocator
          slot = item.DeviceLocator.strip
        else
          slot = ''
        end

        if item.PartNumber
          model = item.PartNumber.strip
        else
          model = ''
        end

        if item.SerialNumber
          sn = item.SerialNumber.strip
        else
          sn = ''
        end

        if item.Manufacturer
          manufactory = item.Manufacturer.strip
        else
          manufactory = ''
        end

        ram_slot.push({
         'capacity' => item.Capacity.to_i / (1024**3), # unit GB
         'slot' => slot,
         'model' => model,
         'sn' => sn,
         'manufactory' => manufactory,
       })

      end
    end

    JSON.dump(ram_slot)

  end
end

内存信息

4、Agent

基于shell命令实现

图片 8  

 

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

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

 

 

浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure
Library, ITIL,信息技术基础架构库)由英国政府…

如果从单一的供应商购买全套工具设备,兼容性是不会有问题的,但是如果要整合多个供应商的工具,兼容性就可能是一个问题。为了解决兼容性问题,有些供应商开发了支持更广泛地使用的其它供应商的产品的接口,或者将开放API添加到它们的产品中。

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

2. iTop系统概述

iTop,是IT运营门户(IT Operation
Portal)的简称,它是一个开源web应用程序,适用于IT服务的日常运维管理。它基于ITIL最佳实践,适应符合ITIL最佳实践的流程,同时它又很灵活,可以适应一般的IT服务管理流程。

iTop的核心是CMDB,即配置管理数据库(Configuration Management Data
Base)。CMDB是iTop最早开发的部分。以CMDB为中心的设计理念,需要保证CMDB的准确性和及时更新,服务人员和客户均使用iTop来解决运维管理中的各类问题将会对这一点有帮助。此外,CMDB与其它工具,如监控系统、报表工具、库存管理系统等整合得越多,CMDB的信息就会越丰富。CMDB快速实施,与其它系统相比iTop有丰富的CMDB接口,支持多种方式的数据导入。

iTop具备方便、快捷的二次开发接口,仅需要简单的数据库表操作知识及XML编写知识即可完成表单的二次开发定制。

iTop的功能包括:

  • 记录IT配置项(如服务器、应用程序、网络设备、虚拟机、联系人、位置、VLAN等)及其各个配置项之间的关联关系;
  • 管理事件、用户请求和变更审批与执行等;
  • 归档IT服务及与外部供应商的合约,包括SLA(服务级别协议);
  • 手动或脚本方式导出所有信息;
  • 批量导入或同步/联调所有来自外部系统的数据;

iTop角色包括:

  • 超级管理员(Administrator);
  • 变更主管(Change Supervisor);
  • 变更审批经理(Change Approver);
  • 变更执行人员(Change Implementor);
  • 文档作者(Document author);
  • 服务经理(Service Manager);
  • 桌面支持(Service Desk Agent);
  • 现场工程师(Support Agent);
  • 配置管理员(Configuration Manager);
  • 门户增强用户(Portal power user);
  • 门户用户(Portal user);
  • 问题经理(Problem Manager);

iTop基于Apache/IIS、MySQL和PHP,它可以在任何支持这些程序的操作系统上运行,如Windows、Linux(Debian、Ubuntu和RedHat)、Solaris和MacOS
X等。此外,由于iTop是基于B/S架构的应用程序,不需要在用户电脑上部署任何客户端,只需要一个简单的Web浏览器(IE
8+、Firefox 3.5+、Chrome或Safari 5+)即可使用。

之前关于服务器的描述包括了其物理部分、OS、数据库和应用,在虚拟化中还必须包括不断更新的虚拟软件记录,及其中运行的大量的VM和一整套应用。

2.Agent 基于shell命令实现

3.1.1 概述

配置管理提供了一个虚拟数据库,用来记录企业中的基础设施信息以及它们之间的关联关系,并提供科学化的流程来负责核实IT基础设施中实施的变更和配置项之间的关系记录是否正确、监控IT组件的运行状态,以确保配置管理数据库(CMDB)能够准确地反映目前IT运行环境配置项的实际状况。

从IT管理的角度上来看,对IT资产配置项(CI)的修改不应直接进行,而必须由变更管理流程发起,因此配置管理与变更管理是紧密结合的,变更管理流程引发和控制对配置项的修改和变更;相反,配置管理向变更管理提供详细的配置信息,以帮助变更发起人分析评估变更对IT运营所带来的影响。

iTop应用系统提供了一个完备的CMDB管理应用,使得IT运维人员可以管理其IT资产的配置项信息。它通过识别、控制、维护和验证现有的所有配置项(CIs)的版本,提供一个IT基础设施的逻辑模型。由于CMDB会记录配置项之间的关系,因此IT运维工程师们基于其关联关系对基础设施与服务之间的依赖关系进行分析。

图片 9

iTop系统配置管理

所有配置项(CI)都在iTop系统的数据模型中得到展现,并且可以根据企业本身的应用配置需求进行自定义。针对CI的所有变更可以通过变更时间、变更的属性值(旧值和新值)以及变更人员来对配置变更进行跟踪。

虚拟化:主要的挑战

 

3. iTop功能操作

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注