telemetry
配置节
telemetey
配置节设置各种 Vault 用以向上游系统公布指标(metric)信息的参数。
telemetry {
statsite_address = "statsite.company.local:8125"
}
telemetry
参数
鉴于 telemetry
配置节可配置参数众多,本节中的参数将根据类别进行分组。
通用
下列参数适用于所有遥测配置:
usage_gauge_period
(string: "10m")
- 设置收集高基数(cardinality)使用数据的时间间隔,例如令牌总数、实体总数、机密总数等。配置为"none"
将关闭数据收集。maximum_gauge_cardinality
(int: 500)
- 仪表(Gauge)标签的最大基数。disable_hostname
(bool: false)
- 设置仪表数据是否添加本地主机名作为前缀。enable_hostname_label
(bool: false)
- 设置是否要为所有指标数据添加值为本地主机名的host
标签。启用该功能时推荐关闭disable_hostname
。lease_metrics_epsilon
(string: "1hr")
- 设置用以预测未来到期租约的存储桶尺寸。例如,默认值为 1 小时,那么vault.expire.leases.by_expiration
将会统计从现在开始将来 1 小时内过期的租约的总数。请注意租约会被分流后放入存储桶中。例如,如果lease_metrics_epsilon
被设置成 1 小时,租约 A 会在 25 分钟后到期,而租约 B 会在 35 分钟后到期,那么租约 A 会被放在第一个桶内,对应 0-30 分钟,租约 B 会被放在第二个桶中,对应 31-90 分钟。num_lease_metrics_buckets
(int: 168)
- 设置租约过期的存储桶数量。以默认值 168 举例来说,vault.expire.leases.by_expiration
指标数据会有 168 种不同的标签值,每个标签值对应了lease_metrics_epsilon
参数切分出的一个存储桶。如果把lease_metrics_epsilon
配置为默认值 1 小时并且配置num_lease_metrics_buckets
使用默认值,vault.expire.leases.by_expiration
将会统计从现在开始一周内每小时会过期的租约的总数。add_lease_metrics_namespace_labels
(bool: false)
- 如果将该参数设置为true
,那么vault.expire.leases.by_expiration
会同时按照时间以及名字空间进行分割。该参数默认关闭因为开启该功能会导致指标基数变大。filter_default
(bool: true)
- 该参数控制是否允许过滤器上没有设置的指标。默认为true
,在没有设置过滤器时允许接收所有指标。当设置为false
且没有配置过滤器时,将不会发送任何指标。prefix_filter
(string array: [])
- 这是一个过滤规则列表,适用于通过前缀允许/阻止指标,格式如下
["+vault.token", "-vault.expire", "+vault.expire.num_leases"]
前缀为"+"将允许具有给定前缀的任何指标,而前缀为"-"将阻止它们。如果两个规则之间存在重叠,则更具体的规则将优先。如果相同的前缀多次出现,则阻止规则有更高优先级。
statsite
以下参数适用于 statsite
:
statsite_address
(striing: "")
- 设置将指标数据转发到的 statsite 服务地址:
telemetry {
statsite_address = "statsite.company.local:8125"
}
statsd
以下参数适用于 statsd
telemetry {
statsd_address = "statsd.company.local:8125"
}
circonus
以下参数适用于 Circonus
:
circonus_api_token
(string: "")
- 设置一个用以创建、管理检查的合法的 Circonus API 令牌。如果设置该参数,将启用指标管理。circonus_api_app
(string: "nomad")
- 设置一个与 API 令牌关联的应用名称。circonus_api_url
(string: "https://api.circonus.com/v2")
- 设置连接 Circonus API 的基础 URL。circonus_submission_interval
(string: "10s")
- 设置提交指标到 Circonus 的时间间隔。circonus_submission_url
(string: "")
- 设置先前创建的 HTTPRAP 检查对象的check.config.submission_url
字段。circonus_check_id
(string: "")
- 设置来自先前创建的 HTTPTRAP 检查的检查 ID(不是 check bundle)。 Check API 对象中check._cid
字段的数字部分。circonus_check_force_metric_activation
(bool: false)
- 设置是否强制激活已经存在但当前未启用的指标。如果启用了检查管理,则默认行为是在遇到新指标时添加它们。如果检查中已经存在该指标,则它不会被激活。此参数的配置会覆盖该默认行为。circonus_check_instance_id
(string: "<hostname>:<application>")
- 设置一个唯一标识用以区分来自此实例的指标。它可用于短暂运行的实例在基础架构内移动时保持指标的连续性。默认情况下,该参数被设置为 hostname:application name(例如"host123:nomad")。circonus_check_search_tag
(string: <service>:<application>)
- 设置一个特殊标签,当它与实例 ID 结合使用时,可以帮助我们在拥有 Submission URL 或 Check ID 时缩小搜索结果的范围。默认情况下,该参数被设置为 service:app(例如"service:nomad")。circonus_check_display_name
(string: "")
- 设置检查在创建时的名称。该名称将被显示在 Circonus UI Check 列表中。circonus_check_tags
(string: "")
- 以逗号分隔的附加标签列表,以在创建检查时添加到检查中。circonus_broker_id
(string: "")
- 设置创建新 Check 时要使用的特定 Circonus Broker 的 ID。对应 Broker API 对象中broker._cid
字段的数字部分。如果启用了指标管理并且知晓了 Submission URL 或 Check ID,则将尝试使用 Instance ID 和 Search Tag 搜索现有 Check。如果没有找到,将创建一个新的 HTTPTRAP 检查。默认情况下,会使用随机选择的一个 Enterprise Broker,或者默认的 Circonus Public Broker。circonus_broker_select_tag
(string: "")
- 指定一个特殊标签,当没有提供 Broker ID 时,该标签将用于选择 Circonus Broker。最好的用法是根据此特定实例的运行位置(例如,特定的地理位置或数据中心,dc:sfo)作为参考决定应该使用哪个代理
dogstatsd
以下参数适用于 DogStatsD
:
dogstatsd_addr
(string: "")
- 该参数设置了 DogStatsD 实例的地址。 DogStatsD 是一种兼容 statsd 风格的协议,增加了用标签和事件信息装饰(decorate)指标的能力。如果设置该参数,Vault 将向该实例发送各种遥测信息以进行聚合。这可用于捕获运行时信息。dogstatsd_tags
(string array: [])
- 该参数设置了一个全局标签列表,这些标签将添加到发送到 DogStatsD 的所有遥测数据包中。它是一个字符串列表,其中每个字符串格式类似:"my_tag_name:my_tag_value"。
prometheus
下列 telemetry
参数适用于 prometheus:
prometheus_retention_time
(string: "24h")
- 设置 Prometheus 指标在内存中驻留的时间。将该参数设置为 0 将会关闭 Prometheus 遥测。disable_hostname
(bool: false)
- 我们推荐将该参数设置为true
来防止为指标数据添加主机名前缀。
/v1/sys/metrics
端点只能在主节点上被访问,在备用节点上会自动被禁用。我们可以通过启用未经身份验证的用户访问来开启备用节点上的 /v1/sys/metrics
端点。
Vault 并不使用默认的 Prometheus 路径,所以 Prometheus 必须按照以下路径进行配置。请注意在路径中无法使用 ?format=prometheus
因为 "?" 会被转义,所以必须以参数的方式进行设定。
使用的 Vault 令牌需要对 /v1/sys/metrics
路径有 capabilities = ["read", "list"]
的权限。必须将 Prometheus 的 bearer_token
或 bearer_token_file
参数添加到抓取作业中。
以下是一个 Prometheus 配置文件所需要的样例 job_name
配置节:
# prometheus.yml
scrape_configs:
- job_name: 'vault'
metrics_path: "/v1/sys/metrics"
params:
format: ['prometheus']
scheme: https
tls_config:
ca_file: your_ca_here.pem
bearer_token: "your_vault_token_here"
static_configs:
- targets: ['your_vault_server_here:8200']
Vault 的配置文件中需要添加以下样例遥测配置:
telemetry {
prometheus_retention_time = "30s"
disable_hostname = true
}