首页 > 其他分享 >云原生第十周——promethus简介(下)

云原生第十周——promethus简介(下)

时间:2023-09-04 18:12:19浏览次数:32  
标签:__ 发现 promethus kubernetes 第十 简介 prometheus 标签 configs

Prometheus 服务发现

简介

prometheus采用pull方式拉取指定目标实例的监控数据,也就是间隔固定的周期去目标实例上抓取metrics数据,每一个被抓取的目标实例都需要暴露一个数据指标API接口,prometheus通过这个暴露的接口就可以获取到其指标数据,这种方式需要由目标服务决定采集的指标有哪些,prometheus通过配置在scrape_configs中指定目标节点,static_configs(静态配置)无法动态感知新的节点,即如果后面增加了节点或者删除节点,就得手动修promrtheus的配置文件,并重启promethues,因此后期维护很不方便,所以出现了很多不同类型的service discovery即动态服务发现机制,动态服务发现能够使prometheus自动发现集群中的新目标,并对其进行数据采集,通过服务发现机制使Prometheus能自动获取到需要监控的Target列表,然后轮询这些Target获取监控数据。

prometheus常用的服务发现类型:

  • kubernetes_sd_configs: #基于Kubernetes API实现的服务发现,让prometheus动态发现kubernetes中被监控的新目标
  • static_configs: #静态服务发现,基于prometheus配置文件指定的监控目标
  • dns_sd_configs: #DNS 服务发现监控目标
  • consul_sd_configs: #Consul 服务发现,基于consul服务动态发现监控目标
  • file_sd_configs: #基于指定的文件实现服务发现,基于指定的文件发现监控目标

基于kubernetes_sd_config支持的动态服务发现类型:

  • node #node节点
  • service #发现svc
  • pod #发现pod
  • endpoints #基于svc发现endpoints(pod)
  • Endpointslice #对endpoint进行切片
  • ingress #发现ingress

image

Prometheus服务发现基础-relabeling:

promethues的relabeling(重新修改标签)功能很强大,它能够在抓取到目标实例之前把目标实例的元数据标签动态重新修改,动态
添加或者覆盖标签。

prometheus从Kubernetes API动态发现目标(targer)之后,在被发现的target实例中,都包含一些原始的Metadata标签信息,默认的标签有:

__address__:以<host>:<port> 格式显示目标targets的地址
__scheme__:采集的目标服务地址的Scheme形式,HTTP或者HTTPS
__metrics_path__:采集的目标服务的访问路径

为了更好的识别监控指标,便于后期调用数据绘图、告警等需求,prometheus支持对发现之后的目标进行label修改,在两个阶段可以重新标记:

  • relabel_configs : 在对target进行数据采集之前(比如在采集数据之前重新定义标签信息,如目的IP、目的端口等信息),可以使用relabel_configs添加、修改或删除一些标签、也可以只采集特定目标或过滤目标。

  • metric_relabel_configs:在对target进行数据采集之后,即如果是已经抓取到指标数据时,可以使用metric_relabel_configs做最后的重新标记和过滤。

image

label类型:

  • source_labels:源标签,没有经过relabel处理之前的标签名字
  • target_label:通过action处理之后的新的标签名字
  • regex:给定的值或正则表达式匹配,匹配源标签的值
  • replacement:通过分组替换后标签(target_label)对应的/()/() $1:$2

配置示例:

静态配置:

- job_name: "prometheus-node"
static_configs:
- targets: ["192.168.110.206:9100","192.168.110.207:9100"]

基于kubernetes API Server的动态发现:

- job_name: 'kubernetes-apiserver' #job名称
kubernetes_sd_configs: #基于kubernetes_sd_configs实现服务发现
- role: endpoints #发现类型为endpoinsts
scheme: https #当前jod使用的发现协议
tls_config: #证书配置
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt #容器里的证书路径
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token #容器里的token路径
relabel_configs: #重新re修改标签label配置configs
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] #源标签,即对哪些标签进行操作
action: keep #action定义了relabel的具体动作,action支持多种
regex: default;kubernetes;https #指定匹配条件、只发现default命名空间的kubernetes服务后面的endpoint并且是https协议

标签:__,发现,promethus,kubernetes,第十,简介,prometheus,标签,configs
From: https://www.cnblogs.com/zhaoxiangyu-blog/p/17661770.html

相关文章

  • 在应用中加入全文检索功能——基于Java的全文索引引擎Lucene简介 [摘]
    作者:车东关键词:Lucenejavafull-textsearchengine Chinese wordsegment内容摘要:Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分......
  • babel 简介
    Babel是什么Babel是一个Javascript编译器Babel是一个工具链,主要用于将采用ECMAScript2015+语法编写的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是Babel能为你做的事情:语法转换通过Polyfill方式在目标环......
  • celery简介与安装
    前言Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。它是一个任务队列,专注于实时处理,同时还支持任务调度。可以使用的场景如下:异步发邮件,这个时候只需要提交任务给celery就可以了.之后由worker进行发邮件的操作.跑批接口......
  • Tokenization 简介
    Tokenization是将文本分割成更小的单位,称为"token"的过程。在自然语言处理中,token可以是单词、短语、句子或其他更小的文本单位,具体取决于任务和需求。Tokenization的目的是将文本分解成离散的、可处理的单元,以便进行进一步的文本处理和分析。它是自然语言处理任务的重要预处理步......
  • 自然语言工具包(Natural Language Toolkit,简称NLTK) 简介
    自然语言工具包(NaturalLanguageToolkit,简称NLTK)是一个广泛使用的Python库,用于处理和分析自然语言文本。它提供了各种工具和数据集,用于文本预处理、语言模型、词性标注、句法分析、语义分析、情感分析、文本分类等自然语言处理任务。以下是NLTK的一些主要功能和特点:1.丰富的语......
  • 前端歌谣的刷题之路-第十一题-伪类选择器
     目录前言题目 核心代码总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷本题目源自于牛客网......
  • 前端歌谣的刷题之路-第十二题-伪元素
     目录前言题目核心代码总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷本题目源自于牛客网......
  • 第十四章 集合类库(上)
    14.1集合的概述14.1.1集合的由来当需要在Java程序中记录单个数据内容时,则声明一个变量。当需要在Java程序中记录多个类型相同的数据内容时,声明一个一维数组。当需要在Java程序中记录多个类型不同的数据内容时,则创建一个对象。当需要在Java程序中记录多个类型相同的对象数......
  • 第十五章 集合类库(下)
    15.1泛型机制15.1.1基本概念通常情况下集合中可以存放不同类型的对象,是因为将所有对象都看做Object类型放入的,因此从集合中取出元素时也是Object类型,为了表达该元素真实的数据类型,则需要强制类型转换,而强制类型转换可能会引发类型转换异常。为了避免上述错误的发生,从Java5开......
  • 第01章-Spark SQL简介和常用语句
    第01章SparkSQL简介和常用语句21.1表21.1.1什么是SparkSQL中的表21.1.2内部表和外部表21.1.3视图31.1.4查看表描述31.2分区和分桶31.2.1什么是SparkSQL的分区(partition)31.2.2什么是SparkSQL的分桶(bucket)41.3写入数据51.3.1通过create写入数据51.3.2通过in......