首页 > 其他分享 >56、K8S-监控机制-Prometheus-配置解析、标签管理

56、K8S-监控机制-Prometheus-配置解析、标签管理

时间:2023-04-10 15:46:40浏览次数:50  
标签:__ 标签 56 relabel prometheus Prometheus configs K8S config

Kubernetes学习目录

1、配置文件

1.1、配置简介

1.1.1、简介

Prometheus可以通过命令行或者配置文件的方式对服务进行配置。 一般情况下,命令行方式一般用于不可变的系统参数配置,例如存储位置、要保留在磁盘和内存中的数据量等;
配置文件用于定义与数据动态获取相关的配置选项和文件等内容。
1、命令行方式的配置属性可以通过 prometheus -h 的方式来获取,这些配置属性主要在服务启动时候设置. 2、配置文件方式,我们需要在 /data/server/prometheus/cfg/prometheus.yml 文件中修改配置属性,该配置文件的内容是以YAML格式编写的。

1.2、prometheus配置文件组成

1.2.1、配置文件

prometheus-server ~]# egrep -v '^#|  #|^$' /data/server/prometheus/etc/prometheus.yml 
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
    - targets: ['192.168.10.29:9100','192.168.10.30:9100']

1.2.2、配置解析

核心配置:
global        全局配置内容
alerting       触发告警相关的配置,主要是与Alertmanager相关的设置。
rule_files     各种各样的外置规则文件配置,包含了各种数据查询表达式、告警表达式、等
scrape_configs 监控项的配置列表,这是最核心的配置
除了默认的四项配置之外,prometheus还有另外可选的其它配置,效果如下 扩展配置(8项) tls_config、static_config、relabel_config、metric_relabel_configs、 alert_relabel_configs、alertmanager_config、remote_write、remote_read
平台集成配置(12项) azure_sd_config、consul_sd_config、dns_sd_config、ec2_sd_config、 openstack_sd_config、file_sd_config、gce_sd_config、kubernetes_sd_config、 marathon_sd_config、nerve_sd_config、serverset_sd_config、triton_sd_config

1.2.3、scrape_configs解析

   对于scrape_configs来说,这是我们操作最多的一个配置段,它指定了一组监控目标及其细节配置参
数,这些目标和参数描述了如何获取指定主机上的时序数据。

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
    - targets: ['192.168.10.29:9100','192.168.10.30:9100']

结构解析:
   在一般情况下,一个scrape_configs配置需要指定一个或者多个job,根据我们之前对基本概念的了解,每一个job都是
一系列的instance集合,借助job我们可以将目标主机进行分组管理。
对于job内部的每一个instance的配置,都需要借助于static_configs参数获取目标列表,只要在该列表位置的目标,
都可以被Prometheus动态服务自动发现。 static_configs的配置格式如下: scrape_configs: - job_name: 'prometheus' static_configs: - targets: [ '<host_ip:host_port>', ... ] - labels: [ <labelname>: <labelvalue> ... ] 属性解析: 我们可以借助于 targets 以ip+port 方式发现目标,也可以使用labels以标签方式发现目标。

2、标签管理

2.1、标签简介

我们知道Prometheus对数据的处理流程是:先从各目标节点上获取数据,然后对数据进行本地化处理,然后进行各种数据分析。
这个流程中最核心的就是监控数据的本地化处理,在prometheus的配置选项中,有两个与监控指标密切相关的配置,relabel_config、metric_relabel_configs,他们的作用就是监控目标 上面的监控项进行标签管理和设置,便于在prometheus上设置更灵活的时序数据。

2.2、标签类型

2.2.1、私有标签

私有标签以"__*"样式存在,用于获取监控目标的默认元数据属性,比如__address__用于获取目标的地址,__scheme__用户获取目标的请求协议方法,__metrics_path__获取请求的url地址等

2.2.2、普通标签

对个监控主机节点上的监控指标进行各种灵活的管理操作,常见的操作有,删除不必要的敏感指标,添加、编辑或者修改指标的标签值或者标签格式。

 

2.3、全局性标签配置

global:
...
  external_labels:
    [ <labelname>: <labelvalue> ... ]
...

2.4、relabel_config、metric_relabel_configs配置 

2.4.1、配置语法

