配置 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在将样本发送到远程端点之前对样本进行重新标记。在外部标签之后应用写入重新标签。这可用于限制发送的样本。
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: