22
iTop 实施杂记及文档翻译 基于 iTop 构建运维平台 作者:An He 时间:2021/10/11 使用 PanBook 编译

iTop 实施杂记及文档翻译 - panbook.annhe.net

  • Upload
    others

  • View
    37

  • Download
    0

Embed Size (px)

Citation preview

Page 1: iTop 实施杂记及文档翻译 - panbook.annhe.net

iTop实施杂记及文档翻译

基于 iTop构建运维平台

作者:An He

时间:2021/10/11

使用 PanBook编译

Page 2: iTop 实施杂记及文档翻译 - panbook.annhe.net

Copyright © 2021 An He

PUBLISHED BY PANBOOKHTTPS://GITHUB.COM/OPS-ITOP/ITOP-BOOK

Licensedunder theCreativeCommonsAttribution-NonCommercial 3.0UnportedLicense (the “License”).You may not use this file except in compliance with the License. You may obtain a copy of the Licenseat http://creativecommons.org/licenses/by-nc/3.0. Unless required by applicable law oragreed to inwriting, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUTWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specificlanguage governing permissions and limitations under the License.

最后编译日期, 2021/10/11 21:42:00

Page 3: iTop 实施杂记及文档翻译 - panbook.annhe.net

CMDB:降本增效的利器

借用物理上的熵增概念,封闭系统总是朝着无序的方向发展的。IT环境也是如此,越来越多的设备,越来越多的业务,越来越多的人员,总是会像越来越混乱的方向发展。当规模扩张到一定程度时,凭人力维护Wiki或者 Excel就会越来越力不从心。混乱的 IT环境一般会导致资源空跑,变更易出错,琐事占用大量时间等问题。因此,IT运维的一大价值就是要用技术手段去对抗熵增,抑制熵增,而最基础的技术手段就是 CMDB。一个设计良好的 CMDB,一个能将资源管理的井井有条的 CMDB,是降本增效的利器。

而在众多的 CMDB软件中,iTop以其易于理解的概念,直观的模型设计逻辑和方法,可扩展的插件及 API能力,强大的查询及导入导出功能,开源并且相对活跃的社区,无疑是一个很好的选择。

Page 4: iTop 实施杂记及文档翻译 - panbook.annhe.net

自序

入行运维的第一份工作是某知名互联网公司的基础运维岗,主要的工作是处理涉及 IDC的各种工单,比如服务器安装重装,机器故障处理等等。日常用的系统主要就是工单系统和 CMDB。经常要在两个系统之间复制粘贴数据,比如有一类改 IP的工单,流程复杂,做完之后还要手动去 CMDB更新 IP和上联交换机信息。还有一类现场外包操作的,需要在外包工单系统里手写有一定格式要求的外包工单,包括服务器 SN,IP,管理员姓名电话等,同样是繁琐的复制粘贴。第二份工作,在一个互联网公司的业务部门做运维,没有了 IDC相关工作的烦恼。但是有记录机器归属的业务和开发人员的需求,还需要在 Zabbix里配置报警发送的开发人员。没有 CMDB时,同事们习惯记录在WIKI里,Zabbix的报警联系人也是手工维护。当业务数量越来越多,机器,数据库资源也越来越多时,WIKI和 Zabbix的信息维护就越来越困难,迫切需要一个 CMDB工具去解决这个问题。不像第一份工作已经有一个现成的不太好用的 CMDB,我需要自己决定如何实现 CMDB。就这样,我接触到了 iTop。

iTop是一个 PHP开发的开源运维管理工具,CMDB是其核心功能,另外还自带了一套工单系统,支持请求管理,事件管理,变更管理等兼容 ITIL的流程。iTop使用面向对象的方式来对现实世界建模,非常直观,易于理解。比如服务器和网络设备都有 SN,主机名,机柜等属性,将共同属性提取出来,定义一个父类。iTop不仅自带了常用的模型,包含服务器,网络设备,办公设备,业务,软件等,还能够根据自身业务场景需求,灵活的增删或修改模型。通过 iTop完善的插件体系,只需用 XML来描述数据模型,iTop负责将其编译为 PHP代码,即使没有太多编程能力,也能快速设计和定制自己的 CMDB,非常适合运维人员。如果有更多 PHP编码的能力,还可以进行更深入的定制,比如增加自定义的属性类型,给某一类 CI增加操作,写入前检查 CI的合规性等等。

iTop的工单系统也可以通过定制简化很多运维工作,比如通过请求管理来做新业务申请,工单完成后,自动将新业务录入 iTop,并且建立和申请人的关联关系。再比如,可以将报警事件写入 iTop的事件管理,自动分配给报警业务对应的联系人,来进行故障处理的跟踪。还有,通过变更管理,添加相关配置项,通过影响分析功能,图形化分析变更涉及的业务和人员。

