在高并发分布式环境下,对于访问量大的业务、接口等,需要及时的监控网站的健康程度,防止网站出现访问缓慢,甚至在特殊情况出现应用服务器雪崩等场景,在高并发场景下网站无法正常访问的情况,这些就会涉及到分布式监控系统,对于核心指标提前监控,防患于未然。
常见的开源监控系统
1.Zabbix
Zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源运维平台,也是目前国内互联网用户中使用最广的监控软件。
入门容易、上手简单、功能强大并且开源免费。
Zabbix易于管理和配置,能生成比较漂亮的数据图,其自动发 现功能大大减轻日常管理的工作量,丰富的数据采集方式和API接口可以让用户灵活进行数据采集,而分布式系统架构可以支持监控更多的设备。
2.Nagios
Nagios是一款开源的企业级监控系统,能够实现对系统CPU、磁盘、网络等方面参数的基本系统监控,以及 SMTP,POP3,HTTP,NNTP等各种基本的服务类型。另外通过安装插件和编写监控脚本,用户可以实现应用监控,并针对大量的监控主机和多个对象 部署层次化监控架构。
Nagios最大的特点是其强大的管理中心,尽管其功能是监控服务和主机的,但Nagios自身并不包括这部分功能代码,所有的监控、告警功能都是由相关插件完成的。
3.开源监控工具比较
4.建议首选Zabbix,免费开源监控首选,以下我主要以Zabbix为例,主要谈监控流程和核心监控指标。
Zabbix监控流程
Zabbix的监控流程可以简单描述为:
数据采集–>数据存储–>数据分析–>数据展示–>监控报警
- 数据采集:Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等进行数据采集
- 数据存储:Zabbix存储在MySQL上,也可以存储在其他数据库
- 数据展示:web界面展示、(移动APP、java_php开发一个web界面也可以)
- 数据报警:邮件报警、微信报警、短信报警、报警升级机制
Zabbix的监控配置流程可以简单描述为:
告警是由一系列的流程组成,首先是触发器达到阀值,产生一个事件,接下来由Action对事件信息进行处理,其中包括两部分:
- 第一部分是发送消息,即将告警信息发送给用户。
- 第二部分是执行命令,即将事件用命令进行处理,达到对事件故障自动尝试恢复的效果。
Host groups(主机组)→Hosts(主机)→template(模板)→Applications(监控项组)→Items(监控项)→graph(图形) →screen (图形分组)→Triggers(触发器)→Event(事件)→Actions(处理动作)→Media types(告警升级|1.执行远程命令2.发送告警邮件)→User groups(用户组)→Users(用户)→Medias(告警邮件)
在实际生产使用的时候,Items、Trigger、Graph采用模板来进行监控,模板特点就是可以重复的事情一次完成,修改了模板等于修改了所有调用此模板的主机。
Zabbix监控功能
1.监控指标
- 主机的性能监控
- 网络设备性能监控
- 数据库性能监控
- 多种告警方式
- 详细的报表图表绘制
- 监控主机zabbix有专用的agent,可以监控Linux,Windows,FreeBSD等 。
- 监控网络设备zabbix通过SNMP,ssh(不多用)
2.可监控对象
- 设备:服务器,路由器,交换机
- 软件:OS,网络,应用程序
- 主机性能指标监控
- 故障监控: down机,服务不可用,主机不可达
3.基础监控数据
主要包括以下几个类别:
- CPU
- Load
- 内存
- 磁盘
- IO
- 网络相关
- 内核参数
- ss 统计输出
- 端口采集
- 核心服务的进程存活信息采集
- 关键业务进程资源消耗
- NTP offset采集
- DNS解析采集
对于这些基础监控选项全部理解透彻的时刻,也就是对Linux运行原理及命令进阶的时刻。
4.JVM监控
对于Java作为主要开发语言的大多数公司,对于JVM的监控不可或缺。
每个JVM应用的参数,比如:
- GC
- 类加载
- JVM内存
- 进程
- 线程等
而这些参数的获得,都可以通过MxBeans实现。
5.mysql四大性能指标
- 查询吞吐量
- 查询执行性能
- 连接情况
- 缓冲池使用情况
6.业务应用监控
对于业务需要监控的接口,比如响应时间等。
作者简介
陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》
百度内部的noah以及针对企业级应用的noahEE也是比较不错的分布式监控系统