一、监控概念&误区
监控是管理基础设施和业务的核心工具,监控应该和应用程序一起构建和部署,没有监控,将无法了解你的系统运行环境,进行故障诊断,也无法阻止提供系统性的性能、成本和状态等信息。
误区:要尽量避免进行机械式的监控、不够准确的监控、静态和监控、不频繁的监控、缺少自动化或自服务。
二、黑盒监控&白盒监控
1、黑盒监控
-
应用程序或主机是从外部观察的,因此,这种方法可能相当有限。检查是为了评估被观察的系统是否以已知的方式响应探测。
-
例子:
1)主机是否相应PING的请求
2)特定的TCP端口是否打开
3)应用程序在接受到特定的HTTP请求时,是否使用正确的数据和状态代码进行响应
4)特定应用程序的进程是否在其主机中运行
2、白盒监控
系统在被测对象表面显示其内部状态和临界段的性能数据。这种类型的自省可能非常强大,因为它暴露了内部操作,显示不同内部组件的健康状况,否则很难甚至不可能确定。这种数据处理通常以胰腺癌方式进行处理:
1)通过日志导出:到目前为止。这是也是在广泛引入库之前,应用程序是如何暴露其内部工作的最常见的情况,例如:可以处理 HTTP 服务器的访问日志来监视请求率、延迟和错误百分比;
2)以结构化的事件输出:这种方法类似于日志记录,但不是将数据写入磁盘,而是直接将数据发送到处理系统进行分析和聚合。
3)以聚合的方式保存在内存中:这种格式的数据可以驻留在端点中,也可以直接从命令行工具中读取。这种方法的例子有/metrics with Prometheus metrics、HAProxy 的 stats 页面或 varnishstats 命令行工具。
三、度量指标
度量指标有监控系统执行的过程通常可以分为两种方式:push(监控系统去服务进行拉取)、pull(被监控的服务自动往监控系统进行推送)【站在客户的角度】
-
Push VS Pull
-
测量什么:
谷歌提出应该监控的四个指标:
-
延迟:服务请求所需的时间
-
流量:正在发出的请求的数量
-
错误:求失败的比率
-
饱和:未处理的工作量,通常在队列中
Brendan 的方法更关注于及其他声明对于每个资源(CPU、磁盘、网络接口等等),应该监视以下指标:
-
利用率:以资源繁忙的百分比来衡量
-
饱和:资源无法处理的工作量,通常会排队
-
错误:发生的错误数量
汤姆威尔基的红色方法:更侧重于服务级别方法,而不是底层系统本身。显然,这种才领略对于见识服务很有用,对于预测外部客户的体验也很有价值。如果服务的错误率增加,那么就可以合理地假设这些错误将直接或间接地影响客户的体验。
-
速率:转换成每秒请求数
-
错误:每秒失败请求的数量
-
持久性:这些请求所花费的时间