前言
分布式系统的运行过程比一般的企业级系统要复杂许多,里面会牵扯到很多服务的调用以及复杂的并行逻辑处理。因此对于分布式系统的问题研究分析,并不是一件简单的事情。但是如果我们有一些路径能够知道它里面运行的一些情况,比如关键metric指标等等,这会给我们带来很大的帮助。现有的许多系统提供的最多的可供外界使用的信息,就是metric,不过有时这些metric指标查询起来并不是很方便。倘若系统能够提供一个直接的命令操作,让用户能直接获取这些指标,这样在操作性上无疑会大大提升其可用性。Ozone在这块做了特别的实现,专门做了insight命令工具来提升其observability。本文笔者来简单聊聊这个insight工具。
Ozone的Insight视角
在介绍Ozone insight命令之前,我们先来了解下Ozone系统内所谓的Insight具体指的是什么呢?
Ozone为了提升其系统对外的可观察性,通过对其内部各个关键服务模块(不仅仅是进程级别,还是内部线程级别,Protocol级别)做了endpoint的实现,然后对外能够展示出有效的信息,这里的有效信息包括:
- 关键服务的(实时)日志
- 关键服务的metric指标
- 关键服务的配置
具体的实现原理,笔者在之前的文章:如何提高分布式系统的可观察性:Insight Tool的引入描述过,感兴趣的同学可仔细阅读里面的细节实现,这里就不多加阐述了。
可能有人说了,上述3个信息并没有特别之处,在普通系统内也能够得到。没错,但是ozone将这些查询行为直接做成了工具命令给用户使用,在这点上还是做得比较创新的。下面来看这些insight命令的具体使用方式,然后我们就能感受到它到底有多方便了。
Ozone的insight工具命令的使用
首先,我们可以通过-help参数来获取insight命令的所有可用命令,
[hdfs@lyq bin]$ ./ozone insight -help
Unknown option: -elp (while processing option: '-help')
Usage: ozone insight [-hV] [--verbose] [-conf=<configurationPath>]