1.简介
通过本教程的这一部分,我们进入了可观察性的领域 。 听起来像是另一个花哨的流行语,那到底是什么?
在微服务体系结构固有的分布式系统中,有太多相互影响的移动部件,并且可能以无法预测的方式失败。
可观察性 是涉及测量,收集和分析来自系统的各种诊断信号的活动。 这些信号可能包括度量,跟踪,日志,事件,配置文件等等。 – https://medium.com/observability/microservices-observability-26a8b7056bb4
尽快发现问题,在系统中找出出现问题的确切位置,并找出确切原因,这些是与微服务相关的可观察性的最终目标。 这确实是一个非常困难的目标,需要采取综合措施。
我们将要讨论的可观察性的第一大Struts是日志记录。 做好日志后,它们可以包含有关您的应用程序和/或服务所处状态的宝贵(通常是非常宝贵的)详细信息。日志是直接将您带入应用程序或服务错误流的主要来源。 除此之外,在基础架构级别,日志在识别安全问题和事件方面特别有用。
毫不奇怪,我们将专注于应用程序和服务日志。 日志记录的艺术可能是我们开发人员一生中不断完善的技能。 我们知道日志应该是有用的,易于理解的(经常是我们或我们的队友在上面运行),并且包含足够的有意义的数据以重建流程并解决问题。 原木膨胀或原木短缺,都导致浪费宝贵的时间或/和资源,很难找到合适的平衡。 此外,与通过粗心的日志记录做法泄漏个人数据有关的事件并非罕见,但其后果是深远的。
微服务的分布式性质假设存在许多服务,这些服务由不同的团队管理,很可能使用不同的框架来实现,并且在不同的运行时和平台上运行。 它导致日志格式和实践的激增,但是尽管如此,您必须能够将所有日志合并到一个中央可搜索位置,并能够关联跨微服务和基础架构边界的事件和流。 听起来像是不可能完成的任务,不是吗? 尽管当然不可能涵盖其中的每个日志记录框架或库,但这里还是要有一组核心原则。
目录
2.结构化还是非结构化?
提出并强制使用适用于日志的通用格式是不现实的,因为每个单独的应用程序或服务都在做不同的事情。 但是,围绕结构化日志记录和非结构化日志记录展开了一般性辩论。
要了解争论的内容,让我们以JCG租车平台的一部分Reservation Services为例,看看典型的Spring Boot应用程序如何进行日志记录。
...
2019-07-27 14:13:34.080 INFO 15052 --- [ main] o.c.cassandra.migration.MigrationTask : Keyspace rentals is already up to date at version 1
2019-07-27 14:13:34.927 INFO 15052 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
2019-07-27 14:13:34.932 INFO 15052 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2019-07-27 14:13:34.971 INFO 15052 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
2019-07-27 1