Prometheus服务的动态发现

news/2025/3/9 16:42:54/文章来源:https://www.cnblogs.com/yuwen01/p/18760968

prometheus服务的动态发现

原文链接:https://blog.csdn.net/2302_79199605/article/details/136441386

一、概述

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

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

img

二、基于文档的自动发现

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:#文档的地址路径 正常yaml格式json格式- 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-learnoffice: www.xinjizhiwa.com

浏览器刷新查看

img

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-learnoffice: 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"}}]

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

img

5,小结

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

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

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

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

img

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

img

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

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集群搭建完成;

img

至此,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:8500relabel_configs:#匹配consul的源标签字段,表示服务的名称- source_labels: [__meta_consul_service]# 指定源标签的正则表达式,若不定义,默认值为"(.*)"regex: consul# 执行动作为删除,默认值为"replace",有效值: replace, keep, and dropaction: 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加入成功;

img

被监控节点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加入成功

img

4,prometheus页面查看

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

img

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

img

img

四、总结

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

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

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

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

就此,成功了;

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

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

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

原文链接:https://blog.csdn.net/2302_79199605/article/details/136441386

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 396(d和e)

题目链接d 题目分析 本题要求在一个简单连通无向图中,找出从顶点 1 到顶点 N 的所有简单路径(即不重复经过同一顶点的路径)中,路径上所有边的标签的异或值的最小值。 输入信息第一行包含两个整数 N 和 M,分别表示图的顶点数和边数,其中 2 ≤ N ≤ 10,N - 1 ≤ M ≤ N * …

实验1C语言开发环境使用和数据模型,运算符,表达式

实验1 代码:#include<stdio.h> int main() { printf(" 0 \n"); printf("<H>\n"); printf("I I\n");return 0; } task1 运行结果截图:实验2 代码:#include<stdio.h> int main(){ char ans1,ans2;printf("每次课前认真…

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性

全文链接:https://tecdat.cn/?p=40365 原文出处:拓端数据部落公众号 在环境流行病学研究中,理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论,并引入了疾病映射以及对空间风险进行平滑处理…

android组件实现圆角

圆角实现步骤效果预览 要实现如图所示的圆角步骤在app/src/main/res/drawable新建样式文件如rounded.xml<?xml version="1.0" encoding="utf-8"?> <!--实现圆角边框--> <shape xmlns:android="http://schemas.android.com/apk/res/a…

Manus AI 站在巨人(大模型)肩膀上的AI助手

3月6日,注定是科技圈的不眠之夜。Manus AI已横空出世,它可不是普通的聊天机器人,而是一个真正的全能AI助手。它能够帮你从想法到落地,直接执行听起来是不是很酷?接下来,我们看几个官方的例子,带大家体验一下它到底有多强大。 想象一下,你手头有10份简历要筛选。它会像人…

计算机组成原理学习

计算机体系专业术语 (ISA)指令集体系结构 描述计算机的功能,程序员看到的计算机的抽象视图,并定义了汇编语言和编程模型,但并没有考虑计算机的实现 微体系结构 描述一种ISA的实现方式,关注计算机的内部设计 系统体系结构 包括处理器 存储器 总线外设在内的整个系统计算机系…

0-1 背包问题

问题描述: 现有4个物品,小偷的背包总容量为8,也就是只能背起总重量为8的一个或多个物品。 那么小偷以什么样的方案,可以在背包背得动的情况下,尽可能偷价值最大的物品? 这4个物品的编号、总量、价值如下图: 物品编号:1 2 3 4 物品重量:2 3 4 5 物品价值:3 4 …

工程师必看~合宙4G模组Air780EPM的开机启动及外围电路设计!

本文介绍了合宙4G模组——Air780EPM 模块开机的完整硬件设计指南,涵盖供电要求、管脚配置、电路示例及常见问题排查方法,希望能够帮助大家避免设计错误,确保模块稳定启动!常见开机电路。 这些内容是 Air780EPM 模块硬件设计的核心指南,直接关系到模块能否稳定运行。 掌握这…

快速上手!4G模组Air780EPM的供电设计以及选型推荐

本文主要介绍了如何为 Air780EPM 模块设计供电电路,涵盖 LDO、DCDC、锂电池等多种方案。 重点包括:根据设备需求选合适电源类型,选元件时注意 LDO 散热、DCDC 电感抗冲击能力,PCB 布局要缩短走线减少干扰。针对锂电池和长待机场景,还提供了充电管理和升压电路设计技巧,帮…

爬楼梯 三种算法比较

1 /*2 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。3 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?4 5 示例 1:6 输入:n = 27 输出:28 解释:有两种方法可以爬到楼顶。9 1. 1 阶 + 1 阶 10 2. 2 阶 11 12 …

从零开始:4G模组Air780EPM的串口电路设计及硬件指导!

串口作为Air780EPM模块的核心通信接口,承担着设备控制、数据传输及外设交互等关键功能,在物联网终端、智能设备、工业自动化等场景中不可或缺。 一、概述 串口作为 Air780EPM 模块最最主要的通信接口,承担着控制,数据传输,外设通信等重要功能。基本上绝大部分的 Cat.1 应用…

实验1C语言开发环境使用和数据类型,运算符,表达式

实验1 task1.c 代码:#include <stdio.h> #include <stdlib.h> int main() {printf(" O \n");printf("<H>\n");printf(" I \n");printf(" O \n");printf("<H>\n");printf(" I \n");syste…