指标指用于描述一个物体或事物的某个性质的指数、规格、标准,使其可以和其他的物体或者事物比较;从软件的角度讲度量即把所有东西都量化、数据化、可采集。指标即表示对这些量化后的数据的目标值。
观测指标体系是指对监控指标进行体系化的规划、实现全生命周期管理、建设管理规范等的系统方法论。
在了解指标体系前,先了解下为什么需要进行指标体系的建设,结合过往的建设经验,主要有以下六个方面的原因:
经过嘉为蓝鲸多年的项目积累,对于指标管理体系的总结如下图。
基于图中的内容,接下来将详细介绍如何进行指标体系建设和设计。
01. 指标管理闭环
指标全生命周期管理,包含指标定义、指标评估、指标上线、指标运营四个阶段。
1)指标定义
2)指标评估
3)指标上线
4)指标运营
02. 指标管理规范
1)指标设计原则
2)指标分级规范
指标本身一般分三级,按重要程度区分:核心指标(生死指标)、关键指标(告警指标)和常规指标(分析指标)。
核心指标一定要配置告警基线,关键指标建议配置,而常规指标可以按业务场景考虑是否配置。后续通过不同指标的分级、权重,便可以很容易地建设起企业内的应用健康评估模型,衡量整个应用的健康情况。
3)指标命名规范
核心是可视可读,定义统一的指标命名规则,如包含编号的长度限制、编码的构成、各组成部分的具体含义等。
命名示例:
(1) 组件名_指标获取方式_指标分类_指标描述:
nginx_exporter_cachezone_max_size
(2) 系统名_插件获取方式_指标描述:
blueking_script_host_num
4)指标数据规范
指标数据规范,支撑上层场景实现的基石,定义需要谨慎,下面提供两种常见的指标数据格式规范供参考。
① JSON格式示例
② Prometheus Metrics 标准格式
03. 指标分层体系
从企业业务应用的全面管理视角出发,通常将监控体系划分为六个核心层级,以全面覆盖并优化企业的IT架构。这些层级依次为:基础设施层、硬件设备层、操作系统层、组件服务层、应用性能层、业务运营层。当然,企业也可以根据自身的实际情况和特定需求,对上述监控层级进行灵活调整或定制。
1)基础设施层
基础设施层,指机房的基础设施配备,用于保证机房的正常运转,包含动力、环境、安防等设备。
动力主要包含供电系统、发电机、UPS电源等电力供应设备,核心关注电力的状态、容量、电压、电流、稳定性、频率等指标。
环境主要包含温湿度计、空调、通风等环境监测和调节设备,核心关注环境设备的运行状态、环境温度、湿度等指标
安防主要包含视频摄像头、门禁、烟雾探测器、消防设备等安全防护设备,核心关注设备的运行状态、视频稳定性、门禁状态等指标。
该层设备的监控指标主要通过IOT传感器结合接口/SNMP协议以及HTTP接口的方式进行监控。
2)硬件设备层
硬件设备层,指服务器、存储、网络、安全四类常见硬件设备对象,用于提供应用运行所需的硬件资源。
服务器设备主要包含X86服务器、小机、大机等计算资源设备,随着分布式计算技术的普及,小机、大机这种性能超强的专用机器逐渐淘汰,X86服务器成为当下主流;核心关注服务器的电源、CPU、内存、磁盘、风扇等配件的工作状态和性能指标。服务器主要通过IPMI、Redfish、SNMP几种协议以及HTTP接口的方式进行监控。
存储设备主要包含磁盘阵列、磁带库、存储交换机等存储资源设备,随着虚拟存储的技术的出现,专用而昂贵的存储设备逐渐减少,取而代之的是廉价的服务器设备配合大量的硬盘通过虚拟化技术提供的存储资源;核心关注存储设备的容量、IOPS、运行状态、读写速率等指标。存储设备主要通过SNMP、SMI-S、SSH协议以及HTTP接口的方式进行监控。
网络设备主要包含交换机、路由器、负载均衡等网络资源设备;核心关注网络设备的运行状态、端口状态、端口流量、吞吐量、错误包、丢包率等指标。网络设备主要通过SNMP协议进行监控。
安全设备主要包含防火墙、入侵检测设备、防病毒设备、加密机等;核心关注安全设备的运行状态、接口状态、速率、丢包数、网络攻击数等指标。安全设备主要通过SNMP、SSH协议以及HTTP接口的方式进行监控。
3)操作系统层
操作系统层,除了包含传统意义上的各类操作系统之外,虚拟化、容器也纳入该层,虚拟化、容器本质上也是由操作系统驱动而提供的一种资源服务,如有需要,可单独划分虚拟化层。
操作系统主要包含Windows Server、Linux系的CentOS、RHEL、Suse、Ubuntu、AIX、HP-Unix等服务器操作系统;核心关注CPU使用率、内存使用率、磁盘使用率、磁盘IO速率、网卡流量等指标。操作系统主要通过Agent/插件的方式调用系统接口(例如WMI)或者内置命令行/文件进行监控。
虚拟化主要包含VMware、OpenStack、KVM、Citrix等虚拟化平台;核心关注平台主机、集群、存储的状态和资源容量、资源数、配额等指标。虚拟化主要通过HTTP接口的方式进行监控。
容器监控主要指K8s容器管理平台的监控;核心关注Cluster、Node、Container、Service、Workload等资源的状态、CPU负载、内存使用、磁盘使用、网络流量等指标。容器平台主要通过HTTP接口(ServiceMonitor)的方式进行监控。
4)组件服务层
组件服务层,一般指数据库、中间件及其运行进程等软件资源对象,部分监控系统经常将进程归属于操作系统监控,或者独立进行监控,反映的都是进程本身的状态,但是进程本质是各种数据库、中间件软件资源服务化的表现形式,应当隶属于资源实例监控的一部分。
数据库主要包含企业常用的各种关系型数据库MySQL、Oracle、MSSQL等,以及非关系型数据库MongoDB、Redis、InfluxDB等;核心关注的是数据库的连接数、读写速率、锁、索引命中率、连接数等指标。数据库主要通过数据库的Client/命令行或者通用的JDBC/ODBC协议执行SQL的方式或者自带的监控接口进行监控。
中间件主要包含Web中间件、消息中间件两种,例如WebLogic、Was、Tomcat、kafka、RabbitMQ等,其他的还有配置中间件、分布式事务、任务调度中间件等;核心关注的是中间件的吞吐量、连接数、JVM性能等指标。中间件主要通过中间件的自带的命令行工具或者通用的JMX协议或者自带的接口进行监控。
一般只有数据库、中间件或者应用本身的进程才会进行监控,进程监控核心关注进程状态、端口状态、进程的性能使用率等指标。进程主要通过Agent/插件的方式调用系统接口(例如WMI)或者命令行进行监控。
5)应用性能层
应用性能层,包含应用系统服务端和客户端两个方面,其中服务端主要指调用链,客户端主要包含移动端APP、PC端Web页面。
对于服务端的调用链,核心关注可用率、错误率、响应时间、吞吐率等关键性能指标。主要通过Traces调用链的方式进行监控。
对于客户的移动端APP和PC端的Web页面,核心关注浏览量、请求数、首屏时间、渲染时间、可用率、响应时间等关键性能指标。主要通过安卓/苹果的SDK以及JS的SDK进行监控。
另外,对于应用和服务的基础探测,也可以采用协议拨测的方式来实现,此时主要关注网站或接口的拨测可用率、拨测响应时间。主要通过HTTP/TCP/UDP协议通过拨测进行监控。
6)业务运营层
业务运营层,主要指业务系统中的业务数据的监控,需要根据业务系统的特点来进行梳理,常见的业务系统主要关注交易量、交易耗时、库存量、用户数、活跃用户数、在线用户数等业务核心指标。主要通过HTTP接口、数据库SQL、脚本、日志提取等方式进行监控。
以上便是指标管理体系的全部内容,但是指标的管理不仅仅是指标体系内容建立,还包括指标的管理规范和治理。不仅仅需要观测工具的承载,还需要相应的配套工具,如CMDB的建设,提供数据治理,对象管理等能力;ITSM流程系统,保障指标管理过程中的流程规范,保障顺利完成整个落地过程。
申请演示