什么?还没听说过Prometheus,或许你需要了解这些知识点

阅读本文大概需要 6 分钟。

福利:文末留言送 3 本《Prometheus监控实战》,豆瓣评分高达 9.0 分,希望大家积极留言,每个人都有机会。

导语:Prometheus是一个开源的监控系统,它从应用程序中实时获取时间序列数据,然后通过功能强大的规则引擎,帮助你识别监控环境所需的信息。在学习Prometheus之前,你需要先了解一些监控的基础知识,本文将循序渐进地介绍什么是监控、以及通用的监控方法。

一 监控的客户

从技术角度来看,监控是衡量和管理技术系统的工具和流程。但监控远不止于此,监控将系统和应用程序生成的指标转换为对应的业务价值。你的监控系统会将这些指标转换为衡量用户体验的依据,该依据为业务提供反馈,以确保为客户提供了所需的产品。同时该依据还提供了对技术的反馈,指出哪些组件不起作用或者导致服务质量下降。

实际上,监控系统有以下两个“客户”:

  • 技术

  • 业务

1 技术作为客户

监控系统的第一个客户是技术。这是你、你的团队以及其他管理和维护技术环境的同事(可能被称为运维工程师、DevOps或是SRE)。你可以通过监控来了解技术环境状况,还可以帮助检测、诊断和解决技术环境中的故障和问题(尤其是在影响用户之前)。监控提供了大量的数据,帮助洞察关键的产品和技术决策,并衡量这些项目是否成功。监控也是产品管理生命周期以及与内部客户关系的基础,有助于验证项目资金是否得到充分利用。如果没有监控,最好的情况是没有问题发生,最糟糕的是问题发生了但没有被发现。

2 业务作为客户

业务是监控系统的第二个客户。监控系统是为了支持业务,并确保业务持续开展。监控可以提供报告,使企业能够进行良好的产品和技术投资,还有助于业务衡量技术带来的价值。

二 监控基础知识

监控是管理基础架构和业务的核心工具。监控也是必需的,应该和应用程序一起构建和部署。没有监控,你将无法了解你的系统环境、进行诊断故障、制定容量计划,也无法向组织提供系统的性能、成本和状态的信息。

关于监控,Google服务层次结构图就是一个很好的的阐述。

640?wx_fmt=jpeg

图1 服务层级

但是监控没有那么容易实施,如果你监控了错误的东西或者使用错误的方式,那监控系统的价值将大大降低,这里列举一些关于监控的反模式和解决方案。 

1 事后监控

对于任何应用程序开发方法,在构建之前确定要构建的内容都是个好主意。遗憾的是,有一种常见的反模式,即将监控和其他运维工作,比如安全性,视为应用程序的增值组件而非核心功能。与安全性一样,监控也应该是应用程序的核心功能。如果你要为应用程序构建规范或用户故事,务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。我保证你会错过一些需要监控的东西。

2 机械式监控

许多环境会为所有应用程序建立货物崇拜(Cargo Cult)式的监控系统。团队始终复用他们过去使用的检查机制,而不会为新系统或应用程序进行更新。一个常见的例子是监控每台主机上的CPU、内存和磁盘,但不监控可以指示主机上的应用程序是否正常运行的关键服务。如果应用程序在你没有注意到的情况下发生故障,即使进行了监控,你也需要重新考虑你正在监控的内容是否合理。

根据服务价值设计自上而下的监控系统是一个很好的方式,这会帮助明确应用程序中更有价值的部分,并优先监控这些内容,再从技术堆栈中依次向下推进。

640?wx_fmt=jpeg

图2 监控设计

从业务逻辑和业务输出开始,向下到应用程序逻辑,最后到基础架构。这并不意味着你不去收集基础架构或操作系统指标 - 它们在诊断和容量规划中很有帮助 - 但你不太可能使用这些来报告应用程序的价值。

注: 如果无法从业务指标开始,则试着从靠近用户侧的地方开始监控。因为他们才是最终的客户,他们的体验是推动业务发展的动力,了解他们的体验并发现他们何时遇到问题本身就很有价值。

3 不够准确的监控

这个反模式的一个常见形式是虽然监控了主机上的服务状态,但不够准确。例如,通过检查HTTP的200状态码可以监控Web应用程序是否正常运行,它会告诉你应用程序正在响应请求,但是它并不会反映出是否返回了正确的数据。

因此需要找准服务监控的内容 - 例如,监控业务事务的内容或速率,而不是监控它运行的Web服务器的运行时间。你会这两种好处:如果服务因为配置错误、程序bug或受损导致内容不正确,你会及时查看到;如果是因为底层Web服务出现故障,你同样也会知道。

4 静态监控

