作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
那句话怎么说来着:"无监控,不运维"。 今天我们来聊一下常见的开源监控工具。
一.监控系统概述
1>.监控系统的核心任务
监控系统的四大核心任务:数据采集,数据存储,告警,可视化。
(1)数据采集(周期性时序数据): 主机/对象: 服务器、路由器、交换机、存储、防火墙、IP、PORT、URL、自定义监控对象... 采集目标: 监控项,指标数据(metrics data)
Agentless(即无需安装Agent):
可以基于SNMP,Telete,ssh,IPMI,JMX进行采集数据。
Agent:
以zabbix为例,有一个专门做采集的软件,即zabbix agent。 (2)数据存储: 存储系统: SQL: MySQL/MariaDB(Zabbix) NoSQL: Redis(Open-falcon) rrd: Round Robin Database(Cacti) 数据: 历史数据: 每个监控项采集到的每个监控值 趋势数据: 趋势表里主要保留某个监控项一个小时内历史数据的最大值、最小值和平均值以及该监控项一个小时内所采集到的数据个数。
(3)告警: 阈值: 可以自定义severity,即指定监控的等级,将监控的状态进行等级区分,来标识该事件的严重性。 告警方式: email,短信,微信,电话通知等等。
(4)可视化: 我们有数据了如果基于SQL语句去查的话对运维人员来说可能问题不大,但是对leader或者老板去看的话就不太合适了。
因此我们有必要找一些前端开源的框架进行数据展示,让大家更容易接受,以zabbix为例,它就有自己的WebUI,方便用户查询数据。
2>.生产中常见的监控对象
硬件监控: 方法:机房巡检,IPMI(以DELL的IDRAC为例,可以进行远程管理安装操作系统,不过需要单独收费哟~),SNMP 系统监控: 对象:CPU,内存,磁盘I/O,网络I/O 服务监控: 对象:各类服务,如Nginx|Tomcat|RabbitMQ|Openstack|MySQL|Kafka|Hdfs 日志监控: 方法:Elastic Stack 网络监控: 方法:第三方,Smokeping,cacti APM应用性能管理: 工具:https://github.com/naver/pinpoint。对Java开发的程序支持良好!!! 流量监控: 工具:Piwik,XX统计,XX分析。 其他监控: 安全监控,业务监控,舆论监控,XX监控
二.常见的监控解决方案
1>.开源的监控解决方案
(1)Cacti: 基于LAMP平台展现的网络流量监测及分析工具,通过SNMP技术或自定义脚本从目标设备/主机获取监控指标信息;其次进行数据存储,调用模板将数据存到数据库,使用rrdtool存储和更新数据,通过rrdtool绘制结果图形;最后进行数据展现,通过Web方式将监控结果呈现出来。 博主推荐阅读: https://www.cacti.net/ https://github.com/Cacti/cacti (2)Nagios: 用来监视系统和网络的开源应用软件,利用其众多的插件实现对本机和远端服务的监控,当被监控对象发生异常时,会及时向管理员告警,提供一批预设好的监控插件,用户可以之间调用,也可以自定义Shell脚本来监控服务,适合各企业的业务监控,可通过Web页面显示对象状态、日志、告警信息,分层告警机制及自定义监控相对薄弱。 博主推荐阅读: https://www.nagios.org/ (3)Smokeping: 是一款用于网络性能监测的开源监控软件,主要用于对IDC的网络状况,网络质量,稳定性等做检测,通过rrdtool制图方式,图形化地展示网络的时延情况,进而能够清楚的判断出网络的即时通信情况。 博主推荐阅读: https://oss.oetiker.ch/smokeping/
http://blogs.studylinux.net/?p=794
(4)Open-falcon: 小米公司开源出来的监控软件,监控能力和性能较强。 博主推荐阅读: https://www.open-falcon.org/ https://github.com/XiaoMi/open-falcon https://www.cnblogs.com/yinzhengjie/tag/Open-Falcon/ (5)Zabbix: 目前使用较多的开源监控软件,可横向扩展、自定义监控项、支持多种监控方式、可监控网络与服务等。 博主推荐阅读: https://www.zabbix.com/cn/
2>.商业监控解决方案
(1)监控宝: https://www.jiankongbao.com/ (2)听云: https://www.tingyun.com/
三.在招聘时如何快速定位监控运维工程师的运维水平
1>.初级运维监控工程师应该掌握的技能
(1)识别监控对象(分级,比如把数据库单独拿出来监控)
(2)理解监控对象(理论知识) (3)细分监控对象的指标 (4)确定告警的基准线
(5)工具化和监控分离 (6)监控对象的分类 (7)掌握一个监控工具,例如zabbix,open-falcon,cacti,nagios,ganglia等等。
2>.中级运维监控工程师应该掌握的技能
(1)标准化监控(标准化的脚本,自定义模板...) (2)分布式监控(主动,被动,分布式) (3)自动化监控(自动发现,主动注册(包括Agent主动注册,Server主动添加API)) (4)性能优化(数据采集,数据存储,数据查询) (5)二次开发(定制报表,API调用等等)
3>.高级监控工程师应该掌握的技能
(1)告警阈值动态化 (2)智能监控(比如一台服务器挂掉后,该服务器的所有服务都变得不可用,此时如果你的告警噼里啪啦一大堆那就是你很low了,你应该只收到一个告警,就是这个机器宕机了。其他告警不应该告警出来,简单的说你得实现告警去重并解决依赖关系) (3)故障自愈(一些简单的应用出现故障了,我们应该做一些简单的处理,让它自动回复,比如flume从kafka收集日志到hdfs集群时可能出现重平衡异常,我们可以重启该flume-ng进程,从而恢复该故障,这种方式我们可以说它是一种事件驱动,当然我们也可以不自动重启它,而是将告警信息通知给相应的负责人处理,这种方式我们可以理解为主动控制) (4)上万台服务器大规模的监控告警