文档章节

从 IT 中断中学到的最佳监控实践

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2016/01/27 11:31
字数 1524
阅读 60
收藏 5

每个运维监控工具,一般要追踪数十万个内部性能指标。学会对哪些事件进行告警以及监控确实需要花费想当长的一段时间。因为,并非所有的指标等级都是一致。因此我们需要摸索出一套简单的方法,便于管理所有指标,而且简单易学。以下为我们总结的 Datadog 的一些实践经验。

###监控目标

首先我们应该了解我们为什么你要花费心力实现更好的监控? 以下三点为总结的监控目标:

  1. 在客户及老板觉察之前发现问题

  2. 了解系统以及应用的运行状况

  3. 尽可能降低你的压力水平

###指标分类

在了解目标后,应该清楚各个指标的种类。如你的监控工具追踪了哪些指标 ? 常见的指标有:CPU 使用量,内存使用量,数据库或 Web 请求。指标的种类多种多样,但是所有指标都可归入基本的两大类:工作指标以及资源指标。

####工作指标

一般来说工作指标有两大类:

  1. 工作指标测量系统或应用生产的有价值的事物的量。例如,数据库每秒返回的查询数量,Web 服务器每秒发送的网页数量。因为,数据库的主要功能在于返回查询结果,Web 服务器则在于为网页提供服务。

  2. 应用带来的经济效益,比如收入。这种指标可以直观地追踪应用以及基础架构的可用性,便于了解其运行效率,因此更加有用。

####资源指标

资源是用于生产价值所消耗的事物。因此,资源指标用于测量完成某项工作、生产某些内容所消耗的事物的量。

你若是问“数据库使用了多少 CPU ?”,这种问题往往无益于判定应用的效用。因为一般的回答是:“ 我有足够的 CPU ”,或者 “ 我的 CPU 使用量已经到达极限了 ”。

对于内存,磁盘,网页带宽等资源的提问也是如此。通常,资源指标会用于容量规划,而非可用性管理。

###优化监控方案

了解了工作指标与资源指标之后,我们可以进一步讨论最佳实践方案。

#####1.将关键指标分为工作或资源指标

审视关键指标,尤其是那些是你真正在意的指标。再将它们归类为工作指标或资源指标。

#####2.仅为工作指标设置告警

分类完成之后(请务必花时间进行分类,这很重要),你需要确定为哪些指标设置告警。事实上,你应该仅为工作指标设置告警。换言之,你应该为测量系统可用程度的指标设置告警。

不过,给指示应用宕机的首要资源指标设置告警也很有益。比如,磁盘空间是一种资源指标。然而,如果磁盘空间耗尽了,整个应用就无法运转,因此,为这类指标设置告警也很重要。但是,总体而言,为资源指标设置告警的情况非常罕见。

#####3.仅为可操作的工作指标设置告警

针对上一条最佳实践的一点修正是:仅为可操作的工作指标设置告警。换言之,你应该为可以采取行动的工作指标设置告警。

例如,对于 Web 服务器而已,可操作的工作指标可以是每秒内无错误服务的网页数量。这之所以是可操作的工作指标,是因为如果 Web 服务器服务的网页数量为零,网站肯定不再运行,而是宕机了。这时候,你必须采取行动了。

无法操作的工作指标可以是 Web 服务器每秒服务的 404 页面数量。该指标之所以无法操作,是因为其完全取决于访客的行为。如果他们访问许多不存在的 URL,那么肯定会生成许多 404 页面。这并不是说网站性能不好,而是访客的行为超出了预期。因此,你不应该为不可操作的工作指标设置告警。

#####4.定期回顾检查指标与告警

第四点,也可能是最难坚持的一点,是定期地回顾并检查指标与告警。你可以一周一次,两周一次,或者一个月一次,但请一定要在繁忙的任务表中划出一些时间,与团队一起进行回顾。

###回到目标

现在,让我们将这些最佳实践与前文提到的监控目标结合起来。请注意:将关键指标分类为工作指标或资源指标是一切的前提。

#####1. 在客户及老板觉察之前发现问题

仅为工作指标设置告警,可以避免一些无用的告警,从而达到更好的监控结果。

#####2. 尽可能降低你的压力水平

仅为可操作的工作指标设置告警,因为你不打算获得无法控制的告警信息。

#####3. 了解系统以及应用的运行状况

定期回顾并检查指标与告警,可以对系统的运行状况与性能趋势有更深刻的感知,从而方便性能调优。

通过这些最佳实践,可以增强你的监控策略。国内外有很多优秀的监控工具,如 ZabbixNagios 、Datadog 、阿里云 、监控宝、腾讯云等。此外 OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性。 本文转自 OneAPM 官方博客

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
儿童应用开发的最佳实践指导

触摸屏技术正在不断革新着儿童的交互数字体验方式。宝宝们不再需要通过学习鼠标导航和键盘敲击就能访问为他们设计的互动内容。实际上,我们经常会看到一些初学走路的孩子和学龄前儿童在使用父...

oschina
2012/12/25
676
0
有奖翻译 | 翻译频道的正确打开方式,这些年你用对了吗?

对于技术达人来说,广纳知识点是进步的源泉。通过阅读技术文章我们可以学到很多东西,既可以学到业务技能,又可以了解行业动态,最不济,也锻炼了阅读和学习的能力。在不断积累的过程中,庖丁...

达尔文
2017/08/01
2.3K
11
arduino从零开始(32)中断

     arduino   你将学到什么   你将学到arduino uno的中断功能   中断介绍      中断      中断模式   设置中断   在setup()中使用函数   attachInterrupt(0,funct...

Python与Arduino
2018/03/27
0
0
下一个大型网络攻击向量将或是API

导读 如今,随着对企业网络的网络攻击变得越来越复杂,很多企业通过投资最新的防火墙、数据和端点保护以及入侵防御技术来提高周边安全性。作为回应,黑客正在走上防范阻力最小的道路,并寻找...

问题终结者
2018/07/12
15
0
时延敏感业务低概率超时问题分析

前言 作为阿里云底层提供的基础设施,内部的物理网络和许多网络产品在数据平面给客户的可操作性并不高,从一定程度上来说是个黑盒。当然,在传统的IDC环境,业务和物理网络之间也存在同样的隔...

月宾jerry
06/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
23分钟前
5
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
24分钟前
3
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
33分钟前
9
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
57分钟前
5
0
Redis

一、Redis支持的几种数据类型:字符串、List、SET、HASH、ZSET 二、Redis的缓存技术主要是为了降低关系数据库的负载并减少网站成本 三、在Redis里面,被MULTI命令和EXEC命令包围的所有命令会...

BobwithB
59分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部