另一种反模式是使用静态阈值 - 例如,如果主机的CPU使用率是否超过80%就发出警报。这种检查通常是不灵活的布尔逻辑或者一段时间内的固定阈值,它们通常会匹配特定的结果或范围,这种模式没有考虑到大多数复杂系统的动态性。阈值的匹配或许很重要,它可能由异常事件触发 - 或者甚至可能是自然增长的结果。

静态阈值几乎总是错误的。数据库性能分析供应商VividCortex首席执行官Baron Schwartz对此评论道:

它们比一个停摆的时钟更糟糕,至少时钟每天还会有两次准的时候。任何给定系统的阈值都是错误的,因为所有系统都略有不同,并且在任何给定时刻也都是错误的,因为系统在经历不断变化的负载和其他情况。

为了更好地监控,我们需要查看数据窗口,而不是静态的时间点,我们需要使用更智能的技术来分析指标和阈值。

5 不频繁的监控

对于许多监控工具来说,设定监控周期都是一项挑战,一般默认检查周期设置了一个较大的值 - 例如,每隔5到15分钟仅检查一次应用程序。这通常会导致检查之间发生的关键事件丢失。你应该频繁地监控应用程序,以获得以下好处:

  • 识别故障或异常

  • 满足响应时间预期 - 你绝对希望在用户报告故障之前找到问题

  • 提供更细颗粒度的数据,以识别性能的问题和趋势

始终记住存储足够多的历史数据可以有效地帮助识别性能的问题和趋势。在很多情况下,这可能只需要数天或数周的数据 - 但如果丢弃了这些数据,则可能无法识别出趋势或发现重复出现的问题。

6 监控模式总结

一个良好的监控系统应该能提供以下内容:

  • 全局视角,从最高层(业务)依次展开

  • 协助故障诊断

  • 作为基础架构、应用程序开发和业务人员的信息源

同时它也应该是:

  • 内置于应用程序设计、开发和部署的生命周期中

  • 尽可能自动化,并提供自服务

注: 这种对监控系统“良好”的定义与另一个新出现的术语 - 可观察性 - 是交叉重叠的。你可以在Cindy Sridharan的精彩博客文章中了解更多相关信息,了解两者之间的差异。

7 警报和通知

警报和通知是监控工具的主要输出。那么警报和通知之间有什么区别呢?警报是当某些事件发生了,如指标达到阈值时。然而,这并不意味着有人被告知此事件发生,这是通知的来源。通知接收警报并告知某人或某事:通过发送电子邮件、发送短信或者创建工单等。看起来这应该是一个非常简单的领域,但它通常包含很多复杂因素,并且很难实施和管理。

要建立一个出色的通知系统,需要考虑以下基础信息:

  • 哪些问题需要通知

  • 谁需要被告知

  • 如何告知他们

  • 多久告知他们一次

  • 何时停止告知,何时升级到其他人。

如果配置不当导致生成了过多通知,那么人们将无法对它们采取任何行动,甚至可能将它们忽略掉。我们都有过这样的故事:收件箱中充满了来自监控系统的成千上万封通知邮件。有时你会因为收到很多通知,而出现警报疲劳忽略它们(或者更糟糕的是,对通知邮件直接全选 -> 删除)。因此,你可能会错过真正的重要通知。

最重要的是,你需要考虑通知内容。通常当出现问题或者有事件需要你注意时,通知是唯一的途径。它们需要简洁、清晰、准确,易于理解并且可操作。设计有价值、有意义的通知至关重要。让我们通过一个示例,看看通知内容为什么很重要。以下是Nagios关于磁盘空间的通知。

代码清单1.1 Nagios通知样例

PROBLEM Host: server.example.com	
Service: Disk Space	
State is now: WARNING for 0d 0h 2m 4s (was: WARNING) after 3/3 checks	
Notification sent at: Thu Aug 7th 03:36:42 UTC 2015 (notification number 1)	
Additional info:	
DISK WARNING - free space: /data 678912 MB (9% inode=99%)

想象一下,你刚刚在凌晨3点36分收到这条通知。它都告诉了你哪些信息?首先,这是一个主机磁盘空间警报,并且/data目录存储已达到91%。乍一看这很有价值,但实际上并没有那么实用。首先,这是一个存储空间突增导致的?还是逐渐增长的结果?增常速度是多少?(1 GB分区上9%的可用磁盘空间与1 TB磁盘上9%的可用磁盘空间完全不同)你可以忽略或静音这类通知嘛?还是需要立即采取行动?如果没有其他上下文,采取的行动就会受到限制,你需要投入相当多的时间来收集上下文。

在我们的框架中,将重点关注以下内容:

  • 使通知清晰、准确、可操作。使用由人而不是计算机编写的通知在清晰度和实用性方面有显著差异

  • 为通知添加上下文。通知应包含组件的其他相关信息

  • 仅发送有意义的通知

提示: 在这里给出的最简单的建议是记住:通知是供人而不是计算机阅读的,请用心地设计它们。Datadog团队也发布了一篇关于可视化时间序列数据的文章,同样值得一读。

