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

从 IT 中断中学到的最佳监控实践的更多相关文章

  1. JAVA异常的最佳工程学实践探索

    此文已由作者占金武授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 先说明一下背景: 项目日志中的Exception会被哨兵统一监控并报警 比较多的项目基于dubbo在做服务化 ...

  2. java多线程中最佳的实践方案是什么?

    java多线程中最佳的实践方案是什么? 给你的线程起个有意义的名字.这样可以方便找bug或追踪.OrderProcessor, QuoteProcessor or TradeProcessor 这种名 ...

  3. Kubernetes监控实践

    一.Kubernetes介绍 Kubernetes(K8s)是一个开源平台,能够有效简化应用管理.应用部署和应用扩展环节的手动操作流程,让用户更加灵活地部署管理云端应用. 作为可扩展的容错平台,K8s ...

  4. 【译】Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu

    本文介绍两个可行的K8s监控方案:Prometheus和Sensu.两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能.定位故障.接收预警. 拓展阅读:Kubernetes监控 ...

  5. Windows性能计数器监控实践

    Windows性能计数器(Performance Counter)是Windows提供的一种系统功能,它能实时采集.分析系统内的应用程序.服务.驱动程序等的性能数据,以此来分析系统的瓶颈.监控组件的表 ...

  6. Kubernetes 最佳安全实践指南

    原文链接:https://fuckcloudnative.io/posts/security-best-practices-for-kubernetes-pods/ 对于大部分 Kubernetes ...

  7. react、react-router、redux 也许是最佳小实践1

    小前言 这是一个小小的有关react的小例子,希望通过一个小例子,可以让新手更好的了解到react.react-router4.0.redux的集中使用方法. 这是基于create-react-app ...

  8. NOS服务监控实践

    本文来自网易云社区 作者:王健 一.  背景 此处所说的服务监控程序,是通过模拟用户的请求,对一个系统的服务质量进行监控的程序.服务监控程序的主要目的是,从用户的角度出发,通过发送端到端的请求,确认系 ...

  9. 20 个 OpenSSH 最佳安全实践

    来源:https://linux.cn/article-9394-1.html OpenSSH 是 SSH 协议的一个实现.一般通过 scp 或 sftp 用于远程登录.备份.远程文件传输等功能.SS ...

随机推荐

  1. error: Error: No resource found that matches the given name (at 'layout_above' with value '@id/btnLayout').

    今天在练习fragment碎片的时候,进行界面布局的时候出现了这个问题. 后来解决后发现原因很简单:就是因为在布局xml文件中,引用ID和声明ID的顺序必须保证声明在前,引用在后.和布局的顺序无关. ...

  2. 【S】【S】【S】一大波前端干货整合(一)

      前端交流站点 大前端       http://www.daqianduan.com/ V2EX       http://www.v2ex.com/ W3cplus    http://www. ...

  3. mysql常见问题

    Q:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.111' (61)A: 找到my.cnf,把#bind-addres ...

  4. 有理数类 Java BigInteger实现

    import java.math.BigInteger; public class Rational extends Number implements Comparable { private Bi ...

  5. Cookie / Session / URL重写

    Cookie //创建一个Cookie对象 Cookie cookie = new Cookie("username","JACK"); //在客户端存储的时间 ...

  6. 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例

    部署环境:Window 7 SP1+IIS7 成功方案: 其成功解决问题的几个重要因素如下: 1.       由于WebService默认不支持Get请求,所以要在Web.config配置文件内的& ...

  7. leetcode169——Majority Element (C++)

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  8. 在远程服务器上完成本地设备的程序烧写和调试(基于vivado ,SDK软件)

    在使用vivado和SDK进行设计开发的时候,通常需要登录到远程服务器上进行,但是会遇到一个问题就是,所使用的开发板通常是连接在自己的电脑上(local-PC),那要怎么才能让运行在服务器上的设计软件 ...

  9. IQueryable接口与IEnumberable区别

    IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些 ...

  10. linux进程间通信--有名管道

    有名管道 只有当一个库函数失败时,errno才会被设置.当函数成功运行时,errno的值不会被修改.这意味着我们不能通过测试errno的值来判断是否有错误存在.反之,只有当被调用的函数提示有错误发生时 ...