Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,另一个常用的为Nagios。
一、基础
监控的价值
- 发现问题
- 定位问题
- 解决问题
- 总结问题
监控流程
- 数据采集:通过SNMP、Agent、ICMP、SSH等对系统进行数据采集
- 数据存储:存储在MySQL、ES等
- 数据分析:事后复盘分析故障,总结问题
- 数据展示:Web界面展示,直观
- 监控报警:电话、短信、邮件、报警等
- 报警处理:根据故障级别处理
监控指标
- 监控硬件:如CPU温度、物理磁盘、虚拟磁盘、主板温度、磁盘阵列等
- 监控系统
- CPU
- 磁盘
- 内存
- 网络
- 进程
- 监控网络:多机房,各个机房之间的网络连通状态
- 监控应用:如LVS、Haproxy、Docker、Nginx、PHP、MySQL等应用服务
- 监控日志
- 系统日志
- 访问日志
- 错误日志
- 运行日志
- 网络日志
- 监控API:监控GET、POST、PUT、DELETE等请求,以可用性、正确性、响应时间为三大重要性能指标
- 监控性能:如DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等
- 监控业务:如电商平台每分钟产生多少订单、每分钟注册多少用户、每天有多少推广活动等
常用工具
Zabbix:Zabbix是一个基于Web界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案,它能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存在的各种问题。它支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理达到条件触发告警。
Nagios:Nagios是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。它的功能侧重于监控服务的可用性,能及时根据触发条件告警。
Cacti:Cacti是一套基于PHP、MySQL、SNMP、RRDtool等开发的网络流量监测图形分析工具,它通过snmpget来获取数据,使用RRDtool绘图(使用者无须了解RRDtool复杂的参数)。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面其功能相当不错。
Prometheus:Prometheus是由SoundCloud开源的监控告警解决方案,它使用Go语言开发,是Google BorgMon监控系统的开源版本。它存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。Prometheus有一个大型社区支持,有来自超过700多家公司的6300+贡献者、13500+代码提交、7200+拉取请求。
Grafana:Grafana是一款采用Go语言编写的开源应用,主要用于大规模指标数据的可视化展现。它支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。官方支持以下数据源:Graphite、Elasticsearch、InfluxDB、Prometheus、Cloudwatch、MySQL、OpenTSDB等。