普罗米修斯配置文件
普罗米修斯配置文件
配置文件:
主文件语法:
global:
scrape_interval: 15s #每隔15s抓取一次数据,默认1m
scrape_timeout: 10s #抓取超时时间,默认10s
evaluation_interval: 15s #定期评估警报规则是否满足触发条件。如果满足,Prometheus会发送警报,默认1m
external_labels:
标签1: 值
query_log_file: 文件 #记录promql查询语句的日志文件
rule_files: #规则文件,如告警、查询
- "first_rules.yml"
- "second_rules.yml"
scrape_configs: #抓取数据配置,怎么抓
- job_name: "prometheus" #一个job可有多个目标,名称全局唯一
params: #可用于http请求url时的参数
format:
- 参数
scrape_interval: 默认用全局
scrape_timeout: 默认用全局
metrics_path: /metrics #抓取指标数据时的路径,默认/metrics,k8s可用/metrics/cadvisor
honor_labels: false #对抓到的冲突标签,怎么处理,默认false为将冲突标签重命名为exported_标签
honor_timestamps: true #对抓取到的时间戳怎么处理,默认true保留原样
basic_auth: #启用http认证时使用
username: <string>
password: <secret>
password_file: <string>
authorization: #可用于配置http请求头的Authorization字段,c
type: Bearer #认证类型,k8s默认Bearer
credentials: <secret>
credentials_file: <filename>
oauth2: #oauth2配置,不可与basic_auth、authorizationg
follow_redirects: true #默认true为自动跳转
enable_http2: true #默认true为启用http2
tls_config:
ca:
ca_file:
cert:
cert_file: <filename>
key: <secret>
key_file: <filename>
server_name:
insecure_skip_verify: true #跳过证书安全验证,使用自签证书时使用
min_version: TLS 1.2 #默认最小TLS 1.2协议
max_version: TLS 1.3 #默认最大TLS 1.3协议
proxy_url: 代理
no_proxy: str
proxy_from_environment: false #默认false为不从环境变量加载代理
proxy_connect_header: [] #代理连接时传递的头
static_configs: #静态定义
- targets:
- "localhost:9090" #访问http的/metrics的url即可。把自身当做一个target指标
labels: []
relabel_configs: [] #抓取的数据重新打标配置,详细看重新打标的内容
metric_relabel_configs: [] #指标重新打标
alert_relabel_configs: [] #警报重新标记在外部标签之后应用,确保具有不同外部标签的高可用普罗米修斯服务器发送相同的警报
alertmanager_config: []
############ 服务发现案例参考服务发现的内容 ############
#### 基于文件服务发现 ####
file_sd_configs: #基于文件服务发现
- files: #指定加载的文件列表
- targets/nodes*.yml #加载文件,支持通配符
refresh_interval: 2m #每隔多久加载一次,默认5m
#### consul服务发现 ####
consul_sd_configs:
- server: "2.2.2.43:8500" #consul主机
path_prefix: 前缀 #conusl位于api网关后面时,需要的uri前缀
token: 令牌
datacenter: 数据中心 #consul中的数据中心
scheme: http #默认http访问consul
username: 用户
password: 密码
refresh_interval: 2m
services: [] #指定抓取名称service,无则抓取所有
tags: #只抓取有这些标记的service
- "prometheus"
basic_auth:
username: <string>
password: <secret>
password_file: <string>
#### dns服务发现 ####
dns_sd_configs:
metrics_path: /metr
names:
- 域名
type: 类型 #默认SRV类型,支持 SRV, A, AAAA、MX
port: 53 #查询类型不是SRV时,指定dns服务器端口,如9090
refresh_interval: 30s
#### http服务发现 ####
http_sd_configs: #基于http协议的自定义服务发现,响应头Content-Type必须是 application/json,响应必须是json,json格式是:[{"targets": [ "<host>", ... ],"labels": {"<labelname>": "<labelvalue>", ...}},...]
url: str
refresh_interval: 60s
basic_auth:
username: <string>
password: <secret>
password_file: <string>
#### k8s服务发现 ####
kubernetes_sd_configs: #支持的发现目标:node、service
- role: node #服务发现的角色:endpoints, endpointslice, service, pod, node, ingress
api_server: http://127.0.0.1:6343
kubeconfig_file: 文件 #kubecconfig文件的可选路径。api_server和kube_config是互斥的
namespaces: #指定命名空间,无则是所有
own_namespace: false
names: []
selectors: #标签选择器
- role: <string>
label: <string>
field: <string>
bearer_token_file: token文件 #访问k8s的token,与authorization互斥
bearer_token: token
authorization: #请求头的认证配置
type: Bearer #设置认证类型,k8s默认Bearer
credentials: 凭据 #与credentials_file互斥
credentials_file: 文件 #容器中sa的token文件,创建pod时自动挂载到此处:/var/run/secrets/kubernetes.io/serviceaccount/to
attach_metadata: #附加的元标签,无则不加
node: false #将节点元数据附加到发现的目标。可用于角色:pod、endpoints、endpointslice。当设置为true时,普罗米修斯必须有获取节点的权限
tls_config:
ca_file: 文件 #容器中证书路径,创建pod时自动挂载到此处:/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
cert_file:
key_file:
insecure_skip_verify: true
#### zk服务发现 ####
serverset_sd_config: []
alerting: #告警规则
alertmanagers
- static_configs:
- targets:
# - alertmanager:9093
remote_write: [] #远程写相关配置
tracing:
rules子文件语法:
groups: #多个规则,列表形式
- name: 规则名
interval: 时间 #多久探测一次
limit: 报警记录次数
rules:
- record: 记录规则名 #记录规则的名称,用于保存PromQL表达式的结果,以便后续查询
expr: PromQL语句 或 |2 #计算指标值,|2模式为允许换行写
- alert: 警报规则名
expr: PromQL语句
for: 报警持续时间 #语句的结果需要持续满足一定条件多久后,才会触发警报
keep_firing_for: 时间 #在触发警报的情况发生后,警报会持续发出多长时间
annotations: #给警报添加详细的描述信息,允许使用模板配置,$labels 变量保存警报实例的标签键/值对。可以通过 $externalLabels 变量访问配置的外部标签。 $value 变量保存警报实例的评估值
注解1: 值
t: "Instance {{ $labels.instance }} down"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down,current value: {{ $value }}"
labels: #常用与添加严重级别标签,运行使用模板配置
标签1: 值
基于文件服务发现子文件语法:
语法1:
- targets:
- ip:端口
labels:
标签1: 值
语法2:
{
{
"targets": [
"ip:端口"
],
"labels": [
"标签": 值
]
}
}
服务发现时的元标签
consul:
__meta_consul_address :目标的地址
__meta_consul_dc :目标的数据中心名称
__meta_consul_health :服务的运行状况
__meta_consul_partition :注册服务的管理分区名称
__meta_consul_metadata_<key> :目标的每个节点元数据键值
__meta_consul_node :为目标定义的节点名称
__meta_consul_service_address :目标的服务地址,在某些领事设置中,相关地址位于此,而非__meta_consul_address
__meta_consul_service_id :目标的服务 ID
__meta_consul_service_metadata_<key> :目标的每个服务元数据键值
__meta_consul_service_port :目标的服务端口
__meta_consul_service :目标所属服务的名称
__meta_consul_tagged_address_<key> :每个节点标记目标的地址键值
__meta_consul_tags :由标记分隔符连接的目标标记列表
dns:
__meta_dns_name :生成发现目标的记录名称。
__meta_dns_srv_record_target :SRV 记录的目标字段
__meta_dns_srv_record_port :SRV 记录的端口字段
__meta_dns_mx_record_target :MX 记录的目标字段
http:
__meta_url #提取目标的URL
k8s:
地址默认为 Kubelet 的 HTTP 端口。目标地址默认为 Kubernetes 节点对象的第一个现有地址,地址类型顺序为 NodeInternalIP 、 NodeExternalIP 、 NodeLegacyHostIP 和 NodeHostName
instance 标签将设置为从 API 服务器检索的节点名称
#node类型
__meta_kubernetes_node_name :节点对象的名称。
__meta_kubernetes_node_provider_id :节点对象的云提供程序的名称。
__meta_kubernetes_node_label_<labelname> :节点对象中的每个标签。
__meta_kubernetes_node_labelpresent_<labelname> : true 表示节点对象中的每个标签。
__meta_kubernetes_node_annotation_<annotationname> :来自节点对象的每个注释。
__meta_kubernetes_node_annotationpresent_<annotationname> : true 表示节点对象中的每个注释。
__meta_kubernetes_node_address_<address_type> :每个节点地址类型的第一个地址(如果存在)
#service类型
__meta_kubernetes_namespace :服务对象的命名空间。
__meta_kubernetes_service_annotation_<annotationname> :来自服务对象的每个注释。
__meta_kubernetes_service_annotationpresent_<annotationname> : 服务对象的每个注释都为 “true”。
__meta_kubernetes_service_cluster_ip :服务的群集 IP 地址。(不适用于外部名称类型的服务)
__meta_kubernetes_service_loadbalancer_ip :负载均衡器的 IP 地址。(适用于负载均衡器类型的服务)
__meta_kubernetes_service_external_name :服务的 DNS 名称。(适用于外部名称类型的服务)
__meta_kubernetes_service_label_<labelname> :服务对象中的每个标签。
__meta_kubernetes_service_labelpresent_<labelname> : true 表示服务对象的每个标签。
__meta_kubernetes_service_name :服务对象的名称。
__meta_kubernetes_service_port_name :目标的服务端口的名称。
__meta_kubernetes_service_port_number :目标的服务端口号。
__meta_kubernetes_service_port_protocol :目标的服务端口协议。
__meta_kubernetes_service_type :服务的类型。
#pod类型
__meta_kubernetes_namespace :Pod 对象的命名空间。
__meta_kubernetes_pod_name :pod 对象的名称。
__meta_kubernetes_pod_ip :pod 对象的 pod IP。
__meta_kubernetes_pod_label_<labelname> :来自 pod 对象的每个标签。
__meta_kubernetes_pod_labelpresent_<labelname> : true 表示 Pod 对象中的每个标签。
__meta_kubernetes_pod_annotation_<annotationname> :来自 pod 对象的每个注释。
__meta_kubernetes_pod_annotationpresent_<annotationname> : true 表示 pod 对象中的每个注释。
__meta_kubernetes_pod_container_init : true 如果容器是 InitContainer
__meta_kubernetes_pod_container_name :目标地址指向的容器的名称。
__meta_kubernetes_pod_container_id :目标地址指向的容器的 ID。ID 的格式为 <type>://<container_id> 。
__meta_kubernetes_pod_container_image :容器正在使用的图像。
__meta_kubernetes_pod_container_port_name :容器端口的名称。
__meta_kubernetes_pod_container_port_number :集装箱端口的编号。
__meta_kubernetes_pod_container_port_protocol :容器端口的协议。
__meta_kubernetes_pod_ready :设置为 true 或 false 表示容器的就绪状态。
__meta_kubernetes_pod_phase : 在生命周期中设置为 Pending 、 Running 、 Succeeded 、 Failed 或 Unknown
__meta_kubernetes_pod_node_name :Pod 调度到的节点的名称。
__meta_kubernetes_pod_host_ip :Pod 对象的当前主机 IP。
__meta_kubernetes_pod_uid :pod 对象的 UID。
__meta_kubernetes_pod_controller_kind :Pod 控制器的对象类型。
__meta_kubernetes_pod_controller_name :容器控制器的名称
#endpoints
__meta_kubernetes_namespace :终结点对象的命名空间。
__meta_kubernetes_endpoints_name :终结点对象的名称。
__meta_kubernetes_endpoints_label_<labelname> :终结点对象中的每个标签。
__meta_kubernetes_endpoints_labelpresent_<labelname> : true 表示终结点对象中的每个标签。
__meta_kubernetes_endpoints_annotation_<annotationname> :来自终结点对象的每个注释。
__meta_kubernetes_endpoints_annotationpresent_<annotationname> : true 表示终结点对象中的每个注释。
#endpointslice
__meta_kubernetes_namespace :终结点对象的命名空间。
__meta_kubernetes_endpointslice_name :端点切片对象的名称。
__meta_kubernetes_endpointslice_label_<labelname> :端点切片对象中的每个标签。
__meta_kubernetes_endpointslice_labelpresent_<labelname> : true 表示端点切片对象中的每个标签。
__meta_kubernetes_endpointslice_annotation_<annotationname> :来自端点切片对象的每个注释。
__meta_kubernetes_endpointslice_annotationpresent_<annotationname> : true 表示端点切片对象中的每个注释。
#ingress
__meta_kubernetes_namespace :入口对象的命名空间。
__meta_kubernetes_ingress_name :入口对象的名称。
__meta_kubernetes_ingress_label_<labelname> :入口对象的每个标签。
__meta_kubernetes_ingress_labelpresent_<labelname> : true 表示入口对象中的每个标签。
__meta_kubernetes_ingress_annotation_<annotationname> :来自入口对象的每个注释。
__meta_kubernetes_ingress_annotationpresent_<annotationname> : true 表示入口对象的每个注释。
__meta_kubernetes_ingress_class_name :入口规范中的类名(如果存在)。
__meta_kubernetes_ingress_scheme :入口的协议方案, https 如果设置了 TLS 配置。默认为 http 。
__meta_kubernetes_ingress_path :来自入口规范的路径。默认为 / 。

浙公网安备 33010602011771号