进阶之路:Prometheus —— 技巧篇

2023-05-16

前言

入门篇:从零开始:Prometheus

理解篇:进阶之路:Prometheus —— 理解篇

本文记录了一些我在使用Prometheus的过程中的技巧,以后还会随着使用的深入不定期更新,需要的小伙伴可以订阅收藏,希望可以让正在摸索的你们少走一些弯路。

对于刚开始使用Prometheus的用户可以从入门篇获取到一些基本的概念。

 

技巧

1.自定义监控指标

//自定义counter
static final Counter PARAM1 = Counter.build()
    .name("param_1") //定义名称,名称可用于搜索
    .help("this is a counter.") //定义描述
    .register();

//自定义gauge
static final Gauge PARAM2 = Gauge.build()
    .name("param_2")
    .help("this is a gauge.")
    .register();

param1.inc(); //当前属性加1
param2.dec(); //当前属性减1
param2.set(10); //设置当前属性
  • Counter和Gauge表示类型;
  • 必须加上static final关键字,否则编译不能通过;

2.带label的监控指标

private static final Gauge PARAM3 = Gauge.build()
    .name("param_3")
    .labelNames("label1", "label2", "label3") //定义标签名称,可定义多个
    .help("this is a gauge with labels")
    .register();
PARAM3.labels("value1","value2","value3").set(1100); //设置标签值,标签可用于条件筛选

3.动态添加服务到Prometheus监控列表中

基本思路:

  1. 新增/删除服务并在zookeeper中添加节点,traefik可通过配置zookeeper连接实现自动注册,修改Prometheus的服务(以下简称服务A)检测到zookeeper节点变化后执行第 2 步;
  2. 服务A对比traefik和prometheus.yml中的服务列表,筛选出新增/删除的服务;
  3. 按照格式修改prometheus.yml文件并重新加载Prometheus。

pom.xml 

//有关于zookeeper和traefik的配置在此不做展开,此处仅列出需要的依赖
<!-- zookeeper -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.0.1</version>
</dependency>

<!-- prometheus -->
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient</artifactId>
    <version>0.3.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_hotspot</artifactId>
    <version>0.3.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_servlet</artifactId>
    <version>0.3.0</version>
</dependency>

 关键代码

//加载zookeeper的CuratorFramework框架
@Autowired
private CuratorFramework client;

//触发traefik注册服务
client.transactionOp().create().forPath("/traefik/frontends/path");
client.transactionOp().create().forPath("/traefik/backends/path");

