从 0 到 1000+ 台服务器监控的构建之路

来源:民工哥技术之路

ID:jishuroad

作者:顾凯

第一阶段:200台以下

第二阶段:200~1000台

第三阶段:1000+(1000以上和2000以上没啥区别了)

每个阶段的分界点也不是那么精确的,就是一个大概的时期,变化都是一个逐渐的过程。

机器数量小于200台的阶段

这个时期需求简单,主要用于通知问题、快速定位解决问题,大致总结一下,主要需求就三点:

1. 简单,易用;

2. 稳定运行;

3. 能够报警,邮件,短信。

基于以上需求,可以使用比较流行开源的监控软件Nagios,Cacti,Zabbix,Ganglia,etc。流行的开源产品有较多的文档,可快速上手,并且有大量的前人使用经验,可以避免许多问题,即使遇到问题也容易找到解决办法。其中邮件报警一般是都支持的,短信需要自己对接一下短信平台。

我们在早期的时候选择了Nagios和Cacti,选择Nagios主要是个人原因,我最熟悉,使用Cacti是因为对交换机的监控特别方便,几乎是傻瓜式的。其实在这个阶段,不管是哪一个监控产品,基本都可以满足需求,选择的因素还是看个人喜好,这个时期运维同学是可以偶尔任性一下的。

二、机器数量200到1000的阶段

这个时期,需求开始变得复杂,不过主要还是用于通知、告警,避免同样的问题再次发生,我在这个时期主要做了以下事情:

1. 统一监控内容:将基础监控进行统一,默认每个机器都包含CPU,内存,磁盘空间等基础信息监控;

2. 覆盖式监控:将所有机器均纳入监控,除去基础监控以外,最重要的当属业务监控,尽可能的覆盖业务流程,通过自定义监控减少和去除重复的问题,保障业务稳定运行。

3. 及时通知,确保无漏报:将所有监控分类,根据重要程度、紧急程度等,分别用邮件,微信,短信,电话等不同级别的方式通知,确保每个监控都有人处理,并且对于重要的业务采用call死你的方式,不处理就一直通知。

在这个时期对Nagios进行了深入的研究,编写自定义脚本、大量增加各种监控项,将Nagios大部分的插件如nrpe、nsca和功能充分使用。

随着机器越来越多,需要监控的服务也越来越多,告警信息出现爆发式增长,每天收到上千封报警邮件。有个小插曲,我应该是第一个将腾讯企业邮箱撑爆的人,不是容量撑爆了,是邮件的数量超过了他们数据库的最大值,导致我在一周内没办法收发邮件,也没办法删除。

这个阶段的后期,也就是快接近1000台机器的时候,Nagios的监控功能已经无法满足需求了,并且Nagios图形功能总是捉襟见肘,于是开始思考超过1000台的情况了,摆在面前的路有两条:

1. 根据自己的需求继续深度开发Nagios;

2. 自建监控。

这时候有些朋友会想:换一个别的开源监控就能解决了。使用开源软件的最大问题就是,这个软件有什么功能你才能用什么功能,没有的功能要么自己开发,要么放弃使用,大量报警只是一个改变的转折点,经过长时间的使用和积累,通用的、普适的开源监控产品已经不能完全满足庞大复杂的需求了。

经过很长一段时间的慎重考虑,我决定自己搞一套监控系统,其实也是因为之前深入了解Nagios的整体架构和运作模式,觉得自己做一套也不是不可能的。

三、机器数量超过1000台的阶段

经过前期的思索和准备,到这个阶段开始开发自己的监控系统,解决痛点,完成需求,主要有几个事情:

1. 具备目前在用的Nagios所有功能:比照Nagios去做,覆盖原来的功能,并针对Nagios的问题进行优化改进,然后在替代了Nagios之后再升级。(第一步最重要了,如果连之前的Nagios的功能都不能替代,自建之路只能在这里就停下了。)

2. 将告警进行整理,化繁为简,减少重复告警:当出现轰炸式告警信息之后,如果不进行及时整理势必会将真正需要处理的事情耽误,并且由于某些原因,比如线路问题,会发生重复告警,所以必需要将告警信息进行处理再发出,预警信息由之前的每天3000+,下降到现在每天300以内。

3. 分离告警和显示:前面的监控系统,基本上告警功能和显示功能均在一起,不同机房的信息也需要汇总在中心节点后统一显示和告警。重要的告警的处理是分秒必争的,也跟界面显示无关,所以我在设计的时候将显示和告警功能进行了一次分离,在本地机房进行报警,然后再集中展示。