在本章中,我们介绍了现代监控方法,列举了几种监控实现的细节。我们讨论了监控的最佳实践和反模式,以及如何避免反模式的设计。

我们还详细地介绍了时间序列数据和指标,细分并讲解了不同的指标类型。此外,本章还演示了一些应用在指标上的常见数学函数和聚合操作。

三 小结

在本文中,我们介绍了现代监控方法,列举了几种监控实现的细节。我们讨论了监控的最佳实践和反模式,以及如何避免反模式的设计。

以上内容摘自《Prometheus监控实战》一书,经出版方授权发布。

==留言赠书==

本次【中秋节福利】联合【机械工业出版社华章公司】为大家送上3本正版《Prometheus监控实战》图书,豆瓣评分高达9.0分。

祝大家中秋节快乐,阖家团圆!

规则:比较简单,大家可以留言说说想要这本书的原因,或者你对监控的理解最为真诚留言的前 3 名获得此书。时间截止至 9.13(也就是今天下午)19:00 为止。大家快快留言吧,每个人都有机会的!

大家如果不想参与也可以直接通过下面的链接或者阅读原文前往购买:

推荐语:

(1)Docker公司前服务与支持副总裁、Kickstarter前首席技术官、Empatico首席技术官撰写 (2)第一本国外权威技术人员的Prometheus译著,体系结构完整,非简单的资料整合 (3)覆盖了目前的一些主流云技术(比如AWS),但同样适用于各种其他环境和技术栈。

适合谁读?

  • 云计算工程师

  • 云运维工程师

  • 架构师

  • 其他对云计算和监控感兴趣的人员

通过阅读本书,你将学到以下内容:1)·Prometheus监控:使用Prometheus来监控主机、应用程序和服务,内容涉及安装、基本监视、服务发现、警报、日志监控、伸缩和可视化。2) ·监控与度量:监控基础、方法和途径,介绍如何在以度量为中心的环境中进行监控,包括构建动态阈值、基本异常检测以及监控聚合与联合,研究如何应用现代模式,如谷歌的四个黄金指标、USE方法和RED方法。3) ·Kubernetes与容器:对Kubernetes、Docker和容器进行监控,专注于监控高度动态、瞬息万变的环境和新架构(如微服务)的特殊挑战。4) ·云:在云中进行监控,包括服务发现和云平台的监控。


后台回复“加群”,带你进入高手如云交流群。如果你喜欢本文,不妨分享给你喜欢的朋友读,或者点下右下角的“在看”,谢谢了!

推荐阅读:

为什么CPU缓存会分为L1、L2、L3?

网络检测神器 ss 命令,你可能根本就不会用!

聊聊几种主流Docker网络的实现原理

漫话:如何给女朋友解释什么是CDN?

到底什么是CDN?一文看懂


喜欢,就给我一个“在看”

640?wx_fmt=png


10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024」,即可免费获取!!

Prometheus是一个开源的系统监控和时间序列数据库,用于收集、存储和查询监控数据。它提供了灵活的查询语言和强大的可视化工具,使用户可以深入了解系统的性能和状态。 以下是安装和配置Prometheus的一般步骤: 1. 下载Prometheus:从Prometheus官方网站(https://prometheus.io)下载适用于你操作系统的Prometheus二进制文件。 2. 解压文件:将下载的二进制文件解压到你选择的目录。 3. 配置Prometheus:进入解压后的Prometheus目录,编辑`prometheus.yml`配置文件。 4. 配置目标(Targets):在配置文件中,定义你要监控的目标(例如Flink集群、数据库等)。配置目标时,需要指定目标的名称、地址和相关的指标信息。 5. 配置报警规则(可选):如果你想使用Prometheus的报警功能,可以在配置文件中定义报警规则。报警规则定义了什么情况下触发报警以及如何发送报警通知。 6. 启动Prometheus:在命令行中切换到Prometheus目录,并执行启动命令,如`./prometheus`(Linux/Mac)或`prometheus.exe`(Windows)。 7. 访问Prometheus UI:在浏览器中访问`http://localhost:9090`,即可打开Prometheus的用户界面。 8. 配置和运行Exporter(可选):如果你想监控其他系统或服务,可以使用Exporter将数据导出到PrometheusPrometheus有许多官方和第三方的Exporter可供使用,如Node Exporter、JMX Exporter等。 9. 查询和可视化数据:在Prometheus的用户界面中,你可以使用PromQL查询语言来查询和分析监控数据,并使用Prometheus自带的图表工具或结合其他可视化工具(如Grafana)进行数据可视化和仪表盘的创建。 以上步骤提供了一个基本的安装和配置Prometheus的指南。具体步骤可能会因为操作系统和版本而有所不同,请根据官方文档和实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值