iTop足够灵活,只要想得到,你能用它完成很大一部分运维需求。比如将业务和联系人的关联关系做成一个开放接口,用于发报警时取联系人。比如基于 iTop对URL进行建模,做一个URL监控系统的前端。比如用 iTop对 Kubernetes的 Deployment,Service,Ingress进行建模,低成本的实现一个 Kubernetes管理平台。

iTop在数据管理方面也提供了很多好用的工具,比如强大的导入导出功能,全字段的筛选功能,OQL查询功能,基于 OQL查询的数据审计功能等等。本文档将记录 iTop使用过程中的一些问题,定制方法,场景建模,以及文档翻译等等内容。也希望

国内 iTop用户能够参与进来,共同完善。

Page 5: iTop 实施杂记及文档翻译 - panbook.annhe.net

目录

CMDB:降本增效的利器 B

自序 C

表格列表 E

插图列表 F

1 iTop概览 11.1 iTop简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 iTop的价值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 快速部署 iTop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 iTop的建模逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 用户手册 5

3 工单门户使用手册 6

4 数据模型 7

5 管理员手册 8

6 插件介绍 96.1 Admin tools delegation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96.2 Approval process automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

7 与其他系统集成 10

8 定制开发案例 118.1 属性类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

9 运维场景解决方案 129.1 URL自助监控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

参考文献 15

Page 6: iTop 实施杂记及文档翻译 - panbook.annhe.net

表格列表

1.1 3中开源 CMDB的对比 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

9.1 iTop管理 URL主要属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Page 7: iTop 实施杂记及文档翻译 - panbook.annhe.net

插图列表

1.1 iTop首页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 iTop服务器网络设备继承关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

9.1 使用 iTop管理 URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139.2 Url状态图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139.3 Url用户操作效果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Page 8: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 1章 iTop概览

1.1 iTop简介iTop是 IT Operational Portal的缩写,即 IT运维门户。iTop是一个开源的 PHPWEB应用,定位是

用于日常运维操作。iTop的设计考虑了 ITIL的最佳实践,但并没有规定任何特定的流程,无论你是想要非正式的,务实的流程还是严格的 ITIL行为,iTop都具有足够的灵活性以适应你的流程。

iTop的核心是 CMDB(Configuration Management Data Base配置管理数据库),它最初是 iTop开发的第一部分。然后是工单等流程系统。

iTop背后的理念是 CMDB必须是一种操作工具。CMDB准确且最新的唯一方法是由 IT团队(运维工程师,IT工程师等)每天使用。而且,CMDB与其他 IT工具(监视系统,报告工具,自动清单等)的集成程度越高,CMDB带来的的效果就越好。

iTop的特点及使用场景:记录你的 IT基础架构以及基础架构的各个部分与人员之间的所有关系(服务器,应用程序,网络设备,虚拟机,联系人,位置…)管理事件,用户请求,计划内的停机…通过手动或者脚本方式导出所有 CI数据批量导入(手动和使用脚本)或同步/联合来自外部系统的任何数据iTop的用户可以是:桌面支持技术支持工程师(一线,二线..)服务经理IT经理最终用户:简化的 “门户”界面可用于让他们直接提交工单iTop基于 PHP和MySQL,WEB服务器可以是 Nginx,Apache或者 IIS:iTop可以在支持上述应用程序的任何操作系统上运行。它已经在Windows,Linux(Debian,Ubuntu

和 Redhat)上进行了测试。还可以在 Solaris和MacOS X上运行。由于 iTop是基于Web的应用程序,因此您无需在每个用户的 PC上部署任何客户端软件。一个简单的Web浏览器就足够了(IE 10 +,FF 48 +,Chrome或 Safari 5+)。

1.2 iTop的价值iTop的核心是 CMDB,首先讨论 CMDB对企业的价值。CMDB最重要的价值大概是让 IT负责人能

够对管理的资源做到心中有数,知道存在多大的浪费,合理规划资源,为公司省钱。另外一个重要用途是利用 CMDB记录的资源,业务,人员以及它们之间的关联关系,为运维决策,运维自动化提供数据支持,提高效率。总结来说,就是降本增效(所谓运维的三大价值,稳定,安全,降本增效)。同时 CMDB对稳定和安全方面也有重要意义,比如将资源和关联关系管理的井井有条,自然就不会出现业务出问题找不到人的情况,也不会出现业务下线没人维护暴露安全风险的情况,稳定性和安全性自然就提高了。

Page 9: iTop 实施杂记及文档翻译 - panbook.annhe.net

1.3 快速部署 iTop

1.3 快速部署 iTop