4. 分布式部署,避免单点:每个机房设置一个分节点,就是上面说的报警节点,设置一个中心节点,先在各个机房告警,然后汇总在中心展示。分节点与中心节点互备,通过智能DNS进行切换,如中心节点宕机,DNS自动切换到一个分中心节点,分节点升级为中心节点。

分布式节点切换示意图

总结

自建监控系统的好处就是可以充分利用数据、组合数据、分析数据、解释数据,将晦涩难懂的数据解读成人人能懂的数据,让产品人员、销售人员、老板统统明白当前的业务状态是怎么样的。最后给大家展示两个我们自建监控系统中分析后展示的数据:

这个图显示了全国各省访问Track系统的情况,不仅包含了速度,访问的数据中心,还能显示是否出现域名劫持等信息。当然靠自己的监测节点是得不到这么多这么全的监控数据的,这时候需要云智慧的“监控宝”出面帮忙了,我们使用监控宝的全国200多个节点,将检测数据通过API回传,再整理分析、反馈在图上。交换机的流量之前使用的是Cacti,交换机多了之后查找起来简直是个庞大的任务,针对这个需求痛点,我们的监控系统支持了交换机监控,除了基础的CPU等信息外,专门在流量上花了点心思。

通过上图可以一目了然的看到当前交换机之间的速度情况,流量都来自哪里,有多少。

这张图可以看到哪里流量达到了预警值,哪个交换机出现了问题,在快速定位处理上提供了很大的便利。

最后,每个公司的需求不一样,每个运维面对的痛点也不尽相同,不管有多少变化,万变不离其宗,有了机器上的各种监控数据,就可以组合分析出你想要的结果,自建的路上,我们才刚刚开始,keep moving!谢谢大家!

QA部分

问:这个底层还是nagios吗?

答:不是了,完全都是自己从头写的,借鉴了nagios的思路,但是采集的方法,汇总处理的方法不一样了。

问:数据库这块有监控么?还是交由专门的dba负责?

答:我们没有单独针对对数据库的监控,还是调用别人的监控脚本,然后获取数据。

问:你们在业务监控上都做了那些工作?

答:业务监控我们也有一些,给大家发个图:

这个是我们的业务监控,将所有的监控数据用文字进行描述,让产品、业务同学以及老板都知道现在是什么情况。

问:这么大的数据收集量,数据库端有做特殊的优化吗?异步处理?

答:是异步的,这个业务系统是放在大屏上展示的,出了问题时不用来研发和运维这边询问,就能直接看到哪里出了问题,也知道具体找谁询问恢复情况。

问:这个监控对资源的消耗有多大?

答:还好,集中展示处理数据的时候遇到过一些瓶颈,不断在优化。

问:智能DNS系统是自己开发的吗?

答:智能DNS我们用了第三方的,自己的也有。

问:请问下你们数据库是MySQL集群么?

答:MySQL的主从,将报警和展示分开还有一个原因,就是担心性能问题。展示可以慢几秒钟、几分钟,但报警不可以,所以报警是即时的,并且不用担心监控机器挂了就会变成瞎子。我们目前有6个节点分布在全国,全挂掉的几率很小,只要有一台活着就可以报警。

问:这个精确值是秒吗?

答:秒级的,最慢的通知是电话,需要十几秒。

问:你们现在只用了监控宝吗?透视宝有没有在用呢?

答:透视宝正在研究。

问:交换机获取的什么指标?

答:CPU,内存,警告信息,流量,端口。

问:再请教下阿里云的服务器性能是不是比自己托管服务器差很多?

答:目前公司用的阿里云自建数据库,性能有很大问题,云服务的IO普遍存在问题,阿里最严重。

问:业务监控怎么做的?

答:业务监控其实跟透视宝类似,只不过没有做到那么细粒度。

问:是在程序里埋点吗?

答:不在程序里埋点,就是利用监控数据实现的,所以只能做到现象级别,不能做到代码级。

问:是监控日志?还是CPU这些?

答:不是CPU了,针对程序是否正常运行的一些综合判断,业务监控看到的一项,后面可能对应了十几个监控,还有一些逻辑判定,主要是将人的分析模式变成了自动的。这个跟公司业务有关,有的是API、有的是程序,不同业务也不一样,还有响应速度等。

问:公司有几个运维?

答:算上我一共8个人,这个图是我们自己开发的平台。

问:运维每天工作怎么划分的,分产品吗?

答:早期分产品,第二阶段自动化作完之后,基本上随意了,都通过工单系统来完成,常规的工单审批结束后自动上线,不需要运维参与。

问:有没有一堆业务统计需求?

答:有,需求由我来分配,经常需要统计的需求我们会做好了,直接给他们看系统取数。

问:私有云用的什么工具?

