理解监测指标,并使用 Python 去监测它们

通过学习这些关键的术语和概念来理解 Python 应用监测。

当我第一次看到术语“计数器counter”和“计量器gauge”和使用颜色及标记着“平均数”和“大于 90%”的数字图表时,我的反应之一是逃避。就像我看到它们一样,我并不感兴趣,因为我不理解它们是干什么的或如何去使用。因为我的工作不需要我去注意它们,它们被我完全无视。

这都是在两年以前的事了。随着我的职业发展,我希望去了解更多关于我们的网络应用程序的知识,而那个时候就是我开始去学习监测指标metrics的时候。

我的理解监测的学习之旅共有三个阶段(到目前为止),它们是:

阶段 1:什么?(王顾左右)

阶段 2:没有指标,我们真的是瞎撞。

阶段 3:出现不合理的指标我们该如何做?

我现在处于阶段 2,我将分享到目前为止我学到了些什么。我正在向阶段 3 进发,在本文结束的位置我提供了一些我正在使用的学习资源。

我们开始吧!

需要的软件

在文章中讨论时用到的 demo 都可以在 我的 GitHub 仓库 中找到。你需要安装 docker 和 docker-compose 才能使用它们。

为什么要监测?

关于监测的主要原因是:

理解 正常的不正常的 系统和服务的特征

做容量规划、弹性伸缩

有助于排错

了解软件/硬件改变的效果

测量响应中的系统行为变化

当系统出现意外行为时发出警报

指标和指标类型

从我们的用途来看,一个指标就是在一个给定时间点上的某些数量的 测量 值。博客文章的总点击次数、参与讨论的总人数、在缓存系统中数据没有被找到的次数、你的网站上的已登录用户数 —— 这些都是指标的例子。

它们总体上可以分为三类:

计数器

以你的个人博客为例。你发布一篇文章后,过一段时间后,你希望去了解有多少点击量,这是一个只会增加的数字。这就是一个计数器counter指标。在你的博客文章的生命周期中,它的值从 0 开始增加。用图表来表示,一个计数器看起来应该像下面的这样:

一个计数器指标总是在增加的。

一个计数器指标总是在增加的。

计量器

如果你想去跟踪你的博客每天或每周的点击量,而不是基于时间的总点击量。这种指标被称为一个计量器gauge,它的值可上可下。用图表来表示,一个计量器看起来应该像下面的样子:

一个计量器指标可以增加或减少。

一个计量器指标可以增加或减少。

一个计量器的值在某些时间窗口内通常有一个最大值ceiling和<ruby最小值floor。

柱状图和计时器

柱状图histogram(在 Prometheus 中这么叫它)或计时器 timer(在 StatsD 中这么叫它)是一个跟踪 已采样的观测结果 的指标。不像一个计数器类或计量器类指标,柱状图指标的值并不是显示为上或下的样式。我知道这可能并没有太多的意义,并且可能和一个计量器图看上去没有什么不同。它们的不同之处在于,你期望使用柱状图数据来做什么,而不是与一个计量器图做比较。因此,监测系统需要知道那个指标是一个柱状图类型,它允许你去做哪些事情。

一个柱状图指标可以增加或减少。

一个柱状图指标可以增加或减少。

Demo 1:计算和报告指标

Demo 1 是使用 Flask 框架写的一个基本的 web 应用程序。它演示了我们如何去 计算报告 指标。

在 src 目录中有 app.py 和 src/helpers/middleware.py 应用程序,包含以下内容:

from flask import request

import csv

importtime

def start_timer():

    request.start_time =time.time()

def stop_timer(response):

    # convert this into milliseconds for statsd

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e009b7a14cfe9fc931f83ac09b3ba384.html