本节以Ubuntu 19.10为例,介绍 iTop的部署。iTop是基于 PHP和MySQL的程序,如果还没有 PHP环境,需要先安装依赖软件,如代码 1.1所示。

代码 1.1:安装 iTop依赖软件

# 安装 PHP 及依赖# apt install php7.3 php7.3-fpm php7.3-xml php7.3-mysql php7.3-soap php7.3-ldap

php7.3-zip php7.3-json php7.3-mbstring php7.3-gd↪→

# 安装 Graphviz# apt install graphviz# 安装 MySQL# apt install mysql-server mysql-client# 安装 Nginx# apt install mginx

接下来在 Nginx中为 iTop配置一个 Server,并且启用 path_info(iTop Portal用),见代码 1.2。代码 1.2: iTop Nginx配置

location ~ [^/]\.php(/|$){

fastcgi_pass unix:/tmp/php-fpm.sock;fastcgi_index index.php;include fastcgi.conf;include pathinfo.conf;

}

# pathinfo.conf 内容为fastcgi_split_path_info ^(.+?\.php)(/.*)$;set $path_info $fastcgi_path_info;fastcgi_param PATH_INFO $path_info;try_files $fastcgi_script_name =404;

然后访问为 iTop配置的域名或者 IP,会自动跳转到交互式的安装向导。安装完成后首页如图 1.1所示。

1.4 iTop的建模逻辑CMDB工具本质上应该提供一种建模的工具,能够快速并且恰当的描述 IT基础设施。那么,iTop是

如何建模的呢?和其他工具又有什么区别呢?对比 3款常用的开源 CMDB软件,分析出面向对象和直接建模两种建模逻辑,插件代码和界面两种

模型描述方式,如表 1.1所示。

表 1.1: 3中开源 CMDB的对比产品 建模逻辑 建模方式/模型存储 插件iTop 面向对象 插件/代码 支持CMDBuild 面向对象 界面/数据库 不支持bk-cmdb 直接建模 界面/数据库 不支持

所谓面向对象建模,指的是对具有共性的模型进行抽象,提取出共同属性放到抽象类中,比如数据

2

Page 10: iTop 实施杂记及文档翻译 - panbook.annhe.net

1.4 iTop的建模逻辑

图 1.1: iTop首页

中心里面有服务器和交换机,路由器,防火墙等设备,它们都属于物理设备,都有序列号,资产编号这样的属性,因此,定义一个抽象类 DataCenterDevice,即数据中心设备,属性包括序列号,资产编号等通用属性,服务器,网络设备都是它的子类,这样,子类里面就不需要重复定义序列号,资产编号之类的属性。并且,服务器可以上联网络设备,网络设备之间也能连接,这时只需要定义 DataCenterDevice和网络设备的连接关系,就能够描述了。

反观直接建模,即没有抽象类的方式,所有 CI存储所有属性,服务器,网络设备会分别存储序列号,资产编号属性,关联关系也需要分别定义服务器和网络设备,网络设备之间的两个关系,模型维护起来会比面向对象建模更加复杂。

以服务器和网络设备为例,iTop里面向对象的建模逻辑如图 1.2所示。

FunctionalCI

id

name

description

org_id

move2production

contacts_list

...

PhysicalDevice

id

serialnumber

asset_number

location_id

status

brand_id

model_id

purchase_date

end_of_warranty

...

ConnectableCI

id

networkdevice_list

physicalinterface_list

DatacenterDevice

id

rack_id

enclosure_id

nb_u

powerA_id

powerB_id

...

Server

id

cpu

ram

osfamily_id

osversion_id

...

NetworkDevice

id

ram

iosversion_id

...

图 1.2: iTop服务器网络设备继承关系

建模方式的两种技术路线,插件代码和界面,简单对比如下:代码更容易协作,容易记录模型设计思路,容易记录模型变更历史代码方式定制性更强,能实现很多界面无法实现的需求,比如 iTop的 DBOjbect提供了很多Hook,能精确控制对象入库前后的操作代码方式更容易在不同环境间迁移,如果没有良好的工具支持,界面方式似乎在测试环境和生产环

3

Page 11: iTop 实施杂记及文档翻译 - panbook.annhe.net

1.4 iTop的建模逻辑

境之间迁移很不方便代码方式能够利用社区成果,使用优质插件提高 CMDB建设效率,比如基于 TeemIP插件,很容易建立一个 IPAM系统因此代码插件这条路线是更好的选择。

4

Page 12: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 2章 用户手册

Page 13: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 3章 工单门户使用手册

Page 14: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 4章 数据模型

Page 15: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 5章 管理员手册

Page 16: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 6章 插件介绍

iTop有很多开源的或者收费的插件,可以拿来直接用,也可以参考开源插件来设计自己的插件。