答:基于kvm做的开发,早期用gopstack、openstack,后来发现太重了。简单理解一下私有云,就是kvm 自动化。

问:你们物理机都大概什么配置?

答:最低配也是双6核,64G。

问:你们可视化后是什么样子,是工单吗?

答:将运维可视化的原因其实还有一个就是别人不理解运维,不知道运维在干什么,经常被误解为安装系统、执行脚本的。可视化就是将大家重点关注的展示出来,用运维的数据教育他们,工单是所有运维操作的起点,也是避免背锅扯皮的利器,工单系统其实是我最花心思设计的系统,工单的流程,尤其是审批。遇到滥用工单的情况,能气死你。

问:有没有碰到过服务器正常、中间件和数据库也正常,而线上业务突然失效的情况?

答:你这个可能需要透视宝。

问:透视宝可以监控网络出口带宽的拥堵吗?

答:透视宝主要是做应用性能监控的,透视宝就像是应用系统的CT扫描仪,能够采集实际用户移动端和浏览器端体验性能数据、服务器上运行的应用环境、数据库访问、应用代码的执行性能数据,然后利用大数据技术把采集到的数据进行快速诊断分析,发现影响应用性能的“病灶”,并给出诊断建议,网络环节的监控是由监控宝完成的,二者结合可以真正实现从用户端到服务端的全链路服务监控和问题诊断。

问:突然失效是什么意思,前端代理有报错吗?有需求就下掉?

答:比如一个功能运作正常,突然点了没反应,代码没有任何报错,过一段时间又恢复了,日志都正常没征兆,但就是找不到原因,CPU、内存这些都正常,网络流量也没有波动,连接数也是正常范围。

问:大家有没有碰到过内网问题导致的业务失效?

答:透视宝应该可以帮到你,透视宝做的很细。透视宝是可解决内部的问题,监控宝可以解决外部的问题,结合起来就ok了,可以检查下交换机,看是不是有SFP网络震荡,这个我遇到过。

问:sfp网络震荡是什么?如果网络问题,那应该其他所有都有影响吧?

答:网络震荡就是交换机重新学习mac地址,导致短时间内网络不通。

问:网络震荡是什么原因引起的?

答:专业的解释是由于报文变化或者定时器超时,反复触发重计算,会一直持续在根桥选择、端口角色切换、端口状态迁移三个过程,常见的原因有:

链路故障:网络上某个端口的链路属性,如端口状态、速率和双工模式等持续变化;

节点故障:单个交换机CPU较高,无法在定时间隔内发送或处理STP报文;

网络故障:网络发送拥塞,导致根端口方向的STP报文在转发过程中被丢弃;L2PT透传了其他网络的STP报文,造成本端STP误收敛;网络上错误的配置了组播抑制功能,偶尔丢弃STP报文。针对不同的故障原因,需要修改配置或者优化网络设计,解决震荡问题。

简单的说,一个模块出现问题、一根网线出现问题,导致频繁的up down几次,就会出现网络震荡。

问:碰到这种问题不会报警吗?特征就是短时间内网络不通?大概有多久,顾总是怎么发现的?

答:单看交换机的话会被认为误报,结合业务发现不是,我们的大数据集群增长过程遇到的问题,看你怎么设置阈值了,常规的不会报。我针对这个作了特殊的监控,端口发现不出来,交换机常规日志里也没有,有个特殊的日志记录的,一下想不起来了(能否补充?)

问:端口单双工和速率变化呢?交换机日志还没收集?

答:没有改变,ELK作交换机日志收集处理。

原文地址:https://www.cnblogs.com/heiyizixia/p/11095447.html

时间: 2024-10-02 21:35:35

从 0 到 1000+ 台服务器监控的构建之路的相关文章

支持万台服务器分布式监控系统原始手稿

作者:付炜超 如果你本来打算做一个特别牛的东西,最终不管什么原因没做到,但是你实现的也够cool了! 需求分析: 随着现在的企业不断的发展壮大,大多数的企业都出现了分公司.办事处这类的分支机构,由于总公司还要求对下面子公司的网络设备.主机等资源的状态有着相关的了解,所以就要求IT运维部门对不在同一地域的网络.主机等资源都要进行监控. 功能分析: 1.一个监控系统往往需要集成资产管理,可以从逻辑上展示业务和功能的信息,通过对其进行数据分析,做到对投资与回报的一个反馈展示,为资产的合理规划与使用提供

服务器远程连接器力荐,一键登录1000台!

