解决方案:自定义监控采集平台实践

优采云 发布时间: 2022-11-24 09:39

  解决方案:自定义监控采集平台实践

  近年来,随着数据中心、云计算等技术的兴起,以及企业信息化建设的不断深入,各种信息系统变得越来越庞大、越来越复杂。相应地,各种信息系统的监控软件也必须不断更新。技术进化是适应不断变化的趋势的唯一途径。

  监控软件开发

  早期的计算机大多运行在单机上,其上部署的各种软件也大多是*敏*感*词*本。对于操作系统和各种软件的监控,在操作系统层面都提供了相关的工具软件,比如Unix/Linux的Top、PS、*stat命令工具,Windows的性能管理器等。一般通过人工检测,问题都找到了,解决了,方法比较简单。

  早期的监控系统主要是基于SNMP(简单网络管理协议)网络监控和系统(主要是操作系统)监控。一般来说,网络设备和操作系统都可以提供标准的SNMP服务,虽然一些Web服务器、数据库、中间件也部分支持通过SNMP获取状态,但都不是很完善,因此也缺乏对它们的监控。这一时期,开源监控系统还处于起步阶段,行业主流是商业监控系统,如IBM的Tivoli、HP的OpenView、CA的UniCenter等,市场很大,但主要服务于大客户,如银行、运营商等

  随着计算机技术的发展和进入互联网时代,各行业对业务、服务和应用的监控需求逐渐强烈。同时,越来越多的监控对象也变得越来越复杂。业界主流的商用监控系统,也与时俱进,拥有更大的市场。与此同时,开源监控软件也在不断发展壮大。虽然各种开源软件都声称可以监控各种类型的资源,但侧重点不同。有的侧重于网络监控,有的侧重于系统监控。,还有一些专注于云原生监控。目前国内流行的开源软件有Zabbix、Nagios、Prometheus等。

  监控软件可扩展性的挑战

  监控软件经过多年的迭代发展,无论是商业软件预置支持的监控能力,还是开源软件社区支持的监控能力,还是服务商定制的监控能力,各种监控系统的应用层面其实并不尽相同大不相同。然而,目前随着互联网技术的飞速发展,大量新的软硬件产品层出不穷,硬件设备种类繁多,型号繁多,商业软件更新换代,开源软件不断新兴。因此,对监控软件提出了新的挑战:必须具备快速适配能力,以满足企业对新产品监控的及时要求。

  传统的做法要么等待商业软件版本的迭代支持,要么等待开源软件社区的支持或者开源软件服务商的定制支持。但依托厂商或社区的做法,新产品普遍存在适应期,时效性无法保证,与企业的预期相去甚远。

  当然,客户通过定制监控来满足时效性要求也是一种可行的方法。因此,无论是商业软件还是开源软件,或多或少都提供了自定义监控采集的能力,一定程度上可以应对新软硬件产品的监控采集。但是,目前自定义采集的实现一般是使用各种复杂的配置文件,如XML/YML等,通过人工或自动化工具下发采集命令来实现,对用户的要求和学习成本都相当高。非常高,使用起来极其不方便,一般客户很难通过这种方式实现自定义采集

  因此,监控软件提供一个简单、易用、通用的自定义监控采集平台显得尤为重要。这些步骤都可以通过可视化界面配置来实现。通过可视化自定义监控采集平台,降低学习门槛,让各级运维人员都能轻松上手,必将成为未来监控软件发展的重要趋势。

  基于低代码思想

  自定义监控采集平台设计

  对于一个灵活可扩展的自定义监控采集平台,后端需要预置支持多种协议的采集适配器,同时需要提供南向接口供第三方采集器接入。实现前端所有的可视化配置,需要从以下几个方面入手:定义可配置的监控对象,定义监控指标,定义监控指标对应的采集指令,定义展示监测指标形式。

  其中,针对自定义监控对象指标的阈值配置,如阈值threshold和动态阈值,告警管理,如告警过滤、聚合汇聚等功能,可以复用监控系统平台自身的能力,设计自定义监控采集平台的 只需要根据规范适配监控系统的要求即可。

  预设采集

  自定义监控采集平台需要预置支持多种协议的采集适配器,包括脚本采集器、SNMP采集器、WMI采集器、SMI-S采集器、JMX采集器、数据库采集器、Exporter采集器、Python采集器等,以覆盖行业主流管理对象的监控采集方式。

  1.脚本采集

  脚本采集器需要支持shell/vbs/bat等业界主流的脚本语言。采集和计算逻辑一般封装在脚本中。采集

