04-prometheus服务的动态发现

news2024/12/24 20:20:09

一、概述

        目前,我们每增加一个被监控的节点,就需要修改prometheus的配置文件,然后重新加载prometheus服务,这种方式比较繁琐,每次新增、删除被监控节点都需要重新操作一遍,不适合生产环境的大规模监控架构;

        所以prometheus就提供了这种问题的解决方案,方案有两种,基于文档的自动发现和基于网络的自动发现。

二、基于文档的自动发现

1,修改prometheus的配置文件

[root@prometheus-server31 ~]# cat /prometheus/soft/prometheus/prometheus.yml 
#通用设置
global:
  #抓取监控的间隔时间,多长时间获取一次数据(生产环境,建议15-30s);
  scrape_interval: 3s 
  #多久读一次规则
  evaluation_interval: 15s 

#先不解释,之后会讲
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

#先不讲,之后会讲
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

#被监控的配置
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  #另起一个job名称,被监控的主体自定义名称
  - job_name: "node-exporter01"
    #基于文档自动发现
    file_sd_configs:
      #文档的地址路径
      - files:
          #- /prometheus/soft/prometheus/file-sd.json
          - /prometheus/soft/prometheus/file-sd.yaml

2,重新加载prometheus服务

[root@prometheus-server31 ~]# curl -X POST http://10.0.0.31:9090/-/reload

3,编辑自动发现文档

[root@prometheus-server31 ~]# vim /prometheus/soft/prometheus/file-sd.yaml

- targets:
    - '10.0.0.41:9100'
  labels:
    xinjizhiwa: prometheus-learn
    office: www.xinjizhiwa.com

浏览器刷新查看

4,重新编辑自动发现文档,验证是否自动更新

· yaml文件写法

[root@prometheus-server31 ~]# vim /prometheus/soft/prometheus/file-sd.yaml

- targets:
    - '10.0.0.41:9100'
    - '10.0.0.42:9100'
  labels:
    xinjizhiwa: prometheus-learn
    office: www.xinjizhiwa.com

· json文件写法

[root@prometheus-server31 ~]# vim /prometheus/soft/prometheus/file-sd.yaml

[

        {

                "targets":["10.0.0.41:9100","10.0.0.42:9100"],

                "lables":{

                        "xinjizhiwa":"prometheus-learn","office":"wwwxinjizhiwa.com"

                }

        }

]

浏览器刷新,看是否监控到修改后的自动发现列表

5,小结

        有了文档的自动发现,那么我们以后就不需要再修改prometheus的配置文件了,更不需要重新加载prometheus服务了,是不是方便了很多呀!

        那么有没有更方便的方式呐?那么接下来,我们学习下基于网络的自动发现。

三、基于consul网络集群自动发现

        搭建一个consul的网络集群,让被监控节点全部加入到网络集群中,然后配置prometheus监控地址为这个网络集群,日后,只要有被监控节点加入到这个网络集群中,prometheus就可以自动的发现这些节点,刷新被监控列表;

1,搭建consul网络集群

        随便准备3台机器,用来搭建consul网络集群,本次学习,由于环境限制,我们就从使用虚拟机上选择就行,日后生产环境,需要单独拿出来节点服务器进行单独的配置更好;

官网地址参考链接:Consul by HashiCorp

· 下载consul工具

下载方式:

wget https://releases.hashicorp.com/consul/1.15.4/consul_1.15.4_linux_amd64.zip

本次学习,同样给大家准备了安装包,在百度云盘;

链接:https://pan.baidu.com/s/1qaIutR6qzmJbz72yWy3t_A?pwd=bppk 
提取码:bppk

· 上传解压软件包

        本次使用31、71、41作为consul集群的搭建节点;

rz -E
ll
-rw-r--r-- 1 root root 60030076 Nov  8 01:42 consul_1.16.1_linux_amd64.zip

解压到全局命令下;

unzip consul_1.16.1_linux_amd64.zip -d /usr/local/bin

· 运行consul服务

1,服务端创建集群

本次学习,我们拿31服务器节点当做consul集群的服务端;

[root@prometheus-server31 consul]# consul agent -server -bootstrap -bind=10.0.0.31 -data-dir=/consul -client=10.0.0.31 -ui

也可以查看下端口8500有没有开启~

浏览器访问,可以看到,只有31一个节点;

10.0.0.31:8500

此时集群服务端已经启动。

2,consul客户端加入集群

[root@grafana71 consul]# consul agent  -bind=10.0.0.71 -data-dir=/consul -client=10.0.0.71 -ui -retry-join=10.0.0.31

[root@prometheus-node41 consul]# consul agent  -bind=10.0.0.41 -data-dir=/consul -client=10.0.0.41 -ui -retry-join=10.0.0.31

3,查看浏览器consul地址

此时,consul集群搭建完成;

至此,consul网络集群服务搭建成功!~

2,配置prometheus配置文件

        目的是让prometheus去consul网络中抓取被监控的节点;

[root@prometheus-server31 ~]# cat /prometheus/soft/prometheus/prometheus.yml 
#通用设置
global:
  #抓取监控的间隔时间,多长时间获取一次数据(生产环境,建议15-30s);
  scrape_interval: 3s 
  #多久读一次规则
  evaluation_interval: 15s 

#先不解释,之后会讲
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

#先不讲,之后会讲
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

#被监控的配置
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  #另起一个job名称,被监控的主体自定义名称
  - job_name: "node-exporter01"
    #基于consul服务自动发现
    consul_sd_configs:
      #指定consul的服务器地址,若不指定,默认“localhost:8500”
      - server: 10.0.0.31:8500
      - server: 10.0.0.71:8500
      - server: 10.0.0.41:8500
    relabel_configs:
      #匹配consul的源标签字段,表示服务的名称
      - source_labels: [__meta_consul_service]
        # 指定源标签的正则表达式,若不定义,默认值为"(.*)"
        regex: consul
        # 执行动作为删除,默认值为"replace",有效值: replace, keep, and drop
        action: drop

[root@prometheus-server31 ~]# curl -X POST http://10.0.0.31:9090/-/reload

3,被监控节点加入consul服务

· 被监控节点41加入

[root@prometheus-node41 ~]# curl -X PUT -d '{"id":"prometheus-node41","name":"prometheus-node41","address":"10.0.0.41","port":9100,"tags":["node-exporter"],"checks": [{"http":"http://10.0.0.41:9100","interval":"5m"}]}' http://10.0.0.31:8500/v1/agent/service/register

· consul集群页面查看

41加入成功;

· 被监控节点42加入

[root@prometheus-node42 node_exporter]# curl -X PUT -d '{"id":"prometheus-node42","name":"prometheus-node42","address":"10.0.0.42","port":9100,"tags":["node-exporter"],"checks": [{"http":"http://10.0.0.42:9100","interval":"5m"}]}' http://10.0.0.31:8500/v1/agent/service/register

· consul集群页面查看

42加入成功

4,prometheus页面查看

查看是否监控到41和42节点

5,拓展:节点下线consul服务

举个花生/栗子:节点41下线,不让prometheus监控了;

注意:

        我们consul集群中有3台集群,31、41、71,当被监控节点加入consul时选择哪个集群节点加入的,那么退出集群时也需要指定加入时的节点;

        加入指定的31退出也必须指定31.

curl -X PUT http://10.0.0.31:8500/v1/agent/service/deregister/prometheus-node41

四、总结

构建prometheus基于consul局域网络监控自动发现节点的步骤;

1,构建consul局域网络集群;

2,被监控节点“加入”consul集群;

3,修改prometheus配置文件,指定consul服务进行监控;

就此,成功了;

###############

至此,prometheus的服务发现,就学习完毕了;

###############

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测(完整…

yolov5训练太慢的解决方案

问题原因 训练太慢大多是因为没有安装CUDA和pytorch,导致的只有cpu在跑,显卡没跑 这就是很典型的。 解决方案 第一步:安装CUDA 在本机上面安装CUDA,记住只有N卡可以安装,一开始的电脑是自带CUDA的。 如果不是自带的CUDA&…

MATLAB知识点:for循环的七道经典例题

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自​第4章:MATLAB程序流程控制 (…

贪心的一些题目

题目1&#xff1a;分班 5478. 分班 - AcWing题库 解题 #include<iostream> #include<algorithm> using namespace std; const int N100010; int n,k,l; int a[N]; int main() {scanf("%d%d%d",&n,&k,&l);int mn*k;for(int i1;i<m;i) sc…

opencv实现图像的融合

实现图像的融合并且输出一张jpg格式的照片。 先显示一个彩色图的照片 然后我以彩色方式读取1.png&#xff0c;以灰度图方式读取3.png这张图片&#xff0c;并且用两个窗口独立地去显示(我后来发现不能把灰度图和彩色图相融合) 然后实现两个融合 #include <opencv2/highgu…

使用Matplotlib绘制圆环图

圆环图是饼图的修改版&#xff0c;中间区域被切掉。圆环图更关注使用弧的面积来以最有效的方式表示信息&#xff0c;而不是饼图&#xff0c;饼图更关注比较切片之间的比例面积。圆环图在空间方面更有效&#xff0c;因为圆环图内部的空白空间可用于显示有关圆环图的一些附加信息…

黑科技工具盒源码 好用的手机工具盒iAPP源码

全新推出&#xff01;多功能工具箱&#xff1a;一款实用的手机工具集&#xff0c;提供丰富的免费小工具&#xff0c;操作简便。目前包含六项黑科技功能&#xff0c;分别为QQ云端、短信测压、Q绑查询、照妖镜、chatgpt、网页一键打包APP。工具箱体积小巧&#xff0c;不占内存&am…

自建Web视频会议,视频互动,SFU/MCU融合架构选型方案分析

网络越来越好&#xff0c;大家已经越来越多接受在家在线办公&#xff0c;在线工作越来越离不开视频会议&#xff0c;视频互动&#xff0c;当然云平台很多&#xff0c;但也用不同的需求&#xff0c;很多需要自建平台与自已的业务系统集成对接。因为大家业务系统多是b/s架构。一般…

Go-zero中分布式事务的实现(DTM分布式事务管理器,在一个APi中如何调用两个不同服务的rpc层,并保证两个不同服务之间的业务逻辑同时成功)

涉及到的相关技术 1.DTM分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。 2.SAGA事务模式,SAGA事务模式是DTM中常用的一种模式,简单易上手.(当然还有其它更多的事务模式,这里采用的SAGA只不过是其中一种较为简单的方法) 3.Go-zero框架,ETCD服务注册... …

绝地求生:【2024PGC之路——PUBG电竞积分分布】

亲爱的PUBG电竞爱好者&#xff0c; 你们好&#xff01; 2024年PUBG电竞即将开始&#xff0c;让我们一起深入了解下今年令人激动的PGS 和 PGC赛事积分分配情况。 PUBG GLOBAL SERIES&#xff08;PGS全球系列赛&#xff09;: 积分分布 根据我们之前概述的《PUBG 2024电竞计划》…

[项目设计] 从零实现的高并发内存池(一)

&#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[高并发内存池] ❤️ 前置学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 ​ 目录 前言 项目介绍 1.内存池 1.1 什么是内存池 池化技术 内存池 1.2 为什…

P9905 [COCI 2023/2024 #1] AN2DL 【矩阵区间最大值】

文章目录 题目大意1.输入格式2.输出格式3.数据范围与约定 思路维护每一行区间维护每一列区间维护区间最大值code↓ 完结撒花(&#xffe3;▽&#xffe3;) / 题目大意 给定 n , m , r , s n,m,r,s n,m,r,s 和一个 n m n\times m nm 的整数矩阵 A A A&#xff0c;求它每个 …

PyTorch-神经网络

神经网络&#xff0c;这也是深度学习的基石&#xff0c;所谓的深度学习&#xff0c;也可以理解为很深层的神经网络。说起这里&#xff0c;有一个小段子&#xff0c;神经网络曾经被打入了冷宫&#xff0c;因为SVM派的崛起&#xff0c;SVM不了解的同学可以去google一下&#xff0…

Android 多桌面图标启动, 爬坑点击打开不同页面

备注 &#xff1a; MainActivity 正常带界面的UI MainActivityBt 和 MainActivityUsb 是透明的&#xff0c;即 android:theme"style/TranslucentTheme" ###场景1:只有MainActivity 设置成&#xff1a;android:launchMode"singleTask" 点击顺序&#xff1…

外贸网站模板建站

测绘检测wordpress外贸主题 简洁实用的wordpress外贸主题&#xff0c;适合做测绘检测仪器设备的外贸公司使用。 https://www.jianzhanpress.com/?p5337 白马非马衣服WordPress外贸建站模板 白马非马服装行业wordpress外贸建站模板&#xff0c;适用于时间服装企业的官方网站…

ehcache3介绍和使用示例

介绍 EhCache是一个广泛使用的Java进程内缓存框架&#xff0c;具有快速和精干的特点。它提供了以下主要优势&#xff1a; 速度快&#xff1a;由于其直接在JVM进程中运行&#xff0c;EhCache的访问速度非常快&#xff0c;适合对响应时间要求较高的应用。 配置灵活&#xff1a;…

使用 Haproxy 搭建Web群集

Haproxy是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;如LVS 和Nginx。相比较而言&#xff0c;LVS.牲能最好&#xff0e;但是搭建相对复杂:Nginx的upstream模块支持群集功能&#xff0e;但是对群集节点健康检查功能不强&#xff0c;性能没有…

GEE:使用ReLu激活函数对单波段图像进行变换(以NDVI为例)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上,对任意单波段影像进行 ReLu 变换的代码。并以对 NDVI 影像像素值的变换为例。 文章目录 一、ReLu激活函数1.1 什么是 ReLu 激活函数1.2 用到遥感图像上有什么用?二、代码链接三、完整代码一、ReLu激活…

HTML5:七天学会基础动画网页6

CSS3自定义字体 ①&#xff1a;首先需要下载所需字体 ②&#xff1a;把下载字体文件放入 font文件夹里&#xff0c;建议font文件夹与 css 和 image文件夹平级 ③&#xff1a;引入字体&#xff0c;可直接在html文件里用font-face引入字体&#xff0c;分别是字体名字和路径 例…

【C++ 函数栈】栈区保存函数参数和函数调用的过程

目录 1 调用过程 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;C专栏&#x1f4a5; 标题&#xff1a;【C 函数栈】栈区保存函数参数和函数调用的过程❣️ 寄语&#xff1a;人生的意义或许可以发挥自己全部的潜力&#xff0c;所以加油吧&#xff…