相信在座的各位站长对服务器的管理自有一套方法,正确使用合适的远程桌面工具,应该是一种普遍的管理办法. IIS7远程桌面,即IIS7服务器管理工具,具有超强的服务器登录管理功能,可一次批量登录1000台服务器!完全解决了服务器管理的难题.支持一键导出/导入,自定义分辨率,硬盘映射,分组管理等等. 简单.快捷.高效!是运维.站长.SEOER服务器管理的不二之选! 入口:IIS7远程桌面 主程序截图: 原文地址:https://www.cnblogs.com/jy33/p/12298859.html

配置服务器监控专线网络

A goal is a dream with a deadline. Much effort, much prosperity. 配置服务器监控专线网络 项目介绍: 配置一台服务器监控专线网络的情况,(由于公司业务的原因需要用到专线进行与客户对接)实时监控专线的状态,如果专线不通则进行报警 报警方法有邮件报警,微信报警,和监控器报警等 公司搭建的邮件报警就是写脚本进行监控网络是否通畅,不通则直接发邮件进行报警,更直接,更方便相比传统的监控器监控服务(zabbix.nagios.cacti等)更直

测试两台服务器之间的网络带宽

标签: 服务器 / 测试 / 网络 / windows / unix / 工具 一.为什么选择了iperf 之前做了一个项目,说要测试两台服务器之间的带宽,本想通过拷贝来进行测试,后来客户觉得得出的数据没有说服性,于是改拿工具来进行测试.我们这回用的工具名字叫iperf. iperf它是一款网络性能测试的工具,分为多个版本:Linux版.UNIX版.Windows版.相比之下,Windows版更新的比较慢,而UNIX和Linux版本更新起来更快,现在最新版本是2.05,而他安装简单.方便,而且测

监控多台服务器

主要分系统监控和业务监控两类 系统监控就是每台主机的CPU,内存网络带宽等使用情况以及Mysql, Redis, Nginx等服务的核心指标等这是比较基本的监控必须得有如果这块监控做的好生产环境可以提前发现很多问题防患于未然. 业务监控就是业务相关的指标如某API每秒调用次数每分钟该API的平均响应时间服务的在线人数甚至一些运营相关的数据如七日留存率啦每日新增用户每日流失用户等.这些数据也很重要他是你整个业务的晴雨表为你做一些重要决策提供依据. 对于系统监控有很多开源软件可以拿来用如比较出名的n

ZABBIX监控一台服务器上多实例memcache落地经验步骤

大家好!我是系统运维工程师: 李超  上一次给大家分享了工作中监控多实例tomcat的自发现zabbix做法,今天带给大家的就是一台服务器上监控多memcache的一个落地经验. 首先我带大家看一下多实例memcache做法,话不多说,咱们开工: 由于是多实例,所以就需要用到zabbix的自动发现功能(LLD)基本思路如下: 1.写自动发现脚本. 2.写状态取值脚本. 3.添加配置文件. 4.添加权限. 5.配置zabbix web. zabbix我采用yum安装所以路径是/etc/zabbix

如何高效的监控多台服务器,该做哪些方面的监控?

这次主要给大家介绍一下从几十台到几千台服务器的运维过程中,监控系统的变迁经历.常说一千个人心中有一千个哈姆雷特,一千个运维的心中有一千种运维的方法,没有一个方法是万能的.可以适用所有的场景,具体问题还得具体分析 一. 服务器数量小于200台的阶段 这个时期一般需要满足基础监控需求,我们主要考虑的是简单易用. 稳定运行. 监控报警三个方面. 云帮手资源监控系统全程可视化界面,一键傻瓜式操作,新手小白也能快速上手:能够从CPU.内存.磁盘.网络四个方面对服务器进行24小时不间断基础监控,并可自主设置

zabbix 创建主机、主机群组、监控第一台服务器

前面介绍了zabbix服务器和zabbix agent的安装配置,今天使用zabbix监控第一台服务器. 1. 安装zabbix agent 在被监控的服务器上安装zabbix agent . 参考<<zabbix agent安装配置>>. 2. zabbix监控服务器 2.1 创建主机 configuration(组态,配置)–>Hosts(主机)–>Create host(创建主机) 属性 描述 主机名 Host name 主机名,只允许数字,空格,句号,下划线,非

双台服务器rsync同步报错(code 5) at main.c(1503) [sender=3.0.6]

环境:某某项目的代码机器70配置有双网卡:232.182.23.70(联通)61.10.45.70(电信) 另一台代码机器是沧州联通的代码机器102,配置单网卡:121.15.1.102(联通) rsync服务端服务器121.15.1.102上的配置文件rsyncd.conf 一开始/etc/rsyncd.conf 里面配置的允许ip:为61.10.45.70 [[email protected] tmp]# cat /etc/rsyncd.conf ##rsyncd.conf start##