6.1 Admin tools delegation

New profiles to delegate User, Audit, Notification,… to non-admin users

6.2 Approval process automation

Page 17: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 7章 与其他系统集成

Page 18: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 8章 定制开发案例

本节主要翻译 iTop官方Wiki的 “How To”。1

8.1 属性类8.1.1 给 Server新增一个属性这是最简单的例子,通过本例能了解到最基本的 iTop扩展流程和方式,以及学会加属性这个可能是

最常用的定制需求。

1https://www.itophub.io/wiki/page?id=2_7_0%3Acustomization%3Astart

Page 19: iTop 实施杂记及文档翻译 - panbook.annhe.net

第 9章 运维场景解决方案

9.1 URL自助监控我们工作中有很大一部分场景,是以某种方式接受研发的需求,然后去交付。邮件也好,微信也好,

口头也好,无非是把这些需求通过某种方式传递给运维。那么,把接收需求的方式变成在线表单,用程序去执行,不就实现运维自动化了吗?但是,有时候为了一个功能,去从头开发一个系统,从头去设计权限管理,操作界面,数据库表等等事情,是很麻烦的。通过 iTop,将需要要操作的资源抽象成一个模型,把它当作 CI来管理,能帮助我们低成本的实现这类需求。

本节就以 URL自助监控为例,介绍这类需求实现的思路和方法。

9.1.1 业务场景描述某个 API,或者WEB页面,需要定时访问,判断业务是否在线,主要检查以下三项:URL的响应状态码是否符合预期?URL的响应内容是否符合预期?URL的响应时间是否在可接受范围内?最开始的实现方案,是一个 Python脚本程序,要求研发人员提供特定格式的配置文件,此脚本作为

定时任务执行监控,将结果发送到 Zabbix。然后在 Zabbix中配置报警联系人信息。分析其中的痛点:研发人员自行维护监控配置文件,有增删改时通过邮件发送给运维,运维需要人工操作。研发也缺少集中管理工具监控配置文件手工编写,容易出错。曾经有一次因为配置文件中一个不可见字符折腾了几个小时业务负责人变更后需要人工维护 Zabbix报警联系人信息

9.1.2 基于 iTop的改造方案为了避免这种情况,我们需要有一个系统让研发人员自助维护监控 URL的配置,并且能集中管理。

因此,考虑将 URL抽象成一个 iTop CI模型,用 iTop现成的 CI管理功能,来定制 URL监控管理的前端界面。

当时已经用 ApplicationSolution模型来管理业务,通过 lnkContactToFunctionalCI建立了业务和联系人的关联关系。URL作为一个有特定功能的对象,考虑作为 FunctionalCI的子类,添加一个到 Appli-cationSolution的外建来获得和业务的关联关系,这样,URL->ApplicationSolution->Contact的联系就建立起来了,既可以拿来做权限控制,也可以用来发报警。关系如图 9.1所示。主要属性说明如表 9.1所示。

9.1.3 生命周期通过定义生命周期,支持用户像操作工单那样执行上线下线监控的操作。状态图如图 9.2所示。用户操作效果如图 9.3所示。

9.1.4 约束条件

Page 20: iTop 实施杂记及文档翻译 - panbook.annhe.net

9.1 URL自助监控

Url

applicationsolution_id

url

monitor_node

status

method

header

require_code

require_str

require_time

...

ApplicationSolution

id

contacts_list

...

Person

id

email

phone

...

lnk

图 9.1:使用 iTop管理 URL

在线 已下线暂停监控

上线监控

图 9.2: Url状态图

图 9.3: Url用户操作效果

13

Page 21: iTop 实施杂记及文档翻译 - panbook.annhe.net

9.1 URL自助监控

表 9.1: iTop管理 URL主要属性属性 类型 用途url AttributeString 要监控的 URL,其实可以直接用 name属性,新定义

一个主要为了使用校验功能确保 URL合法applicationsolution_id AttributeExternalKey 归属的业务monitor_node AttributeEnum 节点代码,多节点时指定监控节点status AttributeEnum production,stock两个状态就够了method AttributeEnum 请求方法 GET,POST,PUT等headers AttributeText 请求头params AttributeText GET参数body AttributeText POST参数require_code AttributeString 要求响应的状态码require_str AttributeString 要求响应的内容timeout AttributeString 超时阈值interval AttributeString 监控间隔failed_count AttributeString 失败次数阈值

14

Page 22: iTop 实施杂记及文档翻译 - panbook.annhe.net

参考文献

[1] MACFARLANE J. Pandoc User Manual[J]. https://pandoc.org/MANUAL.html, 2019.

[2] KING H. Test Dummy Book[M]. China, 1321.