器执行脚本并指定南向数据接口的格式。脚本的返回值必须符合数据规范。只有这样才能连接到自定义采集平台。

  自定义采集平台可提供多种数据规范,如支持分隔符的数据格式或Json格式,其中key*表示指标名称;v* 表示相应指标的值:

  ||| 分隔符形式

  键1|||键2|||键3

  v11|||v12|||v13

  v21|||v22|||v23

  JSON格式

  [{

  “键1”:“值1”,

  “键2”:“值2”,

  “键3”:“值3”

  }, {

  “键1”:“值11”,

  “键2”:“值22”,

  “key3”:“value33”

  }]

  使用脚本采集器,可以通过ipmitools工具自定义基于复杂脚本采集指标,比如服务器硬件状态信息,shell脚本,为客户实现复杂的业务逻辑场景。

  2.SNMP采集

  SNMP作为最基本的简单网络管理协议,由网络设备、存储设备、服务器等通用硬件设备实现,SNMP采集器需要支持不同版本协议的采集,同时也需要实现两种采集方式:获取和步行。

  使用SNMP采集器,可以在监控系统不迭代新设备支持的情况下,快速定制对新设备自身的监控,以及根据mib描述的各组件的运行状态和性能指标。

  3.WMI采集

  WMI(Windows Management Instrumentation),Windows管理工具,是Windows操作系统中管理数据和操作的基本模块。WMI 采集

器可以通过 WMI 脚本采集

本地或远程计算机上的资源状态信息和性能数据。

  微软发布的应用套件,如IIS、Exchange、SharePoint等,都实现并发布了基于WBEM的CIM模型,相关的状态和性能计数器可以从WMI获取。使用WMI采集

器,您可以自定义采集

Windows系统和微软相关应用软件的性能计数器。

  4. SMI-S采集

  

" />

  SMI-S规范(Storage Management Initiative Specification)是众多存储厂商联合制定的标准管理接口,用于监控和管理不同厂商的存储设备。SMI-S采集

器主要用于采集

存储设备指标。监控采集。

  大多数存储设备都内置了SMI-S Provider,对外提供SMI-S接口数据服务,SMI-S采集器可以直接连接到设备进行采集。但是有些厂商的存储设备并没有内置这个软件,需要单独部署SMI-S Provider软件来管理存储设备。单独部署SMI-S Provider可以管理多个存储设备。因此,在这种情况下,SMI-S采集

器需要兼容,并且能够准确地区分来自同一个SMI-S Provider管理的多个存储设备的各种类型的采集

数据。

  5.JMX采集

  JMX(Java Management Extensions)用于Java程序扩展监控和管理项目。除了JVM 预置的丰富的Java MBean 管理类外,大多数用Java 开发的系统和软件也扩展了许多MBean 管理类。使用JMX采集

器,我们可以从Java应用系统自身提供的JMX信息中获取我们需要的监控项。

  6.数据库采集

  数据库采集器需要自带业界主流数据库的驱动,自定义监控时可以灵活选择对应的数据库类型。同时,还需要预留一个南向接口,用于扩展未预置的小众数据库或新的数据库类型,方便自定义监控采集平台导入相应的数据库驱动。

  对于客户定制的业务系统,数据库中存储了很多有用的信息。使用数据库采集器,可以方便地将存储在数据库中的业务数据采集为监控指标,并进行可视化展示。同时,监控可以复用。系统告警平台对业务数据进行监控告警,达到监控业务系统的目的。

  7.出口商采集

  随着云原生应用的发展和普及,大部分开源组件都实现了提供度量接口的服务。第三方软件通过metric接口获取服务运行状态和性能监控信息已经成为一种趋势。对于自定义监控采集平台来说,这也是必须实现的基本功能之一。

  一方面,Exporter采集

器必须能够正确配置和区分四种数据类型的指标,包括Counter(计数器类型)、Gauge(仪表板类型)、Histogram(直方图类型)和Summary(汇总类型),所以从而实现不同类型的Metric指标数据采集。另一方面,也需要将四类数据与监测系统现有的指标体系整合为一个整体。

  使用Exporter collector采集metric数据,配合自定义指标和自定义可视化界面展示,一定程度上可以替代Prometheus+Grafana的监控开源组合,在易用性上也大大超越。

  8. Python 采集

  Python作为主流的解释型语言,功能强大,可以对接各种类型的API,如RESTful API、SDK API、网络爬虫、任何类型的数据库查询等,几乎可以实现任何数据采集。

  因此,需要定制监控采集平台内置的Python解释器,提供统一的Python采集器来执行Python代码,并指定执行结果的数据格式规范。同时,非常重要的一点是,Python作为运维人员常用的必备技能之一,拥有庞大的用户群,也为运维人员提供了实现自定义采集的额外方法。

  监控对象类型定制

  自定义监控对象类型除了定义监控对象的名称、默认获取协议等基本信息外,还包括定义添加监控时的各种参数,如IP地址、端口号、用户名、密码和其他常用参数。必须支持自定义的集合参数,比如数据库的实例名等。

  通过这些参数的定义,低代码平台会自动生成一个页面来添加此类监控。

  指标定制

  从指标关联分类和采集性能的角度,自定义监控采集平台引入了指标组的概念,即一个指标组可以收录

