我正在阅读Prometheus 的“入门”教程。我对 YAML 配置文件非常着迷:
scrape_configs:
- job_name: 'node'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:8080', 'localhost:8081']
labels:
group: 'production'
- targets: ['localhost:8082']
labels:
group: 'canary'
Run Code Online (Sandbox Code Playgroud)
因此,显然连字符应该指示两件事之一:新列表中的第一项,或键值对。
所以看起来job_name: 'node'
是一个键值对。那么为什么它后面的所有内容都是缩进的呢?
targets
看起来也像一个键值对。但也是如此labels
,而且没有连字符。此外,group
是从 缩进一个空格labels
。
我很难说清楚这里发生了什么。我需要知道是否要自定义此文件(我已经尝试过这样做,并在启动 Prometheus 时收到错误)。
这个文件的逻辑结构是怎样的?
fly*_*lyx 11
YAML 文档由三种类型的节点组成:标量、序列和映射。\n使用块语法时,每个节点存在于定义其内容的特定缩进级别。
\n这是一个简单的例子,可以让它更清楚:
\n-\n a\n- \n b:\n c\n-\n -\n d\n
Run Code Online (Sandbox Code Playgroud)\n在缩进级别 0 处,有连字符定义序列项。因此,顶级节点是一个序列。\n在第一个序列项中,有一个a
. 它是序列项的一部分,因为它有更多缩进。\n这被解析为标量。
在第二个序列项中,有一个将标量映射b
到标量 的映射c
。我们看到,becauseb:
是一个隐式键(后接冒号的单行节点),隐式键的出现表明映射的存在(就像序列项的存在表明序列的存在)。c
是 的值,b
因为它再次缩进。
现在,YAML 定义了一种紧凑的表示法,您可以将序列指示符视为缩进的一部分。您还可以将某些节点直接放置在隐式键之后。这将示例压缩为:
\n- a\n- b: c\n- - d\n
Run Code Online (Sandbox Code Playgroud)\n不过,该键b:
完全独立于序列项指示器-
。现在让我们将其应用到您的文件中:
scrape_configs:\n - job_name: \'node\'\n\n # Override the global default and scrape targets from this job every 5 seconds.\n scrape_interval: 5s\n # \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n顶层是一个映射,因为有一个隐式 key scrape_configs
。它包含一个包含一项的序列。这一项是一个映射并从 开始job_name:
。其他键是scrape_interval
和static_configs
。static_configs
映射到一系列映射,其中每个映射包含键targets
和labels
。
该[]
语法是用于定义序列的替代语法,通常用于适合单行的短序列。标量可以被引用,这通常在值包含 YAML 特殊符号时完成。例如,在[]
逗号内开始下一个项目,因此如果您想在标量中包含逗号,则需要引用该标量。
因此,底线:连字符和隐式键是独立的结构。不要将连字符视为密钥的一部分。
\n 归档时间: |
|
查看次数: |
3860 次 |
最近记录: |