scrape_configs:
- job_name: 'prometheus'
  metric_relabel_configs:
  - source_labels: [<labelname> [, ...]]
    regex: '<regex> | default = (.*)'
    replacement: '<string> | default = $1'
    target_label: '<labelname>'
    action: '<relabel_action> | default = replace'

2.4.2、属性解析

属性解析:
source_labels 用于对正则匹配成功的监控项进行标签管理
target_label  在进行标签替换的时候,可以将原来的source_labels替换为我们定制的
label
replacement 替换标签的时候,设定label的值 
regex       通过正则表达式来匹配我们想要获取到的数据
action      对标签进行管理,常见的动作有replace|keep|drop|labelmap|labeldrop等

2.4.3、动作解析

动作解析:
replace:默认,通过regex匹配source_label的值,使用replacement来进行替换
keep:从获取的监控数据中删除regex与连接不匹配的目标 source_labels
drop:从获取的监控数据中删除regex与连接匹配的目标 source_labels
labeldrop:删除regex匹配的标签
labelkeep:删除regex不匹配的标签
labelmap:将regex对所有的标签名进行匹配判定,而后将匹配到的标签的值赋给replacement字段指定的标签名之上;通常用于取出匹配的标签名的一部分生成新标签;

2.4.4、删除示例

metric_relabel_configs:
- source_labels: [__name__]
  regex: 'node_network_receive.*'
  action: drop

2.4.5、替换示例

metric_relabel_configs:
- source_labels: [id]
  regex: '/.*'
  replacement: '4321'
  target_label: replace_id

2.5、relabel_config与metric_relabel_configs区别

2.5.1、执行顺序

relabel_configs用与发现目标前的标签设置,也就是说在scrape_configs前生效,针对的target对象
metric_relabel_configs 作用于scrape_configs生效后,即针对target对象上的监控数据

2.5.2、数据处理

metric_relabel_configs 是 prometheus 在保存数据前的最后一步标签重新编辑,默认情况下,它将监控不需要的数据,直接丢掉,不在prometheus 中保存

2.6、实践-根据默认属性定制新标签

2.6.1、配置prometheus.yml

prometheus-server ~]# egrep -v '^#|^$| #' /data/server/prometheus/etc/prometheus.yml 
global:
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
    - targets: ['192.168.10.29:9100','192.168.10.30:9100']
# 增加如下配置 relabel_configs: - source_labels: - __scheme__ - __address__ - __metrics_path__ regex: "(http|https)(.*)" separator: "" target_label: "endpoint" replacement: "${1}://${2}" action: replace

2.6.2、配置解析

    relabel_configs:
    - source_labels:
      - __scheme__
      - __address__
      - __metrics_path__
      regex: "(http|https)(.*)"
      separator: ""
      target_label: "endpoint"
      replacement: "${1}://${2}"
      action: replace

解析:
source_labels # 现有数据的标签,出现多个的时候,由separator指定分割符
regex         # __scheme__+__address__+__metrics_path__ 拼接成字符串,使用这个正式表达则分组匹配
separator     # 标签之间的分割符
target_label  # 产生新的标签名字
replacement   # 分成两组后,替换该表达式
action        # 动作

2.6.3、语法检查

prometheus-server ~]# promtool check config /data/server/prometheus/etc/prometheus.yml 
Checking /data/server/prometheus/etc/prometheus.yml
 SUCCESS: /data/server/prometheus/etc/prometheus.yml is valid prometheus config file syntax

2.6.4、重启prometheus服务

systemctl restart prometheus

2.6.5、web页面查询结果

2.7、实践-基于已存在的标签匹配,然后进行删除

2.7.1、配置prometheus.yml

prometheus-server ~]# egrep -v "^#|^$| #" /data/server/prometheus/etc/prometheus.yml 
global:
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
    - targets: ['192.168.10.29:9100','192.168.10.30:9100']
    relabel_configs:
    - regex: "(job|app)"
      replacement: ${1}_name
      action: labelmap
    - regex: "(job|app)"
      action: labeldrop

2.7.2、配置解析

    relabel_configs:
    - regex: "(job|app)"
      replacement: ${1}_name
      action: labelmap
    - regex: "(job|app)"
      action: labeldrop

# 备份标签
labelmap

# 删除标签
labeldrop

2.7.3、语法检查

