服务器定期监控数据_基础设施硬件监控探索与实践

本文选自 《交易技术前沿》总第三十六期文章(2019年9月)

陈靖宇

深圳证券交易所 系统运行部

Email: jingyuchen@szse.cn

摘要:为了应对基础设施规模不断上升,数据中心两地三中心带来的运维挑战,深交所结合现有基础设施现状,以通用性、灵活性为目标,实现对基础设施的自动化监控和运维。本文从基础设施运行的实际情况出发,借助IPMI,SNMPwalk,日志等多种方式采集数据,实现了基础设施的运维监控以及可视化。目前,系统已经初步上线,运行稳定,为后续以数据为基础的智能化基础设施运维打下坚实的基础

关键词:基础设施、硬件监控、数据可视化

一、背景

随着云计算,大数据的大量运用,基础设施的规模不断扩大,硬件故障的发生频率逐渐上升,故障的响应的时效性,准确性以及故障的复杂性给基础设施运维提出了更高的要求。为了更好的运维基础设施,高效的硬件监控必不可少,相比于应用、中间件、操作系统的监控,硬件监控存在信息量少,采集途径有限,数据不标准的特点。因此,搭建统一的硬件监控平台显得尤为重要。 目前,基础设施硬件监控有以下三个方面问题:

1、 基础设施尤其是服务器的品牌众多,难以有标准统一的监控指标。由于业务系统的不断更新和上线,服务器的采购需求变更等原因,现有服务器的品牌不统一,同品牌服务器型号不相同,BMC管理系统版本不一致,导致运维的成本上升,复杂性提高。

2、 指标的种类繁多,却难以准确的反映基础设施的状态。由于基础设施的品牌、型号不同,设备的传感器数量,指标的名称、类型多样,同时后续新增的设备同样会有不同的指标,对于监控告警的设计要求兼顾数据完备性和灵活性的要求。

3、 基础设施的关键部件故障需要提前预警。比如服务器的硬盘虽然可以通过RAID实现高可用,但是在服务器数量上升到一定数量级后,硬盘的频繁不定期更换会使得运维人员疲于应对。理想的情况是提前预测故障,在特定的操作窗口下,预先更换备件以达到有备无患的目的。

二、IAAS基础设施监控方案选型

物理服务器,交换机,F5,防火墙是最常见的4类基础设施,数据的采集方式有日志、SNMPwalk、IPMI,SNMPTrap等方式。具体的监控方式需要针对不同的设备类型和管理端的功能以及运维的需求进行选择。

日志是相对通用的采集数据源,基础设施都有相应的日志系统,提供各个维度的日志,由于日志属于相对滞后的数据信息,在系统发生事件后才会在日志中写入,因此往往作为排查故障的用途,而且交换机,F5,防火墙的日志生产数据多,容量大,难以做到实时采集分析告警,有效的故障信息密度很低,不利于搭建基于日志的故障监控告警系统。

SNMPwalk通过主动发送设备定制的OID来获取数据,可以实现高频次的数据采集,时效性较好但数据的可读性较差,需要进行数据的处理整合,并丰富基本信息来作为监控的指标。

IPMI是物理服务器BMC管理端实现的基础协议,通过该方式可以实现对服务器状态的完整监控,取得包括传感器状态,日志,固件信息,网络配置,用户管理等内容,并且不受服务器类型,种类,固件版本的限制,适配性较好。虽然不同的服务器传感器数量有差异,但总体上的关键指标都有采集。

传统的监控方式是通过在基础设施的管理端配置SNMPTrap发包的告警对接到告警平台实现硬件的故障感知和响应。这种方式存在以下缺点:

SNMPTrap包的内容难以解析,可读性差而且发包的机制难以准确判断,发送无效告警的几率高。比如HP服务器存在当固件版本与ILO版本不适配时,SNMP将会频繁发包,但是不影响业务使用,只能通过屏蔽OID的手段忽略告警。

采集的数据量较少,被动依靠SNMP发包难以实现灵活主动的监控管理。SNMPTrap的机制是通过BMC管理系统判断系统是否存在异常,之后发送SNMPTrap包实现告警功能,对于运维人员来说该机制实际上是个黑盒,很多包的OID的含义难以查询,不利于快速响应故障。

通过分析上述数据采集的方式,我们针对不同的基础设施设计了相应的数据采集方案:

