运维监控系列(3)-配置Prometheus监控自身及配置文件翻译说明

配置 Prometheus监控自身

Prometheus通过抓取指标 HTTP 端点从目标收集指标。由于 Prometheus 以与自身相同的方式公开数据,因此它还可以抓取和监控自身的健康状况。

我们只需要修改配置,添加监控目标,就可以了。

1. 修改配置

vimprometheus.yml,添加任务名为prometheus的监控抓取指标的任务。

scrape_configs:
  # The job name is added as a label job=`<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    # 配置目标主机地址
    - targets: ['192.168.12.245:9090']

控制台

重新启动,并打开控制台,进入target列表菜单。
 
查看目标状态,绿色说明,数据采集正常。
 

配置文件

Prometheus 通过命令行标志和配置文件进行配置。

要查看所有可用的命令行标志,请运行./prometheus -h。

使用配置文件时,要指定要加载的配置文件(- -config.file)。

配置文件以YAML格式编写,配置项值由下面描述的所定义。括号表示参数是可选的。对于非列表参数,该值设置为指定的默认值。

  • < boolean>: 一个布尔值,可以取值true或false
  • < duration>: 匹配正则表达式的持续时间((([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?|0),例如1d, 1h30m, 5m,10s
  • < filename>: 当前工作目录中的有效路径
  • < host>: 由主机名或 IP 后跟可选端口号组成的有效字符串
  • < int>: 一个整数值
  • < labelname>: 匹配正则表达式的字符串 [a-zA-Z_][a-zA-Z0-9_]*
  • < labelvalue>: 一串unicode字符
  • < path>: 一个有效的 URL 路径
  • < scheme>: 一个可以取值的字符串http或https
  • < secret>:作为秘密的常规字符串,例如密码
  • < string>: 普通字符串
  • < size>:以字节为单位的大小,例如512MB。需要一个单位。支持的单位:B、KB、MB、GB、TB、PB、EB。
  • < tmpl\_string>: 使用前模板扩展的字符串

global

全局配置指定在所有其他配置上下文中有效的参数。它们还用作其他配置部分的默认值。

global:
  # 默认情况抓取目标的频率,默认1分钟
  [ scrape_interval: <duration> | default = 1m ]
  # 抓取请求超时的时间,默认10S
  [ scrape_timeout: <duration> | default = 10s ]
  # 评估规则的频率,默认1分钟
  [ evaluation_interval: <duration> | default = 1m ]
  # 在与进行通信时要添加到任何时间序列或警报的标签
  # 外部系统(federation、远程、storage、Alertmanager)
  external_labels:
    [ <labelname>: <labelvalue> ... ]
  # PromQL查询记录到的文件。重新加载配置将重新打开该文件。
  [ query_log_file: <string> ]
# 规则文件指定全局的列表。从中读取规则和警报。
rule_files:
  [ - <filepath_glob> ... ]
# 抓取配置的列表
scrape_configs:
  [ - <scrape_config> ... ]
# 警报指定与Alertmanager相关的设置
alerting:
  alert_relabel_configs:
    [ - <relabel_config> ... ]
  alertmanagers:
    [ - <alertmanager_config> ... ]

# 与远程写入功能相关的设置
remote_write:
  [ - <remote_write> ... ]
# 与远程读取功能相关的设置。
remote_read:
  [ - <remote_read> ... ]

scrape_config

scrape_config节指定了一组描述如何抓取它们的目标和参数。在一般情况下,一个抓取配置指定单个作业。在高级配置中,这可能会改变。

目标可以通过static_configs参数静态配置或使用支持的服务发现机制之一动态发现。

此外,relabel_configs在抓取之前允许对任何目标及其标签进行高级修改。

# 默认情况下,分配给临时度量的作业名称。
job_name: <job_name>
# 从这项工作中抓取目标的频率。
[ scrape_interval: <duration> | default = <global_config.scrape_interval> ]
# 此作业时的每次抓取超时时间
[ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ]
# 要从目标获取度量的HTTP资源路径
[ metrics_path: <path> | default = /metrics ]
# honor_labels主要用于解决prometheus server的label与exporter端用户自定义label冲突的问题。
# 为“true”,则通过保留标签来解决标签冲突值,并忽略冲突的服务器端标签。
# 为“false”,则通过重命名解决标签冲突
[ honor_labels: <boolean> | default = false ]
# 如果honor_timestamps设置为“true”,则将显示度量的时间戳由目标将被使用。
# 为“false”,则会显示度量的时间戳,将忽略由目标创建的。
[ honor_timestamps: <boolean> | default = true ]
# 配置用于请求的协议方案。
[ scheme: <scheme> | default = http ]
# 可选的HTTP URL参数
params:
  [ <string>: [<string>, ...] ]
# 使用配置的用户名和密码,密码和密码文件是互斥的。
basic_auth:
  [ username: <string> ]
  [ password: <secret> ]
  [ password_file: <string> ]
# 使用设置每个刮取请求的“Authorization”标头为配置的凭据。
authorization:
  # 设置请求的请求头身份验证类型。
  [ type: <string> | default: Bearer ]
  # 设置请求的凭据。这是和credentials_file相互排斥的
  [ credentials: <secret> ]
  # 使用从中读取的凭据设置请求的凭据
  [ credentials_file: <filename> ]
# 可选的OAuth 2.0配置。不能与基本授权或授权同时使用。
oauth2:
  [ <oauth2> ]
# 配置抓取请求是否遵循HTTP 3xx重定向。
[ follow_redirects: <bool> | default = true ]
# 配置请求的TLS设置。
tls_config:
  [ <tls_config> ]
# 可选的代理URL
[ proxy_url: <string> ]
# 
azure_sd_configs:
  [ - <azure_sd_config> ... ]
# consul服务发现配置的列表。
consul_sd_configs:
  [ - <consul_sd_config> ... ]
# digitalocean服务发现配置的列表。
digitalocean_sd_configs:
  [ - <digitalocean_sd_config> ... ]
# docker服务发现配置的列表。
docker_sd_configs:
  [ - <docker_sd_config> ... ]
# dockerswarm服务发现配置的列表。
dockerswarm_sd_configs:
  [ - <dockerswarm_sd_config> ... ]
# dns 服务发现配置的列表。
dns_sd_configs:
  [ - <dns_sd_config> ... ]
# ec2 服务发现配置的列表。
ec2_sd_configs:
  [ - <ec2_sd_config> ... ]
# eureka 服务发现配置的列表。
eureka_sd_configs:
  [ - <eureka_sd_config> ... ]
# eureka 服务发现配置的列表。
file_sd_configs:
  [ - <file_sd_config> ... ]

# eureka 服务发现配置的列表。
gce_sd_configs:
  [ - <gce_sd_config> ... ]

# List of Hetzner service discovery configurations.
hetzner_sd_configs:
  [ - <hetzner_sd_config> ... ]

# List of HTTP service discovery configurations.
http_sd_configs:
  [ - <http_sd_config> ... ]

# List of Kubernetes service discovery configurations.
kubernetes_sd_configs:
  [ - <kubernetes_sd_config> ... ]

# List of Kuma service discovery configurations.
kuma_sd_configs:
  [ - <kuma_sd_config> ... ]
# 省略其他服务发现。。。。
# 此作业的标记静态配置目标列表。
static_configs:
  [ - <static_config> ... ]
# 目标重新标记配置的列表。
relabel_configs:
  [ - <relabel_config> ... ]
# 公制重新标记配置的列表。
metric_relabel_configs:
  [ - <relabel_config> ... ]
# 如果未压缩的响应正文大于这么多字节,则会导致,勉强失败。0表示没有限制。例如:100MB。
# 这是一个实验特性,这种行为可能在将来更改或删除。
[ body_size_limit: <size> | default = 0 ]
# 每个抓取限制将被接受的刮取样品数量。
#如果在公制重新标记后存在超过此数量的样本
#整个抓取将被视为失败。0表示没有限制。
[ sample_limit: <int> | default = 0 ]
# 每抓取一次可接受的标签数量限制。如果超过这个数量的标签在度量重新标记后出现。整个将被视为失败。0表示没有限制。
[ label_limit: <int> | default = 0 ]
# 样本可接受的标签名称长度的每抓取限制。如果标签名称长于此数字,则在重新标记度量后,整个将被视为失败。0表示没有限制。
[ label_name_length_limit: <int> | default = 0 ]
# 标签长度的每次抓取限制值,该值将被样本接受。
[ label_value_length_limit: <int> | default = 0 ]
# 每个抓取配置对将被删除的唯一目标数的限制接受。如果目标后存在的目标数量超过此数量
#重新标记后,普罗米修斯将在不清除目标的情况下将目标标记为失败。0表示没有限制。
[ target_limit: <int> | default = 0 

static_configs

static_config允许指定目标列表和为它们设置的公共标签。这是在抓取配置中指定静态目标的规范方式。

# 目标的主机地址
targets:
  [ - '<host>' ]
# 分配给从目标中抓取的所有度量的标签
labels:
  [ <labelname>: <labelvalue> ... ]

relabel_config

重新标记是一个强大的工具,可以在目标被抓取之前动态地重写目标的标签集。每个刮擦配置可以配置多个重新标记步骤。它们按照它们在配置文件中的出现顺序应用于每个目标的标签集。

metric_relabel_configs

指标重新标记适用于样本,作为摄取前的最后一步。它具有与目标重新标记相同的配置格式和操作。指标重新标记不适用于自动生成的时间序列,例如up.

一种用途是排除摄取成本太高的时间序列。

alert_relabel_configs

警报重新标记应用于警报,然后再发送到警报管理器。它具有与目标重新标记相同的配置格式和操作。在外部标签之后应用警报重新标签。

一个用途是确保具有不同外部标签的一对 HA Prometheus 服务器发送相同的警报。

alertmanager_config

alertmanager_config节指定 Prometheus 服务器向其发送警报的 Alertmanager 实例。它还提供参数来配置如何与这些警报管理器进行通信。

警报管理器可以通过static_configs参数静态配置或使用支持的服务发现机制之一动态发现。

此外,relabel_configs允许从发现的实体中选择 Alertmanagers,并对通过__alerts_path__标签公开的使用的 API 路径进行高级修改。

# 推送警报时每个目标Alertmanager超时时间
[ timeout: <duration> | default = 10s ]
# Alertmanager的api版本
[ api_version: <string> | default = v2 ]
# 被推送HTTP路径警报的前缀
[ path_prefix: <path> | default = / ]
# 配置用于请求的协议方案。
[ scheme: <scheme> | default = http ]
# 配置认证信息
basic_auth:
  [ username: <string> ]
  [ password: <secret> ]
  [ password_file: <string> ]
authorization:
  [ type: <string> | default: Bearer ]
  [ credentials: <secret> ]
  [ credentials_file: <filename> ]
oauth2:
  [ <oauth2> ]
tls_config:
  [ <tls_config> ]
[ proxy_url: <string> ]
[ follow_redirects: <bool> | default = true ]
# List of Azure service discovery configurations.
azure_sd_configs:
  [ - <azure_sd_config> ... ]
# 省略其他服务发现配置
# Alertmanagers的static_config集合
static_configs:
  [ - <static_config> ... ]
# Alertmanager  的relabel_configs配置集合
relabel_configs:
  [ - <relabel_config> ... ]

remote_write

write_relabel_configs在将样本发送到远程端点之前对样本进行重新标记。在外部标签之后应用写入重新标签。这可用于限制发送的样本。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: