翻看官网一边学习,一边记录告警部分没有写,后面继续学习后再完善
############################################################################
global:
# How frequently to scrape targets by default. 默认情况下抓取目标的频率。
[ scrape_interval: <duration> | default = 1m ]
# How long until a scrape request times out.抓取请求超时的时间。
[ scrape_timeout: <duration> | default = 10s ]
# How frequently to evaluate rules.评估规则的频率。
[ evaluation_interval: <duration> | default = 1m ]
# The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager).
#与外部系统(联合、远程存储、警报管理器)通信时添加到任何时间序列或警报的标签。
external_labels:
[ <labelname>: <labelvalue> ... ]
# File to which PromQL queries are logged. PromQL 查询记录到的文件。
# Reloading the configuration will reopen the file.重新加载配置将重新打开文件。
[ query_log_file: <string> ]
# Rule files specifies a list of globs. Rules and alerts are read from all matching files.存放告警规则的地方,
rule_files:
[ - <filepath_glob> ... ]
# A list of scrape configurations. 抓取的作业以及目标,job1 、 job2、job3等。
scrape_configs:
[ - <scrape_config> ... ]
# Alerting specifies settings related to the Alertmanager.警报指定与警报管理器相关的设置。
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
alertmanagers:
[ - <alertmanager_config> ... ]
# Settings related to the remote write feature.与远程写入相关配置。
remote_write:
[ - <remote_write> ... ]
# Settings related to the remote read feature.与远程读取相关配置。
remote_read:
[ - <remote_read> ... ]
总结:基本配置就如上面介绍那样,日常使用,如新增刮擦任务,scrape_configs下需要配置各类机器的相关yml文件,不同的报警规则就是看rule_files,存放不同告警规则的地方,比如后端要接入click house需要调用remote_write与remote_read。
下面详细说一些技巧参数
############################################################################
scrape_config部分指定一组目标和参数,描述如何刮除它们。在一般情况下,一个刮擦配置指定一个作业。在高级配置中,这种情况可能会改变。目标可以通过static_configs参数静态配置,也可以使用支持的服务发现机制之一动态发现。此外,relabel_configs允许在刮取之前对任何目标及其标签进行高级修改。
举例:
静态配置
- job_name: 'prometheus' static_configs: - targets: ['xxx.xxx.x.xx:9090']
配置文件发现
第一段代码是放在prometheus.yml的scrape_config内,第二段代码是保存在/opt/prometheus/monitor_config/目录下,名称可以写被监控的机器ip文件为yml文件,如10.172.12.12.yml
- job_name: 'zx_host' file_sd_configs: - files: ['/opt/prometheus/monitor_config/*.yml'] refresh_interval: 5s
- targets: [ "xx.xx.xx.xx:9100" ] labels: group: "host" kind: "jkj"
# 默认分配给抓取指标的作业名称。
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 如何处理已存在于抓取数据中的标签与 Prometheus 将在服务器端附加的标签(“作业”和“实例”标签、手动配置的目标标签以及由服务发现实现生成的标签)之间的冲突。
# 如果honor_labels 设置为“true”,标签冲突通过从抓取的数据中保留标签值并忽略冲突的服务器端标签来解决。
# 如果 Honor_labels 设置为“false”,则通过将抓取数据中的冲突标签重命名为“exported_<original-label>”来解决标签冲突(对于
# 示例 "exported_instance", "exported_job") 然后附加服务器端标签。
# 将 Honor_labels 设置为“true”对于联邦和抓取 Pushgateway 等用例很有用,其中应保留目标中指定的所有标签。
# 请注意,任何全局配置的“external_labels”都不受此设置的影响。在与外部系统通信时,它们总是仅在时间序列还没有给定标签时才应用,否则会被忽略。
[ honor_labels: <boolean> | default = false ]
# Honor_timestamps 控制 Prometheus 是否尊重抓取数据中存在的时间戳。
# 如果 Honor_timestamps 设置为“true”,则将使用目标公开的指标的时间戳。
# 如果honour_timestamps 设置为“false”,则目标公开的指标的时间戳将被忽略。
[ honor_timestamps: <boolean> | default = true ]
# 配置请求使用的协议方案。
[ scheme: <scheme> | default = http ]
# Optional HTTP URL parameters.
params:
[ <string>: [<string>, ...] ]
# 使用配置的用户名和密码在每个抓取请求上设置 `Authorization` 标头。
# password 和 password_file 是互斥的。
basic_auth:
[ username: <string> ]
[ password: <secret> ]
[ password_file: <string> ]
# 配置抓取请求是否遵循 HTTP 3xx 重定向。
[ follow_redirects: <bool> |默认=真]
# 配置抓取请求的 TLS 设置。
tls_config:
[ <tls_config> ]
# 可选的代理 URL。
[ proxy_url: <字符串> ]
# Azure 服务发现配置列表。
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> ... ]
# Docker Swarm 服务发现配置列表。
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> ... ]
# 文件服务发现配置列表。
file_sd_configs:
[ - <file_sd_config> ... ]
这里着重记录下因为用的较多比较熟悉
基于文件的服务发现提供了一种更通用的静态目标配置方式,并作为插入自定义服务发现机制的接口。
它读取一组包含零个或多个<static_config>列表的文件。所有定义文件的更改都通过磁盘监视来检测,并立即应用。文件可以以YAML或JSON格式提供。只应用导致目标群体形成良好的变化。
文件必须包含静态配置列表,使用以下格式:
JSON json
[ { "targets": [ "<host>", ... ], "labels": { "<labelname>": "<labelvalue>", ... } }, ... ]
YAML yaml
- targets: [ - '<host>' ] labels: [ <labelname>: <labelvalue> ... ]
作为回退,文件内容也在指定的刷新间隔内定期重读。
在重新标记阶段,每个目标都有一个元标签__meta_filepath。其值设置为从中提取目标的文件路径。
有一份与此发现机制集成的列表。
# Patterns for files from which target groups are extracted.
files:
[ - <filename_pattern> ... ]
# Refresh interval to re-read the files.
[ refresh_interval: <duration> | default = 5m ]
其中<filename_pattern>可能是以.json、.yml或.yaml结尾的文件路径。最后一个路径段可能包含一个与任何字符序列匹配的单个*,例如my/path/tg_*.json。
# GCE 服务发现配置列表。
gce_sd_configs:
[ - <gce_sd_config> ... ]
# Hetzner 服务发现配置列表。
hetzner_sd_configs:
[ - <hetzner_sd_config> ... ]
# HTTP 服务发现配置列表。
http_sd_configs:
[ - <http_sd_config> ... ]
# Kubernetes 服务发现配置列表。
kubernetes_sd_configs:
[ - <kubernetes_sd_config> ... ]
# Lightsail 服务发现配置列表。
lightsail_sd_configs:
[ - <lightsail_sd_config> ... ]
# Linode 服务发现配置列表。
linode_sd_configs:
[ - <linode_sd_config> ... ]
# Marathon 服务发现配置列表。
marathon_sd_configs:
[ - <marathon_sd_config> ... ]
# AirBnB 的 Nerve 服务发现配置列表。
Neuro_sd_configs:
[ - <nerve_sd_config>
# OpenStack 服务发现配置列表。
openstack_sd_configs:
[ - <openstack_sd_config> ... ]
# Scaleway 服务发现配置列表。
scaleway_sd_configs:
[ - <scaleway_sd_config> ... ]
# Zookeeper Serverset 服务发现配置列表。
serverset_sd_configs:
[ - <serverset_sd_config> ... ]
# Triton 服务发现配置列表。
triton_sd_configs:
[ - <triton_sd_config> ... ]
# 此作业的标记静态配置目标列表。
静态配置:
[ - <static_config> ... ]
# 目标重新标记配置列表。
relabel_configs:
[ - <relabel_config> ... ]
# metric relabel 配置列表。
metric_relabel_configs:
[ - <relabel_config> ... ]
# 大于这么多字节的未压缩响应体将导致抓取失败。 0 表示没有限制。示例:100MB。这是一项实验性功能,此行为将来可能会更改或删除。
[ body_size_limit: <size> | default = 0 ]
# 每次抓取对将被接受的抓取样本数量的限制。如果在度量重新标记后存在超过此数量的样本,则整个刮擦将被视为失败。 0 表示没有限制。
[ sample_limit: <int> | default = 0 ]
# 每次抓取对样本可接受的标签数量的限制。如果超过这个数量的标签存在后度量重新标记,整个抓取将被视为失败。 0 表示没有限制。
[ label_limit: <int> |默认值 = 0]
# 每次抓取对样本可接受的标签名称长度的限制。如果标签名称长于此数字,则在度量重新标记后,整个刮将被视为失败。 0 表示没有限制。
[ label_name_length_limit: <int> |默认值 = 0]
# 每次抓取对样本可接受的标签值长度的限制。如果一个标签值长于这个数字后度量重新标记,整个抓取将被视为失败。 0 表示没有限制。
[ label_value_length_limit: <int> |默认值 = 0]
# Per-scrape 配置限制唯一目标的数量接受。如果在目标之后存在超过此数量的目标重新标记,Prometheus 会将目标标记为失败而不抓取它们。 0 表示没有限制。这是一个实验性功能,这种行为可能未来改变。
[ target_limit: <int> | default = 0 ]
总结:在刮擦作业这里由于生产环境的需求功能不同,日常我使用的比较多的还是静态与文件,就如上面举例那样,直接通过更改/opt/prometheus/monitor_config/内的文件来改变刮擦job。其他详细的使用方法可参考官网。https://prometheus.io/docs/
############################################################################
############################################################################
############################################################################
write_relabel_configs在将样本发送到远程端点之前,正在重新标记应用于它们。写重标签应用于外部标签之后。这可以用来限制发送哪些样品。
# 将样本发送到的端点的 URL。
url: <string>
# 对远程写入端点的请求超时。
[ remote_timeout: <duration> | default = 30s ]
# 要与每个远程写入请求一起发送的自定义 HTTP 标头。
# 请注意,无法覆盖 Prometheus 本身设置的标头。
headers:
[ <string>: <string> ... ]
# 远程写relabel配置列表。
write_relabel_configs:
[ - <relabel_config> ... ]
# 远程写入配置的名称,如果指定,则在远程写入配置中必须是唯一的。
# 该名称将用于指标和日志记录中代替生成的值,以帮助用户区分
# 远程写入配置。
[ name: <string> ]
# 启用通过远程写入发送示例。请注意,必须首先启用示例存储本身才能抓取示例。
[ send_exemplars: <boolean> | default = false ]
# 在每个远程写入请求上设置 `Authorization` 标头
# 配置的用户名和密码。
# password 和 password_file 是互斥的。
basic_auth:
[ username: <string> ]
[ password: <secret> ]
[ password_file: <string> ]
# 可选的 `Authorization` 头配置。
authorization:
# 设置认证类型。
[ type: <string> | default: Bearer ]
# 设置凭据。它与互斥
# `credentials_file`。
[ credentials: <secret> ]
# 将凭据设置为从配置文件读取的凭据。
# 它与 `credentials` 互斥。
[ credentials_file: <filename> ]
# 可选地将 AWS 的签名验证 4 签名过程配置为
# 签署请求。不能与 basic_auth、authorization 或 oauth2 同时设置。
# 要使用 AWS 开发工具包中的默认凭证,请使用 `sigv4: {}`。
SIGV4:
# AWS 区域。如果为空,则来自默认凭据链的区域
# 用来。
[ region: <string> ]
# AWS API 密钥。如果为空,环境变量`AWS_ACCESS_KEY_ID`
# 和 `AWS_SECRET_ACCESS_KEY` 被使用。
[ access_key: <string> ]
[ secret_key: <secret> ]
# 用于身份验证的命名 AWS 配置文件。
[ profile: <string> ]
# AWS 角色 ARN,替代使用 AWS API 密钥。
[ role_arn: <string> ]
# 可选的 OAuth 2.0 配置。
# 不能与basic_auth、authorization、sigv4同时使用。
oauth2:
[ <oauth2> ]
# 配置远程写入请求的 TLS 设置。
tls_config:
[ <tls_config> ]
# 可选的代理 URL。
[ proxy_url: <string> ]
# 配置HTTP请求是否遵循HTTP 3xx重定向。
[ follow_redirects: <bool> |default = true]
# 配置用于写入远程存储的队列。
队列配置:
# 在我们阻止读取更多之前每个分片缓冲的样本数
# 来自 WAL 的样本。建议每个容量都足够
# 分片缓冲多个请求以在处理时保持吞吐量
# 偶尔缓慢的远程请求。
[ capacity: <int> | default = 2500 ]
# 最大分片数,即并发量。
[ max_shards: <int> |default = 200]
# 最小分片数,即并发量。
[ min_shards: <int> |default = 1]
# 每次发送的最大样本数。
[ max_samples_per_send: <int> |default = 500]
# 样本在缓冲区中等待的最长时间。
[batch_send_deadline: <duration>|default = 5s ]
# 初始重试延迟。每次重试都会加倍。
[ min_backoff: <duration> | default = 30ms ]
# 最大重试延迟。
[ max_backoff: <duration> | default = 100ms ]
# 从远程写入存储接收到 429 状态代码后重试。
# 这是实验性的,将来可能会改变。
[ retry_on_http_429: <boolean> | default = false ]
# 配置将系列元数据发送到远程存储。
# 元数据配置随时可能更改
# 或在以后的版本中删除。
元数据配置:
# 是否将度量元数据发送到远程存储。
[ send: <boolean> | default = true ]
# 度量元数据发送到远程存储的频率。
[ send_interval: <duration> | default = 1m ]
# 要查询的端点的 URL。
url: <string>
# 远程读取配置的名称,如果指定,则在远程读取配置中必须是唯一的。
# 该名称将用于指标和日志记录以代替生成的值,以帮助用户区分远程读取配置。
[ name: <string> ]
# 一个可选的相等匹配器列表,必须是
# 存在于选择器中以查询远程读取端点。
required_matchers:
[ <labelname>: <labelvalue> ... ]
# 对远程读取端点的请求超时。
[ remote_timeout: <duration> | default = 1m ]
# 要与每个远程读取请求一起发送的自定义 HTTP 标头。
# 请注意,无法覆盖 Prometheus 本身设置的标头。
headers:
[ <string>: <string> ... ]
# 是否应该为查询的时间范围进行读取
# 本地存储应该有完整的数据。
[ read_recent: <boolean> | default = false ]
# 在每个远程读取请求上设置 `Authorization` 标头
# 配置的用户名和密码。
# password 和 password_file 是互斥的。
basic_auth:
[ username: <string> ]
[ password: <secret> ]
[ password_file: <string> ]
# 可选的 `Authorization` 头配置。
授权:
# 设置认证类型。
[ type: <string> | default: Bearer ]
# 设置凭据。它与互斥
# `credentials_file`。
[ credentials: <secret> ]
# 将凭据设置为从配置文件读取的凭据。
# 它与 `credentials` 互斥。
[ credentials_file: <filename> ]
# 可选的 OAuth 2.0 配置。
# 不能与basic_auth或authorization同时使用。
oauth2:
[ <oauth2> ]
# 配置远程读取请求的 TLS 设置。
tls_config:
[ <tls_config> ]
# 可选的代理 URL。
[ proxy_url: <string> ]
# 配置HTTP请求是否遵循HTTP 3xx重定向。
[ follow_redirects: <bool> | default = false]
总结:Prometheus 的远程写入和远程读取功能允许透明地发送和接收样本。 这主要用于长期存储。 在官网有一个详细的解释说明,如果后端接存储可以看下官网,https://prometheus.io/docs/operating/integrations/#remote-endpoints-and-storage
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。