1、物理服务器的BMC日志数据量小且准确,有着比较完备的BMC管理端,故障信息密度高,适合基于IPMI的方式进行硬件监控,IPMI采集传感器和BMC日志来进行硬件监控。

2、交换机,F5,防火墙日志数据量大难以提取有效信息,往往作为故障发生后的定位、自查的作用,因此选择SNMPwalk 的方式采集指标并进行数据的整合来实现监控告警,而日志采集后作为故障定位的备查数据源,利用日志数据可读性强的优点,借助告警时间准确查询小范围时间内的日志来丰富告警信息。

3、针对基础设施没有提供接口的数据采集通过expect脚本登陆采集的方式获取数据。比如交换机vlan划分,端口映射等数据。

三、IAAS基础设施监控方案实现

3.1 总体架构设计

b0db7ecc9d98596c8814004f1fa04ddf.png

图1 基础设施监控架构图

整体的监控框架分为IAAS层,采集层,存储层和应用层。如图1所示,IAAS层包含服务器、交换机、F5、防火墙四类基础设施,采集层实现IPMI、 SNMPwalk、日志,ssh登陆采集等数据收集端。

IPMI、SNMPwalk、日志等方式有其先天缺点,由于其采集效率依赖基础设施管理端的性能,使得在基础设施规模日益增长的场景下,顺序采集信息的效率过低,因此我们设计通过线程池并发的方式来实现分钟级的硬件监控。

我们在存储层针对不同的数据类型进行分类保存,指标类型数据经过标准化后存入时序数据库ClickHouse,日志类文本型数据存入ElasticSearch数据库,基础设施标准静态配置数据存入mysql数据库。最后在应用层实现标准数据的展示、指标数据及基线计算、日志数据分析等功能。指标的采集和数据标准化和数据可视化是本文的重点,后续将就指标类型数据处理,日志数据处理以及数据可视化三方面介绍基础设施监控设计方案。

3.2 指标数据采集

服务器方面主要包含HP、H3C、Inspur、Dell等品牌,基于IPMI协议通过lanplus接口获取服务器的传感器和日志信息。虽然不同品牌的服务器的传感器数量差异,导致采集的数据粒度不同,但是采集的IPMI指令是通用的,我们将数据进行分类整合为功耗数据,风扇转速数据,服务器状态,温度数据,从而实现对不同品牌服务器的指标进行标准化输出。

首先,由于不同服务器的传感器指标各不相同,我们采用借助输出数据的单位字段进行分类过滤。比如watts这类单位属于功耗数据,RPM这类单位属于风扇转速数据,degree这类单位属于温度数据,服务器状态等数据统一指标名,然后将各种指标名打上类型标签存入ClickHouse。

其次,在应用层我们借助Grafana按类型查询各类型指标进行聚合查询实现对各类指标的展示分析。比如各类服务器的有1U,2U,4U的,所包含的的风扇数量不同,通过聚合查询取均值实现对数据的整合。

交换机,F5,防火墙指标通过SNMP协议获取,该类设备厂商能够提供完整的OID列表来收集数据。针对系统状态数据,性能数据,固件数据分类存入ClickHouse和Mysql数据库。交换机等网络设备日志通过syslog发送到汇聚节点。需要关注的是SNMPwalk对交换机进行数据采集的频率,过于频繁的采集指标会影响交换机的性能,要在效率和数据之间做出平衡.

上述方式能够采集大部分的指标类型数据,而部分设备的标准信息无法实现OID或其他的获取方式,我们通过脚本ssh到目标设备实现登陆采集。

ef584434ee4b426a7fb38aa72e55f38e.png

图2 服务器指标日志采集流程

3.3. 基础设施日志数据采集

日志数据分为网络设备日志和服务器带外日志。 我们通过IPMI指令采集服务器BMC带外日志到汇聚节点后,进行日志数据的处理与丰富,为日志信息丰富主机,IP等信息统一写入文件由flume采集通过kafka保存到ElasticSearch。因为BMC带外日志有其特殊性,正常的服务器设备是不会产生BMC带外日志的且日志内容十分标准,所以我们在BMC日志入库时即对其进行告警。

网络设备日志通过配置syslog服务,将设备日志转发到flume汇聚节点指定端口后sink到ElasticSearch。期间对日志进行简单的解析,比如采集时间,入库时间,日志内容等字段进行分类。

3.4 数据应用场景

我们在本节主要介绍两个在基础设施运维中数据的应用场景:交换机到服务器端口映射关系图,服务器硬盘配置管理与故障预测。

交换机内部系统使用的是阉割版本的定制化Linux系统,如图3所示,我们借助expect脚本建立从交换机获取到交换机物理端口描述→物理端口→逻辑端口→mac地址的映射关系,通过CMDB 获取到服务器对应网卡与mac地址的映射关系。如果交换机有做ae这类端口绑定,需要再采集ae与逻辑端口的映射管理。

789baec5e73267607c83b100830d53aa.png

图3 服务器交换机拓扑关系采集流程

服务器的硬盘是日常运维过程中,出现问题概率较高的设备配件,目前普遍采用SAS接口的硬盘,使得以往通过采集S.M.A.R.T信息来进行故障预测的方案不可行。我们选择通过RAID卡厂商提供的命令行工具采集服务器RAID信息以及RAID与Slot的映射管理建立服务器操作系统逻辑磁盘与硬盘的对应关系为硬盘故障定位提供数据支持。并采集各个slot的硬盘错误计数建立监控指标,监测磁盘运行状态。

然而仅仅依靠硬盘的错误计数来判断硬盘的状态是不准确的。因此我们借助定期对系统内的数据盘进行性能测试来建立性能指标基线。综合硬盘性能和介质错误计数来判断硬盘故障。

3.5 数据可视化

数据可视化是基础设施硬件监控的重要组成部分,通过对指标数据的可视化可以直观的看到基础设施在不同周期,不同维度的运行状态,借此运维人员可以更好的响应故障事件。

在本方案中我们采用Grafana来实现数据可视化,如图4所示在界面中集中展示服务器的运行状态、风扇,温度,功耗以及硬盘等设备的指标。

2f5ba7b8c6c54d7559e6d641880586b4.png

图4 服务器硬件监控视图

其中,服务器状态,传感器数量以及硬盘的介质错误这类指标是我们比较关注的。通过服务器状态指标可以反映服务器的通电状态,传感器指标可以反应服务器自监控是否正常而硬盘的介质错误可以看出硬盘的状态,过多的介质错误将导致硬盘的读写效率降低,影响业务运行。

四、总结

基础设施的运维监控在上线以来,填补了运维监控的漏洞,解决了基础设施运维的问题,提高了运维的效率。尤其是探索了基础设施的数据应用场景,进一步提升了运维的稳定性和效率。未来,随着业务的不断拓展需要,会有更多的不同类型的基础设施需要加入到监控中来,采集的数据规模也会越来越大,需要加强数据的治理,拓展数据的应用场景,为全链路监控,告警丰富,故障预测等场景提供数据支持。

在后续的工作中,我们将着重提高数据的利用效率,对业务、系统、基础设施等多层次,多维度的数据进行整合,向智能运维告警,故障根因分析等方面努力,进一步提升自己在运维开发,安全运行的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2010问题汇总

问题1:error C3872: "0xa0": 此字符不允许在标识符中使用 error C3872: "0xa0": 此字符不允许在标识符中使用 或者 error C3872: 0xa0: this character is not allowed in an identifier 解法:这是因为直接复制代码的问题。0xa0是…

vue如何获取年月日_好程序员web前端教程分享Vue相关面试题

好程序员web前端教程分享Vue相关面试题,Vue是一套构建用户界面的渐进式框架,具有简单易用、性能好、前后端分离等优势,是web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能。接下来好程序员web前端教程资源就给大家分享…

react dispatch_React系列自定义Hooks很简单

React系列-Mixin、HOC、Render Props(上)React系列-轻松学会Hooks(中)React系列-自定义Hooks很简单(下)我们在第二篇文章中介绍了一些常用的hooks,接着我们继续来介绍剩下的hooks吧useReducer 作为useState 的替代方案。它接收一个形如(state, action) > newStat…

前端 保存后端传来数据的id_一篇来自前端同学对后端接口的吐槽

前言去年的某个时候就想写一篇关于接口的吐槽,当时后端提出了接口方案对于我来说调用起来非常难受,但又说不上为什么,没有论点论据所以也就作罢。最近因为写全栈的缘故,团队内部也遇到了一些关于接口设计的问题,于是开…

2018-2019-1 《信息安全系统设计基础》教学进程

《信息安全系统设计基础》教学进程 目录 考核方式暑假准备教学进程 第01周学习任务和要求第02周学习任务和要求第03周学习任务和要求第04周学习任务和要求第05周学习任务和要求第06周学习任务和要求第07周学习任务和要求第08周学习任务和要求第09周学习任务和要求第10周学习任务…

Android中的数据库

2019独角兽企业重金招聘Python工程师标准>>> 1.1. 什么时候使用数据库 有大量相似结构的数据需要存储的时候就可以使用数据库。 1.2. SQLite的简介 SQLite是一款轻量级的数据库。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它。Androi…

python计算绩效工资_python实现 --工资管理系统

原博文 2017-07-25 22:41 − # -*- coding: utf-8 -*- __author__ hjianli # import re import os info_message """Alex 100000 Rain 80000 Egon 50000 Yuan 30000 """ #序列字典 xulie_...01669 相关推荐 2019-09-28 21:13 − Python python…

为Windows Server 2012 R2指定授权服务器

为Windows Server 2012 R2指定授权服务器在Windows Server 2008 R2的终端服务中,可以手动指定授权服务器,而在Windows Server 2012 R2中,默认只能通过"远程桌面连接服务"管理器,指定授权服务器,而要使用远程…

spring5高级编程_Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新

简介是什么让java世界变得更好,程序员变得更友爱,秃头率变得不是那么的高,让程序员不必再每天996,有时间找个女朋友?是Spring。是什么让企业级java应用变得简单易懂,降低了java程序员的进入门槛&#xff0c…

关于resolve非泛型方法不能与类型实参一起使用

今天mvc新建三层时,写到bll层中一直报下面的错误,检查了几遍赶脚并没有什么错。最后发现缺少一些引用。 如下面的图,少添加了下面的两个引用.Unity是微软模式与实践团队开发的一个轻量级、可扩展的依赖注入容器, Microsoft.Practices.Unity.C…

设计模式-Singleton

2019独角兽企业重金招聘Python工程师标准>>> Singleton算是知道的设计模式中最简单的最方便实现的了,模式实现了对于类提供唯一实例的方法,在很多系统中都会用到此模式。在实际项目中使用全局变量,或者静态函数等方式也可以达到这…

dump分析工具_Java应用CPU过高,如何排查?参考解决思路和常用工具总结

本文总结了一些常见的线上应急现象和对应排查步骤和工具。分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱。毕竟作者自己也是从手忙脚乱时走过来的。只不过这里先提示一下。在线上应急过程中要记住,只有一个总体…

dos攻击命令_Kali Linux系列之拒绝服务攻击(DOS)实战(上)

(你的世界是个什么样的世界?你说,我们倾听!)-----------------小百科拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标…

stm32定时器配置

stm32通用定时器 STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。 时钟源问题: 名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,…

python数组定义_python定义数组

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一、一维数组 1. 直接定义matrix2. 间接定义matrixprint(matrix)输出:3. 数组乘法matrix*5print…

Android-语言设置流程分析

Android手机语言切换行为,是通过设置-语言和输入法-语言来改变手机的语言,其实这个功能很少被用户使用。 以Android5.1工程源码为基础,从设置app入手来分析和学习语言切换的过程:一、语言设置界面:首先在设置app中找到语言设置这个Preference…

charles 安装 ssl_最全面的解决Charles手机抓包的证书问题(步骤非常详细)

源自公众号文章: 彻底解决Charles手机抓包的证书问题简介: Charles 抓包是日常开发当中经常会用到的技术, 在 Android 6 之前, 手机系统既信任系统内置的证书, 也信任用户自己安装的证书, 但是在 Android 7 之后, 却发生了变化, 手机系统只信任系统内置的根证书. 当然了, 这是为…

excel 2007 vba与宏完全剖析_Excel宏VBA小技巧系列 | 分段加合

写在前面的话 知识产权算是一个盛产数据的行业。专利啊商标啊著作啊,都有著录项目。我们常说的专利分析、产业导航、企业导航、产业预警、竞争情报、技术综述、知识产权评议等等,常规操作之一就要先处理著录项目数据,然后再进行不同角度的分…

redhat虚拟机安装

做过好多使用VMware workstation虚拟机搭建的系统,这是我第一次使用Virtual Box,感觉跟Vmware差不多,我的本子的系统是win7 64位。 下面演示安装的是在VirtualBox里安装rhel 6.4 linux 64位系统。 一、VirtualBOX 版本。 二、虚拟机的配置。…

mysql 查看表v空间自增涨_MySQL InnoDB表空间加密

从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加密,加密用的是AES算法,而其解密是在从文件…