//服务A处理prometheus.xml
PathChildrenCache cache = new PathChildrenCache(client, "/traefik/backends", true);
cache.getListenable().addListener((client, event) -> {
    switch (event.getType()) {
        case CHILD_ADDED:
            //TODO 找到traefik中有,Prometheus中没有的项目(新增项目)
            //TODO 向prometheus.xml文件中写入项目信息
        case CHILD_REMOVED:
            //TODO 找到traefik中没有,Prometheus中有的项目(删除项目)
            //TODO 删除prometheus.xml文件中对应项目信息
    }
    //触发Prometheus重新加载
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.postForLocation("http://127.0.0.1:9090/-/reload", null);
}

 向prometheus.xml写入项目的格式

##### START #####
- job_name: 'service'
  metrics_path: /metrics
  dns_sd_configs:
  - names:
    - 'service'
    refresh_interval: 15s
    type: A
    port: 9000
##### END #####

快速获取prometheus.xml中所有job_name的正则表达式(Java)

(?<=job_name:\\s')\w+(?='\\s)

要点:

  1. traefik是一个负载均衡工具,如果没有相关需求可以去掉,更加简单粗暴^_^;
  2. 修改prometheus.xml文件后一定要触发重新加载才能看到效果;
  3. prometheus.xml的写入格式可能会根据需求不同有所变化,具体请查看官方文档。

 

文章内容是根据参考+实践理解所得,如果有错误的地方欢迎指正!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进阶之路:Prometheus —— 技巧篇 的相关文章

随机推荐

  • 安装好git包后,但在vsc中却提示:“ 未找到 Git。请安装 Git,或在 “git.path“ 设置中配置“的解决处理办法

    解决步骤 1 在官网安装好git管理工具包后 新建一个文件夹 然后用vsc打开该文件夹 效果下图所示 2 点选上图右侧的齿轮按钮 管理功能 后选中 34 管理扩展 34 功能 3 进入新的界面如下图所示 点开管理扩展后我们会看到Git扩展
  • 一种 XML2XML 格式之间转换的解决方案(转)

    一种 XML2XML 格式之间转换的解决方案 本文提供了一种 XML2XML 格式之间转换的通用解决方案 我们通过建立用以存储数据信息的数据模型 xff0c 并应用优化器 Optimizers xff0c 转换规则 Rules 对所存储的信
  • Unity can't be installed on this disk.The contents of this disk can't be changed.

    1 问题 在使用mac下Unity的时候 xff0c 通常情况下我们的方法都是通过Hub的安装按钮下载 但是 xff0c 很多时候上面并没有我们需要的版本 于是我们傻乎乎的通过点击上面的 xff1a 官方发布网站 进行下载 在下载的第五个步
  • Unity之【使用Blend-Tree】

    Blended Tree 材料准备创建Animator创建Controller配置混合树脚本代码效果演示 材料准备 人物模型和动画 直接去Unity素材库里找 xff0c 动画可以找可以自己录制 Unity编辑器 创建Animator 步骤
  • linux常用开关机指令

    关机命令 xff1a shutdown h now xff08 立刻进行关机 xff09 halt xff08 立刻进行关机 xff09 poweroff xff08 立刻进行关机 xff09 重启命令 xff1a shutdown r n
  • _vimrc (linux版)

    一般放在 xff1a etc vim span class token string 34 vimrc 34 span span class token function vim span config span class token f
  • 01_Unity事件函数OnMouseDown生效条件

    前言 Unity提供了OnMouseDown xff0c OnMouseEnter xff0c OnMouseExit等方法 xff0c 这些方法可以很方便的帮助我们处理鼠标的时间响应 但是需要注意他的生效条件 xff0c 最近我在制作视频
  • 算法题型:滑动窗口(leetcode 209)

    一 209 长度最小的子数组 难度中等 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s xff0c 找出该数组中满足其和 s 的长度最小的连续子数组 如果不存在符合条件的连续子数组 xff0c 返回 0 示例 输入 s 61 7
  • 前端:bootstrap table表格属性、列属性、事件、方法

    目录 一 使用前提 二 基本属性 列参数 事件 方法 多语言 一 使用前提 1 在html中引用table相应的包 lt link rel 61 34 stylesheet 34 type 61 34 text css 34 href 61
  • 从0开始学SLAM的各种问题

    一 关于更改vscode自带终端文字间隔 xff0c 字体大小 文件 gt 首选项 gt 设置 gt 搜索 终端 gt 找到Terminal gt Integrated Font Family gt 更改为monospace即可 找到Ter
  • python —— 变量后面加个下划线_是啥意思

    前后没有下划线的是公有方法 前边有一个下划线的为私有方法或属性 xff0c 子类无法继承 前边有两个下划线的 一般是为了避免于子类属性或者方法名冲突 xff0c 无法在外部直接访问 前后都有双下划线的为系统方法或属性 后边单个下划线的可以避
  • SD卡烧录镜像后插电脑不显示问题

    起因 起因是给sd卡刷入jetson nano的ROS机器人镜像 xff0c 之后读卡器插入电脑就不显示了 解决方法 xff1a xff08 1 xff09 Ubuntu下 xff1a https blog csdn net yandaqi
  • 【码农本色】用数据解读我的2014

    转眼2014就过去了 xff0c 不禁感叹又老了一岁的同时 xff0c 却发现已经快研究生毕业了 xff0c 趁着这个活动简单总结下2014 1 实习篇 2014年一月份拿到了人生第一个实习offer xff0c 在sony这样的大公司做a
  • Windows下QGroundControl开发问题汇总

    Windows下QGroundControl二次开发问题汇总 前段时间因为项目要求涉及了一下QGC地面站的二次开发 xff0c 开发难度先不提 xff0c 环境搭建遇到了很多问题 xff0c 几乎网上能搜到的问题都遇到了一遍 xff0c 在
  • 初识Git——Git、Github、Gitee的关系

    想要自己做一些有意义的东西 xff0c 甚至去参加一些互联网比赛 xff0c 就必须要学会使用Git 最初了解Git xff0c 同时听到了Git Github Gitee xff08 码云 xff09 xff0c 于是竭力想要弄明白三者之
  • UCOSII原理与应用----基本概念和任务

    1 实时操作系统是什么 实时操作系统 xff1a 能够使计算机系统在一个规定的时间内及时响应外部请求并及时控制设备和实时任务协调运行的操作系统 实时系统有两个基本要求 xff1a 1 实时系统的计算必须产生正确结果 xff0c 称逻辑或功能
  • UCOSII原理与应用----任务调度

    任务调度 xff1a UCOSII任务调度思想 xff1a 近似地每时每刻让优先级最高的就绪任务处于运行状态 具体上 xff0c 采用系统或用户任务调用系统函数及执行中断服务程序结束时来调用调度器 xff0c 以确定应该运行的任务并运行它
  • Docker的使用(docker pull拉取镜像失败问题解决)

    在docker拉取Nginx镜像过程中 xff0c 速度慢 xff0c 或者不成功 报错代码 xff1a Error response from daemon Get https registry 1 docker io v2 net ht
  • Hexo-Next 博客搭建

    lt span style 61 34 color 777777 34 gt title Hexo 搭配 GitHub 建立博客 选用 nexT 主题 date 2021 04 26 19 21 20 categories 兴趣 网站 博客
  • 进阶之路:Prometheus —— 技巧篇

    前言 入门篇 xff1a 从零开始 xff1a Prometheus 理解篇 xff1a 进阶之路 xff1a Prometheus 理解篇 本文记录了一些我在使用Prometheus的过程中的技巧 xff0c 以后还会随着使用的深入不定期