一 监控系统功能组件
- 指标数据采集(抓取)
- 指标数据存储
- 指标数据趋势分析及可视化
- 告警
二 监控体系
2.1 系统层监控
- 系统监控
- cpu, load, memory, swap, disk IO, processes
- 网络监控
- 网络设备监控,工作负载,网络延迟。丢包率。
2.2 中间件及基础设施类监控
- 消息中间件:kafka、rocketMq和RabbitMQ等。
- web服务器:Tomcat、nginx等。
- 数据库及缓存系统:Mysql、PostgreSQL、MogoDB、ElasticSearch、redis等。
- 数据库连接池:ShardingSpere等。
- 存储系统:ceph等。
2.3 应用层监控
- 用于衡量应用程序代码的状态和性能。
2.4 业务层监控
- 用于衡量应用程序的价值,例如电子商务网站上的销售量。
- QPS、DAU日活、转化率。
- 业务接口:登录数、注册数、订单量、搜索量、和支付量等。
三 云原生的可观测性
3.1 可观测性系统
- 指标监控(Metrics):随时间推移产生的一些与监控相关的可聚合数据点。
- 日志监控(Logging):离散式的日志或事件。
- 链路跟踪(Tracing):分布式应用调用链跟踪。
3.2 可观测性系统分类
- 监控系统:以Prometheus等为代表;
- 日志系统:以ElasticStack和PLG Stack等为代表;
- 分布式调用链跟踪系统:以Zipkin、Jaeger、SkyWalking、Pinpoint等代表;
- 混沌工程系统:以ChaosMonkey和ChaosBlade等代表;
3.3 监控方法论
3.3.1 Google的4个黄金指标
- 常用于在服务级别帮助衡量终端用户体验、服务中断、业务影响等层面的问题;
- 适用于应用及服务监控;
- 延迟(Latency)
- 服务请求所需要的时长,例如HTTP请求平均延迟;
- 需要区分失败请求和成功请求;
- 流量(Traffic)
- 衡量服务的容量需求,例如每秒处理HTTP请求数或者数据库系统的事务数量;
- 错误(Errors)
- 请求失败的速率,用于衡量错误发生的情况;
- 例如,HTTP 500错误等显示失败,返回错误内容或无效内容等隐式失败,以及由策略原因导致的失败(例如强制要求相应时间超过30毫秒的请求视为错误);
- 饱和度(Saturation)
- 衡量资源的使用情况,用于表达应用程序有多满;
- 例如内存、cpu、I/O、磁盘等资源的使用量;
- 延迟(Latency)
3.3.2 Netfix的USE方法
- 全程为:Utilization Saturation and Errors Method;
- 主要用于分析系统性能问题,可以指导用户快速识别资源瓶颈以及错误的方法;
- 应用于主机指标监控;
- 使用率(Utilization)
- 关注系统资源的使用情况。这里的资源主要包括但不限于:cpu、内存、网络、磁盘等;
- 100%使用率通常是系统性能瓶颈的标志;
- 饱和度(Saturation)
- 例如cpu的平均运行排队长度,这里主要是针对资源的饱和度;
- 任何资源在某种程度上的饱和都可能导致性能性能下降;
- 错误(Errors)
- 错误计数;
- 使用率(Utilization)
3.3.3 Weave Cloud的RED方法
- 基于Google的四个黄金指标的原则结合prometheus以及Kubernetes容器实践,细化和总结的方法论,特别适合用于云原生应用以及微服务架构应用的监控和度量;
- (Request)Rate:每秒接收的请求数;
- (Request)Errors:每秒失败的请求数;
- (Request)Duration:每个请求所花费的时长;
四 监控方案
4.1 Cacti
官网地址:https://www.cacti.net/
Cacti 为全球用户提供了强大且可扩展的操作监控和故障管理框架。也是一个完整的网络绘图解决方案,旨在利用RRDTool的数据存储和绘图功能的强大功能。
Cacti 包括一个完全分布式和容错的数据收集框架、基于设备、图形和树的高级模板自动化功能、多种数据采集方法、通过插件扩展的能力、基于角色的用户、组和域管理功能以及开箱即用的主题引擎和多语言支持。
所有这些都包含在一个直观、易于使用的界面中,该界面对于 LAN 大小的安装以及具有数万台设备的复杂网络都很有意义。
4.2 Nagios
官网地址:https://www.nagios.org/
Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。
在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信报警通知。
4.3 SmokePing
官网地址:https://oss.oetiker.ch/smokeping/
Smokeping 是一款用于网络性能监测的监控软件,通过它可以在自己公司IDC的网络状况,如延时,丢包率,是否BGP多线等,通过rrdtool制图方式,图形化地展示网络的时延情况,进而能够清楚的判断出网络的即时通信情况。
4.4 Open-falcon
官网地址:https://www.open-falcon.org/
小米公司开源出来的监控软件,监控能力和性能较强。
4.5 Nightingale 夜莺
官网地址:https://n9e.didiyun.com/
一款经过大规模生产环境验证的、分布式高性能的运维监控系统,由滴滴基于open-falcon二次开发后开源出来的分布式监控系统。
4.6 Zabbix
官网地址:https://www.zabbix.com/
目前使用较多的开源监控软件,可横向扩展、自定义监控项、支持多种监控模式、可监控网络与服务等。
4.7 Prometheus
官网地址:https://prometheus.io/
Prometheus是一个开源系统监控和警报工具包,最初是在SoundCloud 上构建的 。自 2012 年成立以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并澄清项目的治理结构,Prometheus于 2016 年加入 云原生计算基金会,作为继Kubernetes之后的第二个托管项目。
Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录的时间戳一起存储,以及称为标签的可选键值对。
4.8 商业监控
监控宝:https://www.jiankongbao.com/
听云:https://www.tingyun.com/