prometheus-server ~]# promtool check config /data/server/prometheus/etc/prometheus.yml 
Checking /data/server/prometheus/etc/prometheus.yml
 SUCCESS: /data/server/prometheus/etc/prometheus.yml is valid prometheus config file syntax

2.7.4、重启prometheus服务

systemctl restart prometheus

2.7.5、web页面查询结果

 

标签:__,标签,56,relabel,prometheus,Prometheus,configs,K8S,config
From: https://www.cnblogs.com/ygbh/p/17301235.html

相关文章

  • cf-div2-856c
    题目链接:https://codeforces.com/contest/1816/problem/C我是傻逼,否了自己的第一直觉。。。思路:构造方法:以最后一个值的数值\(x\)为基准,把所有的的数字(除第一个)调整为\(x\)。以n的奇偶性分为两种情况。当n为奇数时:\(第一个数字y小于等于x,构造成功。否则就除了第一个数字外......
  • k8s 会把自己的ca.pem 注入到 /var/run/secrets/kubernetes.io/serviceaccount/ 目录
     k8s会把自己的ca.pem注入到/var/run/secrets/kubernetes.io/serviceaccount/目录下 生成三个文件lrwxrwxrwx1rootroot13Dec1201:56ca.crt->..data/ca.crtlrwxrwxrwx1rootroot16Dec1201:56namespace->..data/namespacelrwxrwxrwx1rootroot12D......
  • k8s
    title:FIT5225ASS1K8S简介K8S是负责自动化运维管理多个Docker程序的集群传统的后端部署方式当请求量上来,已部署的服务会响应不过来。传统的做法往往是,如果请求量、内存、CPU超过阈值做了告警,运维马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力。K8S自......
  • 基于k8s的web集群项目
     准备5台linux机器   系统是centos7.9 2核/4G的配置1.k8s的部署安装1.1.准备环境:先给每台服务器起好名字,使用固定的ip地址,防止后面因为ip地址的变化,导致整个集群异常(每台机器)master192.168.18.139node1192.168.18.138node2192.168.18.137......
  • 54、K8S-监控机制-Prometheus-node_exporter部署
    Kubernetes学习目录1、node_exporter部署1.1、安装主机说明这里分别安装到node1和node2节点上。1.2、软件安装1.2.1、解压软件mkdir/data/{softs,server}-ptarxvfnode_exporter-1.5.0.linux-amd64.tar.gz-C/data/server/1.2.2、程序位置重新调整ln-s/data/s......
  • K8S架构原理详解
    Kubernetes是什么,为什么上手这么难? Kubernetes是一个基于容器技术的分布式集群管理系统。它是谷歌在大规模应用容器技术方面数十年经验的实际成果。因此,支持大规模的集群管理承载着非常多的组件,分布式本身的复杂度非常高。 Kubernetes到底有什么? 接下来我们一步步来看看K......
  • 练习记录-cf-div2-856(A-C)
    vp的写出4道C感觉目前不是能力范围以后有机会留下来打比赛的话再说A-PrefixandSuffixArray给出字符串的前缀和后缀问是不是回文 我采用枚举长度为n-1和1的拼凑但是这并不奏效一直wa3后来改用拼两个n/2的就过了如果有大佬看到了希望能解答一下qwq#include<b......
  • leetcode56.合并区间-java
    1classSolution{2publicint[][]merge(int[][]intervals){3/*4思路:左区间排序,若intervals[i][0]>=intervals[i-1][1];则重叠5将重叠区间新建放入res数组里,没重叠则放入原数组6*/7List<int[]>......
  • CSCI561 算法解析
    CSCI561CSCI561FirstOrderLogicResolutioGuidelinesThisisaprogrammingassignment.Youwillbeprovidedwithsampleinputsandoutputs(seebelow).Pleaseunderstandthatthegoalofthesamplesistocheckthatyoucancorrectlyparsetheproblemdefi......
  • 在mtk7561开发板,从指令去实现wifi各种配置参数 、查看用户名和密码
    (141条消息)在mtk7561开发板,从指令去实现wifi各种配置参数、查看用户名和密码_ssid使能_xxno的博客-CSDN博客 asuswrt-merlin/nvram_control.cat263449f32bf292fb6bc5a08cd645e61a7fb10485·RMerl/asuswrt-merlin(github.com)......