构建一个比较完善的监控系统

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:
在工作中或多或少接触过部分监控工具的构建,开发和完善。结合自己的一些看法,简单地谈下一个完整的监控系统所包含的组件,欢迎大家补充。

从监控的层面来看,一个比较完整的监控系统应该包含如下的层次:

1.网络层面
主要包含各个机房间网络状况,机房内机器网络状况,通过开源的工具smokeping可以做到

2.主机层面
对于网络设备来说,包括cpu,内存,端口速率,流量等

对于服务器来说,从硬件到系统层面都要进行完善的监控,底层的比如raid卡状态,磁盘容量使用状态,inode使用状况,是否只读,是否有坏道,内存使用,网卡是否百M,网卡流量等。
再上面比如负载,cpu使用,磁盘io,操作系统参数,文件描述符,网络连接数,队列,系统日志等等,现在用的比较多的工具是zabbix,nagios和cacti。

3.应用层面可用性监控
包括进程的状态,端口的状况,存活的检查等,比如监控nginx,需要监控nginx的端口状态,进程是否存活,监控dns,需要监控端口,进程,还可以监控记录是否正常解析。
这些可以简单地通过zabbix实现。

4.应用层面性能监控
在应用层仅仅做可用性的监控是不够的,还要对应用的性能做监控,这就需要用户对应用的性能影响点有深入的了解。比如监控redis,需要监控redis的cpu使用情况,cache的效率等。
监控tomcat这种jvm容器,需要监控java heap,gc,java thread等相关信息。这类监控数据也可以集成搭配zabbix里面来做

5.服务的可用性
简单地来说就是业务正不正常,这个可以在业务上线的时候统一提供一个监控url来做检测,判断url的返回码或者是内容来判断服务是否正常。提供的检测url要做一些可用性方面的简单地判
断,比如如果应用用到了redis就要去操作一下redis。这一层的监控可以通过自己开发一个小的监控程序来实现(目前我们是通过pycurl+nagios+django+bootstrap来做的)。

6.服务的qos监控
服务的可用性监控有了,服务的质量状况也需要监控。
这个又包括服务器端的和面向用户的。
1)服务器端的数据一般是通过分析访问日志来实现,比如域名的nginx的响应时间分布,平均响应时间,服务的状态(2xx,3xx,4xx,5xx占的比例),平均body size大小状况,各个pool的调用状
况,具体到省市的qos等等。
服务器端的数据也分为实时的和离线的,实时的可以借助flume+hadoop+impala或者storm的流式计算框架来实现(各个域名的nginx日志),离线的数据可以通过hadoop + hive来实现(商业 cdn qos数据)

2)面向用户的数据是通过在页面埋点来实现的,通过在页面中埋入js代码,可以在用户访问页面时,将所需要的数据通过url的形式记录在访问日志上,然后交由后端处理。


通过分析服务器端的和面向用户的qos数据相结合,可以很清楚的了解到网站的qos状况。

7.安全方面的监控
又包括主机层和服务层,比如webshell检测,主机入侵检测,后门检测,文件校验等等。

8.最后就是业务上的监控了,这个没怎么接触过,就不写了

监控的数据有了之后就是报警的问题了,这里我们倾向于:

1.通过一个中心化的事件处理平台来处理报警信息,集成cmdb的信息,把报警信息分组,定义级别并发送至相关责任人处理

2.报警邮件要包含足够多的信息,比如具体到一个域名的http code不正常,需要在报警邮件中有breakdown到http code,server,url等的相关信息,这样,报警处理人就可以快速的定位到问题。

最后附一个之前画的一个基于zabbix的一个监控的流程图:
1)用户提交监控配置和脚本至puppet server,并关联cmdb的业务和puppet的module,由puppet 实现zabbix agent的部署,更新,reload。
2)用户通过zabbix api一键式添加模板,服务器根据主机名,运行应用自动link到对应的模板,主机组等。
3)使用zabbix的server-proxy结构,zabbix agent使用passive的模式,proxy使用active的模式,由proxy负责收集数据,sync到server。
4)server的db做ms高可用,并将slave中zabbix的历史数据(history*表,trends表)通过sqoop导入hadoop集群,load至hive中归档。
5)用户可以基于hive中的历史数据做性能分析和容量规划报表。
6)zabbix server负责报警产生,并通过消息机制发送至事件处理中心,事件处理中心关联cmdb,发送至对应业务的对应负责人。

spacer.gif 174507765.png


本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1344826,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
XML Prometheus 运维
自动化监控有哪些开源系统
自动化监控有哪些开源系统
50 1
|
5月前
|
SQL 监控 安全
架构设计第五讲:数据巡检系统的设计与应用
架构设计第五讲:数据巡检系统的设计与应用
|
10月前
|
数据采集 传感器 存储
工控系统 SCADA(监控和数据采集)系统简介
工控系统 SCADA(监控和数据采集)系统简介
|
11月前
|
存储 数据采集 Prometheus
监控系统选型,一篇全搞定!
监控系统选型,一篇全搞定!
|
消息中间件 存储 运维
如何快速构建高效的监控系统|学习笔记
快速学习如何快速构建高效的监控系统
99 0
如何快速构建高效的监控系统|学习笔记
|
监控 BI
从0到1,搭建数据监控体系
大家好,我是爱学习的小熊妹。 上周五,阳光很好,微风很好,无惊无险又到六点,小xiong熊妹美美地在座位上补了个妆,拿起小包包,正打算去撸麻辣火锅的时候,听到了最怕听到的话—— 小熊妹,麻烦给个数,领导马上就要看…… 我整个人顿时就不好了!我的火锅,我的小伙伴,我的奶茶,我的电影!
325 0
从0到1,搭建数据监控体系
|
监控 NoSQL Java
基于JavaAgent的全链路监控六《开发应用级监控》
在我们的监控程序中,需要对各种模块进行监控;servlet、rpc、http、jdbc、redis、logic等,那么我们在设计监控程序时就需要对监控的程序进行模块化开发,可以在需要的时候进行组装配置即可,以方便我们监控程序的扩展和可控制性。这一章节我们把监控模块剥离,采用工厂模式进行调用{目前是静态工厂在我们实际使用中可以把工厂做成动态配置化}。
302 0
基于JavaAgent的全链路监控六《开发应用级监控》
|
Prometheus 监控 Cloud Native
基于日志服务构建业务可观测性系统
根据海恩法则(Heinrich‘s Law),每一起严重事故背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。如果提前处理那些不那么严重的问题,其实是可以避免后续的严重事故的,也就避免了其带来的巨大压力和损失。
基于日志服务构建业务可观测性系统
|
监控 负载均衡 前端开发
用SkyWalking做分布式追踪和应用性能监控系统
SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
1705 0
|
消息中间件 缓存 监控
来!做一个分钟级业务监控系统 【实战】
来!做一个分钟级业务监控系统 【实战】  如何做一个实时的业务统计的监控?比如分钟级?也就是每分钟可以快速看到业务的变化趋势,及可以做一些简单的分组查询?   哎,你可能说很简单了,直接从数据库 count 就可以了! 你是对的。
690 0

相关产品

  • 云迁移中心