普罗米修斯配置文件

普罗米修斯配置文件

配置文件:

主文件语法:

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 节点对象的第一个现有地址,地址类型顺序为 NodeInternalIPNodeExternalIPNodeLegacyHostIPNodeHostName
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 :来自入口规范的路径。默认为 / 。
posted @ 2023-11-06 18:03  suyanhj  阅读(648)  评论(0)    收藏  举报