多个指标,这些指标具有很强的相关性。以其他方式采集

  在定义指标组时,需要区分是单实例指标组还是多实例指标组,可以通过指定指标组中的指标是否为唯一标识来判断。当一个指标定义为唯一标识时,该指标组为多实例指标组,否则为单实例指标组。

  例如,网络接口指标组包括接口索引、接口名称、接口速率等指标。将接口索引指标设置为唯一标识,表示该指标组为多实例指标组,数据采集时会处理多个接口实例的数据。

  对于指标组中的指标定制,包括指标的定义、指标采集方法的定义(即绑定采集器的定义)、采集后各种处理的定义等。

  1. 指标定义

  指标定义,包括指标名称、指标数据类型、指标单位等。为了在视觉展示上更方便使用,引入了单位组的概念,即同一单位组中的单位可以自动替换以实际指标值为准。显示适当的单位。自定义监控采集平台预设了5类单位组,包括传输速率、容量、频率、吞吐量、时间等单位,具体定义见下图。

  例如自定义监控Linux的文件大小指标,单位组选择容量,原单位为B。监控Linux中某个文件的大小,其采集值为25,000,000,则为自动转换为 23.84MB 以在可视化显示中显示。

  2. 指标采集方式定义

  索引采集方法的定义是指指定索引的采集协议。后台自动将索引绑定到对应的采集器上,同时指定对应的采集命令。不同类型的采集器有不同类型的采集说明:

  脚本类采集

器:指定需要执行的脚本

  SNMP采集

器:指定指标对应的OID

  WMI/SMI-S采集

器:指定指标对应的CIM类和属性

  JMX采集

器:指定指标对应的MBean类和属性

  数据库采集

器:指定需要执行的SQL脚本或存储过程

  Exporter collector:指定指标对应的指标名称和类型

  Python采集

器:指定执行Python的片段

  3. 索引处理定义

  根据指标的采集定义,采集到数值后,可能需要对这些数值进行处理,以满足指标的定义要求。指标处理是可选操作。

  自定义监控采集平台可以预置多种运行方式和处理逻辑,例如:

  1)赋值操作

  采集

结果分配给指标。例如,指标为name(指标代码为name),采集结果为systemName,则将采集结果systemName赋值给指标(name)。

  2)数值型计算

  

" />

  数值计算包括以下内容:

  √ 四种算术运算,加减乘除

  例如:(MemTotalReal-MemAvailReal-MemBuffer-MemCached)/MemTotalReal*100

  √取绝对值

  例如:ABS(尺寸)

  √ 三元表达式,()?:

  例如:(PageIn > PageIn0)?(PageIn-PageIn0):0

  √ 如果使用上次采集结果进行计算,则在返回结果属性后加0表示上次采集结果

  例如:(IfInErrors-IfInErrors0)/$poll_interval,IfInErrors0表示IfInErrors的最后一次采集

结果。

  √ 采集周期变化

  预设宏定义$poll_interval,根据采集周期取值,例如:(IfInErrors-IfInErrors0)/$poll_interval

  3)字符类型计算

  字符类指标的计算包括拼接操作和MD5摘要

  √ 连接运算符 +

  例如:LogTime+Message, "ABCD"+"EFGH", LogTime+"EFGH"

  √MD5摘要

  例如:MD5(LogTime+Message)、MD5("ABCD"+"EFGH")、MD5(LogTime+"EFGH")

  4)特殊公式计算

  特殊公式计算包括以下内容:

  √ 总和:SUM_

  计算采集值的总和,只针对数值类型,例如:SUM_FileSize

  √ 计数:COUNT_

  计算采集值的个数,数值型和字符型均可,例如:COUNT_Handle

  √取最大值:MAX_

  计算集合值的最大值,只针对数值类型,例如:MAX_FileSize

  √取最小值:MIN_

  计算集合值的最小值,只针对数值类型,例如:MIN_FileSize

  √平均:AVG_

  计算采集到的值的平均值,只针对数值类型,例如:AVG_FileSize

  5)采集结果的转换

  可以根据采集结果的不同取值,转化为有意义的描述信息。例如在CIM模式模型定义中,为OperationalStatus属性定义的集合值都是无意义的数字,需要额外进行相应的映射转换。如下所示:

  显示形式定制

  自定义监控采集平台内置低代码平台,可灵活定义自定义监控对象的展示形式,在画布上自由布局绘制Widget,在Widget中配置采集指标,自定义丰富的展示形式,展示实时配置效果,让所见即所得。

  低代码平台通过Widgets为指标的展示提供了多种配置,包括:

  ♢ 图形配置:每个数值指标都可以配置自己的显示图形,包括趋势图、直方图、饼图、仪表盘等。

  ♢ 表格配置:预设多种表格样式供选择,可配置表格数据过滤方式,包括排序字段、排序方式、基于某个指标的TopN等参数。

  结论

  基于低代码思想的自定义监控采集平台,为自定义采集流程提供了一套完整的可视化配置工具,是未来监控软件系统的一个重要演进方向和发展趋势。沿着这条路线继续推进,不仅可以降低自定义指标采集的学习和使用门槛,还可以让运维人员进一步减轻工作压力,提高新产品的适配效率,充分发挥用户的主动性。运维人员,体现运维人员的价值。同时,这也是商业监控软件与时俱进,提高差异化竞争力的重要手段。

  自定义监控采集及可视化平台涵盖面广,平台设计可不断优化完善。欢迎大家一起讨论,共同完善。

  观点

  操作细节:SEO诊断优化细节全部过程

  SEO诊断就是从搜索引擎技术策略的角度,分析网站本身存在的问题,如何改进网站,使网站更符合搜索引擎习惯,用最少的人力、物力、时间和money 为提高网站排名 关键词 服务。

  SEO诊断服务可以快速找到网站排名的核心问题,对网站排名起到重要的指导作用。对于站长了解和学习SEO优化也有着得天独厚的优势。

  应该从哪些方面对网站进行SEO诊断?以下是SEO诊断的详细过程分析。

  一、SEO诊断(基本情况)

  (1)域名诊断(诊断:域名、域名状态、域名DNS服务器类型、域名注册日期、域名到期日期、域名更新日期、域名解析状态)。

  (2)服务器诊断(诊断:服务器服务、服务器配置、服务器环境、服务器速度、服务器价格)。

  (3)网站基础指标诊断(网站PR值、网站采集

、网站排名、网站流量、网站PV值、网站IP值)。

  (4) 用户体验诊断(网站结构、网站内容、网站速度、网站交互性、网站美观)。

  

" />

  2. SEO诊断(网站结构)

  (1)网站导航诊断(前导导航、二级导航、面包屑导航、底部导航、产品内容导航)。

  (2) 每个页面是否有“返回首页”和“返回父页面”的链接。

  (3)网站URL地址的长度,网页URL是否为动态地址、静态地址、伪静态地址、URL标准化。

  (4)网站内容的排版是否按“F”、“E”结构进行,网上是否有sitemap(百度和GooGle sitemap)。

  (5)网站是否为网络结构,有主次之分,页面之间是否有联系。

  3. SEO诊断(网站内容)

  (1)三个标签(title、关键词、description)是否与关键词堆叠在一起,与内容高度相关。

  (2) 无处不在的词(关键词,标题中出现关键词,描述中出现关键词,内容中多处出现关键词,加粗当它第一次出现时,关键词出现在其他页面的锚文本中)。

  (3)网站内容的更新频率和内容质量(采集

伪原创、原创)。

  

" />

  (4)链接和图片是否添加title和alt,title和alt的设置是否合理。

  (5) 是否有大量的图片、flash、javascript 和视频效果。

  四、SEO诊断(网站页面)

  (1)网站页面是否采用DIV+CSS或TABLE布局(详见:网页制作中应注意的优化问题)。

  (2)是否有robots.txt文件和404错误页面。

  (3)在网页上使用特定标签是否合理。

  五、SEO诊断(网页链接)

  (1)外部链接(外部链接质量、外部链接内容相似度、外部链接互补性、外部链接有效期、外部链接数量)。

  (2)内部链接(首页与频道页直接链接导航、频道页与频道页互补链接、频道页与内容页关联链接、内容页与内容页锚文本链接)。

  以上是对SEO诊断优化细节*敏*感*词*的总结,基本可以对网站目前的质量进行详细的诊断

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线