debug
debug
命令启动一个监控 Vault 服务的进程,在一段时间内侦测有关的信息。
收集有关 Vault 集群状态的信息通常需要操作员通过各种 API 调用和终端命令访问所有必要的信息。 debug 命令旨在提供一个简单的工作流程,产生一致的输出,以帮助操作员检索和共享出问题的服务器的信息。
debug
命令遵循基本命令传统,接受的相同变量,例如通过先前登录存储的令牌,或是环境变量 VAULT_TOKEN
和 VAULT_ADDR
。使用的令牌决定了权限,进而决定了 debug
能够收集的信息。指定的地址决定了将被探测的目标服务器。
如果命令收到中断信号,在收到信号的时间点上已经收集到的信息会被保存到一个输出目录中。
权限
无论是否提供特定收集目标,debug
获取要收集的目标数据的能力取决于提供的令牌。一些目标,例如 server-status
,无需身份验证即可查询,这意味着它总能够被查询。其他目标需要所使用的令牌具有 ACL 权限来查询指定的端点,以便获得正确的响应。由于权限或其他原因在收集期间遇到的所有错误都将记录在索引文件中。
收集目标
-target
标志可以重复定义来定义调试运行期间所要收集的信息。默认情况下会收集所有信息。
Target | Description |
---|---|
config |
配置状态的脱敏版本 |
host |
运行服务的实例的信息,例如 CPU、内存以及磁盘 |
metrics |
遥测信息 |
pprof |
运行时剖析(profiling)数据,包括堆、CPU、gouroutine以及追踪剖析(trace profiling)数据 |
replication-status |
复制状态 |
server-status |
健康及封印状态 |
请注意,config
、host
、metrics
和 pprof
目标仅在主节点和性能备用节点上查询,因为信息属于节点本身,不应转发请求。
此外,由于在不启用 cgo
的情况下无法获取数据,在 OpenBSD 平台上无法获取主机信息。
输出信息的布局
输出的一组信息解压缩后是一个文件夹。除了运行时剖析数据外,其他目标都被捕获在各自独立的文件中。这些收集目标每个都以一个 JSON 数组对象的形式表达,数组中每一个成员都是在特定间隔周期内以JSON 对象格式收集到的数据。
$ tree vault-debug-2019-10-15T21-44-49Z/
vault-debug-2019-10-15T21-44-49Z/
├── 2019-10-15T21-44-49Z
│ ├── goroutine.prof
│ ├── heap.prof
│ ├── profile.prof
│ └── trace.out
├── 2019-10-15T21-45-19Z
│ ├── goroutine.prof
│ ├── heap.prof
│ ├── profile.prof
│ └── trace.out
├── 2019-10-15T21-45-49Z
│ ├── goroutine.prof
│ ├── heap.prof
│ ├── profile.prof
│ └── trace.out
├── 2019-10-15T21-46-19Z
│ ├── goroutine.prof
│ ├── heap.prof
│ ├── profile.prof
│ └── trace.out
├── 2019-10-15T21-46-49Z
│ ├── goroutine.prof
│ └── heap.prof
├── config.json
├── host_info.json
├── index.json
├── metrics.json
├── replication_status.json
└── server_status.json
例子
使用默认值启动调试:
$ vault debug
使用自定义配置启动调试:
$ vault debug -duration=1m -interval=10s -metrics-interval=5s -compress=false
仅针对特定目标启动调试:
$ vault debug -target=host -target=metrics
可用标志
除了全局可用的标准标志以外,也可以配置下列标志:
命令选项:
-compress
(bool: true)
- 是否压缩输出包。默认为true
-duration
(int or time string: "2m")
- 运行时长。默认为 2 分钟-interval
(int or time string: "30s")
- 拉取性能剖析数据和服务器状态的间隔时间。默认为 30 秒-metrics-interval
(int or time string: "10s")
- 拉取遥测数据的间隔时间。默认为 10 秒-output
(string)
- 设置调试信息输出路径。默认为基于时间生成的文件名-target
(string: all targets)
- 收集目标,如果未设置则默认收集所有信息。该标志可重复定义以指定收集多个目标。可收集的目标有:config
、host
、metrics
、pprof
、replicatioin-status
、server-status