本文作者以文章摘要介绍的方式,向大家分享了一些监控领域质量不错的文章。这些文章涵盖了监控的日志记录、数据追踪以及指标监控方面,非常值得大家学习。
在过去的几年中,可观察性概念在 DevOps 和监控领域异常火热。你可能对数据可观察性操作比较熟悉,比如日志记录、事件跟踪和指标监控展示等。 但是,你知道应该如何做好这三件事吗?
下面是一些与监控相关的在线资源的列表,可指导你与日志记录、事件跟踪和指标监控相关的工作。如果你有在拥有这些资源的团队工作过的经历,那么一定会迸发出一些关于如何应对监控挑战的想法。
日志记录,事件追踪及指标监控简介
日志记录,事件追踪以及指标监控
如果你想快速了解白盒监控/可观察性的三个核心方面,那么Phil Winder博士的文章可能会帮到你。他对每个方面进行了详细阐述,同时就其优缺点表达了自己的看法。检测和监控也被很多人称之为“指标监控”。
云原生时代下的监控
想要全面地了解当前可观测性和监控在业界发展的情况,需要好好阅读一下Cindy Sridharan的内容。本文介绍了可观察性的概念,定义了现代可观察性的三个核心概念——日志记录,请求跟踪和指标收集——并描述了它们的使用场景。Sridharan 在自己的一篇博文中进行了"Logs and Metrics"的讨论,这也是一篇质量很高的文章,文章短小精悍,信息量很大,推荐大家阅读。她还针对该主题编写了免费的电子书,书名为《分布式系统可观测性》。
黑盒监控 vs. 白盒监控
指标监控已死?
在参加 Monitorama 会议之后,Paul Dix就现代指标监控的相关性(他称之为“常规时间序列”)分享了一些实用的意见和建议。这篇文章从多个角度,分别介绍了监控的三个核心方面。结论是,虽然事件追踪对于微服务更有用,但在更常见的单体架构中,指标、事件和日志才是最重要的。
日志记录
程序员日志管理应用指南
如果你是一个新手开发人员,那么 FreeCodeCamp 是一个不错的增长自己技能的学习平台。任何执行操作和调试代码的程序员都应该知道日志处理的工作原理,这篇文章对于尚不了解如何输出日志的人来说,是一个不错的起点。作者Stefanos Vardalos从日志记录的诊断和审计两方面进行了阐述,同时还分享了分别适用于前端和后端开发的日志记录工具,如果你对日志记录不是那么了解,可以前去学习一下。
日志管理终极指南
该资源不仅仅是一篇文章,而是一个完整的教程网站。它是由日志管理供应商 Loggly 创建的,但是内容与供应商无关,而且全权由社区维护。网站内容分为九个部分:.NET、Apache、Java、Linux、Node.js、PHP、Python、Systemd 和 Windows。每个部分都提供了关于如何进行日志分析和解析、如何定位和处理常见问题以及如何在分布式系统中集中或聚合日志的基础知识,并附有相应的使用指南。
不间断的日志记录-可操作性的基础
Matthew Skelton在这次演讲视频中分享了自己关于现代日志管理的独特见解。他提到,日志记录管理的关键是使用正确的事务标识符,以便可以跨组件,服务和队列进行跟踪调用。他还有另一篇不错的文章,题目为《为什么以及如何进行日志测试》,推荐大家阅读一下。
关于日志,很多观点有一定的时代局限性
Honeycomb.io 博客是查找日志管理内容的理想地。它发布的很多博文都在讨论日志记录相关的话题,尽管 Honeycomb.io 是产品供应商,但许多发布的文章与供应商无关。
Honeycomb.io 的联合创始人Charity Majors撰写了一篇文章,题为《Lies My Parents Told Me》(父母讲给我的那些谎言,喻指老旧错误的观点),其中探讨了 11 种关于日志记录的错误示范。
Honeycomb.io 社区关于日志的其他不错的文章还有《你可以考虑使用结构化日志记录工具》”,文章中用 30 行代码对可测试结构化日志进行了解释和展示;《使用NLog实现简单结构化日志记录》这篇文章介绍了使用.NET 实现的一个日志记录库 NLog 的用法示例;以及《从过去的单机服务到现在的分布式微服务》,该文章介绍了 Snyk 如何构建日志记录系统,以使团队中的所有开发人员在远程工作时可以高效的定位和解决问题。
日志记录及其实时流处理
本文引用自Jay Kreps撰写的《日志之我见:事件数据,流处理和数据集成的一部分。 这本书收到众多资深开发者以及博客作者Ben Nadel的好评。本文也是 Kreps 早期的一篇详细介绍日志处理的文章《软件工程师都应该知道的关于实时数据处理的统一抽象》的一部分。这些文章都从日志的处理和存储在日志管理中的面临的挑战这一角度进行了讨论,并提供了关于流数据处理概念的深入知识。
“事实证明,流是日志数据传递的体现,而日志是流处理的核心。”
—Jay Kreps
引入网络错误记录
Douglas Creager在这篇文章中对基本网络监控理论进行了简要介绍。他介绍了一种经典的技术策略,其中涉及到服务器和客户端请求日志的收集,以帮助你了解网络黑盒中发生的事情。
日志与监控
Peter Bourgon对于哪些日志需要记录以及应该监测什么指标提出了一些简明而又准确的建议。该文章可以帮助你掌控业务潜在的风险的同时,正确看待日志记录和监控指标采集之间的关系。比如你可以了解到,什么样的指标监控是有意义的,什么时候开始检测你的代码,日志中应该记录什么样的内容,日志级别应该怎么定义,以及应该将日志存储在什么位置。
Python日志模块使用指南
对于应用程序级日志记录,在开始寻找外部库之前,你应该首先查看下所用的编程语言及框架的相关文档,了解它们具有哪些内置日志记录功能。在日志记录方面,某些语言比其他语言更易于使用。我不止一次听到开发人员称 Java 日志记录功能“一团糟”。因此,我分享了这篇基于 Python 日志记录的介绍,因为 Python 被广泛认为是一种优秀的面向初学者的编程语言。在本教程中,Mario Corchero剖析了 Python 日志记录模块,并向你展示了如何使用、配置以及扩展它。
构建中央日志采集服务
就职于 BrowserStack 的工程师Akhil Labudubariki分享了他所在的公司是如何在内部构建中央日志记录服务的案例。该日志记录服务会追踪关键产品的运行指标以及几个关键服务的健康指标,包括 API 响应延迟、网络性能等。
构建集中式日志采集程序
Vikesh Tiwari维护了一个有趣的开源软件,它可用于构建集中式日志采集应用程序。他在文章中详细介绍了我们通常需要考虑的日志收集,传输,存储,分析和警报功能。(截止今日我发布该文章,他尚未更新这一系列的第二部分😂。)
集中式日志采集应用的数据流示意图
《经济学人》的日志采集及其监控系统
《经济学人》之前已经从单体架构过渡到微服务架构,但当时日志采集以及监控系统暂时无法与微服务架构匹配。在这篇文章中,该杂志公司的首席工程师Kathryn Jonas分享了她的团队构建标准化结构日志采集监控系统过程中的精彩故事。
OWASP日志采集安全防御检查表
OWASP 即 Open Web Application Security Project,开放式 Web 应用安全项目的简称。
安全操作上下文的日志采集是一个非常大的主题,需要涉及到其他一些文章。在构建这样的日志采集系统架构时,请确保你的团队中包括安全专家或信息安全拥护者。日志采集对于检测攻击和系统入侵至关重要。结合 OWASP 日志记录安全防御清单以及其他安全操作资料,可以帮助你更好的学习安全相关的日志采集工作。
日志记录造成安全事件;我们从GitHub和Twitter的经历中学到了什么?
最近,Twitter 和 GitHub 在其应用程序或服务日志中意外地记录了用户的敏感信息(包括密码)。你如何确保你的日志记录也不会造成安全隐患? 可以阅读 Scott Helme 的文章,它介绍了 Report UI 填补系统安全漏洞的方法。
“日志记录功能非常好用,它可以记录很多关键信息,但选择记录哪些信息,需要谨慎考虑。”
微服务设计:日志采集与监控
来自 Azure 的这篇文章提出了几点关于微服务体系架构日志采集和监控相关的实用建议。它整理和提供了你在构建日志记录基础结构时可能会询问到的重要问题列表,并且包括了服务之间分布式追踪和监控的建议。最后还提供了一些技术实现方案的策略概述。
容器时代下的分布式日志架构
本文概述了在分布式系统和容器化微服务架构中日志记录的新要求。除了阐述了容器时代下新的挑战和要求,还介绍了日志聚合模式以及日志记录架构的弹性扩缩容模式。
源日志聚合与目标日志聚合
使用Docker logs高效地调试应用
Ryan Davidson 的这篇文章简明扼要地列出了一些 Docker 日志处理技巧,这些技巧向你展示了如何有效地从 Docker 容器中获取日志数据。它们教你如何显示所有日志、如何定位和跟踪特定容器、如何使用 tail 和 grep 处理和搜索日志,以及如何使用组合命令将日志写入文件。
在Kubernetes中设置日志选项
Arve Knudsen分享了他在 AWS 部署的 Kubernetes 中创建日志管理系统的方法。该日志管理系统使用Elasticsearch作为搜索引擎,使用Kibana作为图形界面,并使用Fluentd进行日志收集。本文包含了很多代码示例。更多相关的介绍,可以查看Kubernetes的使用文档。
Yubl的Serverless迁移之路
Yan Cui的所在的 Yubl(一款做社交软件的公司),在 AWS Lambda 上运行了 Serverless 应用程序。这篇文章介绍了该公司使用 ELK 日志收集、ID 关联追踪以及使用 CloudWatch 指标监控的成功案例,非常有指导意义,推荐大家阅读。
事件追踪
Linux中用户及内核空间中的动态跟踪
数据追踪是监控的另一个主要组成部分,并在微服务架构中变得越来越重要。前面讲到的日志记录部分涵盖了部分数据跟踪的内容,通常建议使用有关联的 ID 来追踪微服务架构中不同部分相关联的事务。
除了该策略以外,你可能还希望对操作系统级别的追踪有一定的深入了解。Pratyush Anand的这篇关于 Linux 动态跟踪的文章面向普通用户展开了介绍,文章开始先介绍了一些定义统一大家共识,最后给出了一个设置探测点的简单示例作为结束。
选择一个Linux跟踪工具
Linux 跟踪方面,Brendan Gregg是 Netflix 的性能架构师,也是DTrace工具包的创建者,如果感兴趣,赶紧订阅他的博客。不管你是一般的运营工程师还是性能/内核工程师,这篇文章可以帮助你选择适合你应用场景的追踪工具(这样的工具实在是太多啦!)。 有关如何使用 Linux 跟踪器的精彩介绍,请观看 Gregg 关于Linux性能追踪的15分钟演示。对了,一定要记得查看Gregg的其他教程,他们同样非常受欢迎。
Linux追踪工具
Julia Evans经常分享 Linux 性能追踪以及其他相关主题的文章,这些文章是非常好的学习资源,对于初学者非常友好,因为她站在一个初学 Linux 性能追踪人员的角度进行讲解。这篇文章首先快速概述了几种常用工具,提供了非常漂亮的图示图表,十分便于我们进行理解,让我们更容易上手 Linux 追踪工具的软件生态。
Windows系统下的软件跟踪工具
如果你所在的公司或者组织使用 Windows 服务器,那么需要一套完全不同的系统追踪教程。这篇文章是微软硬件研发中心网站的一个文档,它包含了 12 个链接,每一链接的指向资源介绍了 Windows 系统下的追踪细节。
如何在分布式系统实现事务追踪
这篇文章概述了现代应用程序性能管理(APM)系统的功能点,这些功能可以让你在整个分布式系统上跟踪事务。文章解释了如何重建事务,如何在网络上对其进行跟踪,以及如何使用日志数据来获得系统的完整视图。Baron Scwartz分享过一篇不错的文章,可以作为该文章的后续《如果无法实现端到端追踪怎么办?》。
OpenTracing:新兴的开放式分布式追踪行业标准
与上一篇推广 APM 工具的文章相反,这篇文章介绍了 OpenTracing 的标准,该标准与供应商无关,包括一系列 API 以及用于分布式跟踪的使用指南。作者Nedim Šabić解释了为什么选择 OpencTracing:
“一般而言,APM 供应商拥有自己专有的跟踪代理工具和 SDK,它们可以自动地(黑盒检测)或者让用户修改被监控的应用程序源代码(白盒检测)来监控应用程序。很明显,这存在一些问题,比如用户容易被供应商捆绑限制,以及后续随着系统维护、技术迭代更新,对供应商的依赖会越来越高,后续的成本也会越来越大,难以掌控。”
Šabić写的这篇文章介绍了 OpenTracing 的技术细节,还写了另外三篇文章来介绍和比较Zipkin与Jaeger,这是两个实现 OpenTracing 标准的开源工具。
前端性能分析工具之Chrome开发者工具
提起前端追踪,我们必须要使用浏览器工具。Google 在介绍如何使用 Chrome 开发者工具来追踪网页性能的问题上拥有非常出色的文档。Kayce Basques提供了可视化的分析及实战,并向你展示了如何读取和理解网站性能图。
日志记录!= 日志追踪
尽管这是一篇较老的文章,但中间部分提供了一些有关日志记录与追踪的有用建议。它说明了在系统体系架构中应该根据需求的目标来分别对待每一个需求,做到具体问题要具体分析。
指标监控
指标,监控以及告警简介
在这篇文章中,Justin Ellingwood定义了指标,监控和告警的概念,同时还阐明了他们的作用。他还讨论了不同类型的监控指标,以及影响你选择的监控指标的因素。文章以一系列监控术语的词汇解释结尾。
如何监控SRE黄金数据
使用 Brendan Gregg 的USE方法、Tom Wilkie 的 RED 方法以及Google SRE书中介绍的方法,Steve Mushero总结了我们应监控的“黄金信号”列表。首先,作者介绍了应该监控的五个黄金信号,然后解释了我们应该如何监控它们,文章末尾,作者列出了如何从负载均衡器,Web服务器,应用程序服务器,数据库服务器(包括MySQL/RDS和Aurora)以及Linux服务器中获取监控数据的相关链接。
云服务行业的10个最关键监控指标
这篇文章比较广泛地探讨了云应用程序的关键监控指标,包括诸如安全性和存储容量等相关监控指标。文中对每个监控指标给出一个具体的定义,并解释其重要性的成因,而且以图形说明。这 10 个指标是可用性、可靠性(故障之间的平均时间和平均修复时间)、响应时间、吞吐量、安全性、容量、可伸缩性、延迟、服务/技术平台以及单位客户的成本。
应用监控指南
Medium Capital One Tech社区的Peter Christian Fraedrich撰写了自己团队最关注的监控指标:每分钟请求次数、错误率、响应时间和网络利用率。在介绍了这四个监控参数以及对它们的整体评价之后,他继续发表了另外两篇有关监控告警展示以及故障响应及事故追踪的文章。
“工程师半夜被叫醒处理 CPU 或内存 Nagios 警报的日子已经一去不复返了。收集所有信息,对四个参数进行监控告警,并将所有信息关联起来,可以采用这种方式,因为如果真的在我们的某个应用程序主机上存在问题,这个问题会引起我们的四个关键指标之一出现剧烈变化。”
为高性能系统构建低负载指标收集工具
收集指标不可避免具有一定的性能开销。Wallaroo(一个开源数据处理框架)的开发人员在尝试减少收集工具的性能开销时遇到了一些挑战。这篇文章介绍了 Wallaroo 团队在什么情况下收集什么类型的指标以及如何展示它们时所作的一些决策。
指标时序图展示
在可观察性方面,以易于理解的形式显示指标非常重要。John Matson分享了由三部分内容组成的有关时序图指标展示文章,这些文章应该能够帮助你对可视化监控指标的展示做出更好的决策。这三篇文章分别介绍了时序图、摘要图以及反模式制图(错误示范)。
GitLab是如何监控的
想要深入了解一些成功的互联网公司是如何进行监控的,我们可以以 GitLab 为例,查看其官网的内部监控文档。由于 GitLab 秉承开源精神,因此它们的所有内部知识库几乎都可以免费获取到。本文档可以为你提供关于监控工具选用以及流程监控的方法,但这毕竟是文档,你必须好好浏览,看看是否可以借鉴一些其他有用的监控思路。
Prometheus指标监控
Prometheus 是一套流行的开源监控工具和标准,经常用于在云原生环境中进行监视。它如此受欢迎的原因之一是它丰富的指标展示功能,Cindy Sridharan 在她的《云原生时代的监控》一文中对此大表赞赏。Mateo Burillo的文章《Prometheus Metrics》详细地介绍了 Prometheus 的简单语法,进一步阐述了它如此流行原因。
Prometheus 数据结构图
在Netflix上构建可视化工具的经验教训
作为云原生运动最前沿的技术领导者之一,Netflix 是一家伟大的公司,就可视化方面它可以提供非常好的建议。这篇文章全面介绍了 Netflix 在解决日志记录、事件追踪和指标监控相关问题时面临的挑战。具体来说,团队成员描述了他们如何扩展日志记录、如何构建分布式的请求追踪、如何改进指标监控和告警、如何改进对数据存储系统的监控,以及如何针对不场景定制不同的监控指标和 UI 展示。
你还需要更多的监控相关的资料吗?
本文中提到的文章主要以概念性内容介绍为主,并有意避免对特定工具的使用进行示例讲解。但是,如果你正在寻找用于日志记录,事件追踪以及指标监控或可视化展示等方面的工具,可以试着从 GitHub 上查找一些很不错的工具,其中包括:
如果你还有其他不错的监控工具,请踊跃在评论中留言,欢迎与大家分享。
终身学习
下面分享一些学习资源供大家阅读。
作者介绍:
Mitch Pronschinske,HashiCorp 高级编辑兼内容营销经理
原文链接:
Monitoring demystified: A guide for logging, tracing, metrics
评论 1 条评论