python实现consul的服务注册与注销
我在使用consul的时候主要用于prometheus的consul服务发现,把数据库、虚拟机信息发布到consul,prometheus通过consul拿到数据库、虚拟机信息去采集指标信息。
此篇文章前提是已经安装好consul服务以后,安装consul请参考二进制方式部署consul单机版进行安装。
1.consul模板
文件名:consul-register.json.template
{"ID": "{{ exporter_id }}","Name": "{{ exporter_id }}","Tags": [{% for tag in tags %}"{{ tag }}"{% if not loop.last %},{% endif %}{% endfor %}],"Address": "{{ exporter_address }}","Port": {{ exporter_port }},"Meta": {{% for key, value in labels.items() %}"{{ key }}":"{{ value }}"{% if not loop.last %},{% endif %}{% endfor %}},"EnableTagOverride": false,"Weights": {"Passing": 10,"Warning": 1}
}
2.consul服务注册
import json
import osimport requests
from jinja2 import Environment, FileSystemLoaderclass Config:PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))# 配置文件地址,根据自身存放路径修改CONSUL_TEMPLATE_DIR = os.path.join(PROJECT_DIR, 'common/consul')jinja_env = Environment(loader=FileSystemLoader(Config.CONSUL_TEMPLATE_DIR))
consul_register_template = jinja_env.get_template('consul-register.json.template')def register_vhost_exporter_to_consul() -> None:print(f"register node exporter to consul.")host = "192.168.56.108"exporter_id = f'node-exporter-192.168.56.108'params = consul_register_template \.render(exporter_id=exporter_id,tags=['vhost', 'node', 'exporter', 'node-exporter'],exporter_address=host,exporter_port=49150,labels={"host": host,"bk_inst_id": 1,"vh_oper_staff": 'test'})print(f"Start register svc: {exporter_id}")# http://192.168.56.108:8500为consul服务器地址resp = requests.put(f"http://192.168.56.108:8500/v1/agent/service/register",json=json.loads(params),verify=False)if not resp.ok:raise Exception(f"register svc {exporter_id} failed.")print(f"register svc {exporter_id} Success.")if __name__ == '__main__':register_vhost_exporter_to_consul()
执行注册后,效果如下图


3.consul服务注销
import requestsdef unregister_vhost_exporter_from_consul():exporter_id = f'node-exporter-192.168.56.108'resp = requests.put(f"http://192.168.56.108:8500/v1/agent/service/deregister/{exporter_id}",verify=False)if not resp.ok and resp.status_code != 404:# 404说明已经取消注册过了raise Exception(f"unregister svc {exporter_id} failed.")if __name__ == '__main__':unregister_vhost_exporter_from_consul()
注销后效果如下图

相关文章:
python实现consul的服务注册与注销
我在使用consul的时候主要用于prometheus的consul服务发现,把数据库、虚拟机信息发布到consul,prometheus通过consul拿到数据库、虚拟机信息去采集指标信息。 此篇文章前提是已经安装好consul服务以后,安装consul请参考二进制方式部署consul…...
校园选课助手【2】-重要的登录模块
用户登录模块技术要点: 密码通过MD5加密传输分布式session存储用户登录信息自定义注解进行字段校验自定义拦截器完成登录验证 下面依次给出代码和详细解释: 1.使用 MD5 二次加密用户登录信息,前端先通过密码加上盐进行MD5加密交给服务器&a…...
4章2节:从排序到分组和筛选,通过 R 的 dplyr 扩展包来操作
dplyr是R语言中一个强大且高效的数据处理包,专门设计用于处理数据框(data frames)。它的语法简洁明了,操作高效,尤其适用于大数据集。dplyr提供了一系列函数,使得数据的筛选、变换、聚合和排序等操作变得简单直观。本文将详细介绍dplyr扩展包如何进行数据的排序到分组和筛…...
C语言实现 -- 单链表
C语言实现 -- 单链表 1.顺序表经典算法1.1 移除元素1.2 合并两个有序数组 2.顺序表的问题及思考3.链表3.1 链表的概念及结构3.2 单链表的实现 4.链表的分类 讲链表之前,我们先看两个顺序表经典算法。 1.顺序表经典算法 1.1 移除元素 经典算法OJ题1:移除…...
WSL和Windows建立TCP通信协议
1.windows配置 首先是windows端,启动TCP服务端,用来监听指定的端口号,其中IP地址可以设置为任意,否则服务器可能无法正常打开。 addrSer.sin_addr.S_un.S_addr INADDR_ANY; recv函数用来接收客户端传输的数据,其中…...
Android Gradle开发与应用(一):Gradle基础
文章目录 引言一、Gradle简介二、Gradle基础语法1. 项目结构2. 插件应用3. 仓库与依赖4. 任务(Tasks) 三、Gradle在Android项目中的深入应用1. 构建变体(Build Variants)2. 依赖管理3. 自定义构建逻辑 四、Gradle WrapperGradle W…...
Linux多线程服务器编程-1-线程安全的对象生命期管理
对象的生与死不能由对象自身拥有的mutex(互斥器)来保护. 如何避免对象析构时可能存在的race condition(竞态条件)是C多线程编程面临的基本问题。 对象的销毁可能出现多种竞态条件(race condition): 在即将析构…...
Couchbase 技术详解
文章目录 Couchbase 原理数据模型数据分布数据访问与同步官网链接 基础使用安装与配置数据操作 高级使用数据分片与负载均衡数据索引与查询安全性与权限管理 优点高性能可扩展性高可用性灵活性 总结 Couchbase 是一个高性能、分布式、可扩展的 NoSQL 数据库系统,基于…...
PTE-信息收集
一、渗透测试流程 渗透测试通常遵循以下六个基本步骤: 前期交互:与客户沟通,明确测试范围、目标、规则等。信息收集:搜集目标系统的相关信息。威胁建模:分析目标系统可能存在的安全威胁。漏洞分析:对收集…...
委外订单执行明细表增加二开字段
文章目录 委外订单执行明细表增加二开字段业务背景业务需求方案设计详细设计扩展《委外订单执行明细表》扩展《委外订单执行明细过滤》创建插件,并实现报表逻辑修改创建插件,添加引用创建类,继承原数据源类ROExecuteDetailRpt报表挂载插件 委…...
“数字孪生+大模型“:打造设施农业全场景数字化运营新范式
设施农业是一个高度复杂和精细化管理的行业,涉及环境控制、作物生长、病虫害防治、灌溉施肥等诸多环节。传统的人工管理模式已经难以应对日益增长的市场需求和管理挑战。智慧农业的兴起为设施农业带来了新的机遇。将前沿信息技术与农业生产深度融合,实现农业生产的数字化、网络…...
zeppline 连接flink 1.17报错
Caused by: java.io.IOException: More than 1 flink scala jar files: /BigData/run/zeppelin/interpreter/flink/zeppelin-flink-0.11.1-2.12.jar,/BigData/run/zeppelin/interpreter/flink/._zeppelin-flink-0.11.1-2.12.jar 解决方案: 重新编译zepplin代码&…...
【机器视觉】【目标检测】【面试】独家问题总结表格
简述anchor free和anchor boxanchor free是对gt实际的左上和右下的点做回归,anchor box是对辅助框即锚框做回归说说对锚框的理解锚框是辅助框, 可以通过预设的长宽比设定,也可以通过k-means算法聚类数据集得到目标检测的指标MAP,FLOPS,FPS,参数量简述非极大值抑制(NMS)非极大…...
从零开始,快速打造API:揭秘 Python 库toapi的神奇力量
在开发过程中,我们常常需要从不同的网站获取数据,有时候还需要将这些数据转化成API接口提供给前端使用。传统的方法可能需要大量的时间和精力去编写代码。但今天我要介绍一个神奇的Python库——toapi,它可以让你在几分钟内创建API接口&#x…...
如何理解复信号z的傅里叶变换在频率v<0的时候恒为0,是解析信号
考虑例子2.12.1的说法。 首先我尝试解释第二个说法。需要注意一个事实是 实函数f的傅里叶变换F的实部是偶函数,虚部是奇函数。如图所示: 注意的是这个图中虽然是离散傅里叶变换的性质,但是对于一般的傅里叶变换的性质是适用的。 推导过程如下…...
大型赛事5G室内无线网络保障方案
大型活动往往才是国家综合实力的重要体现,其无线网络通信保障工作需融合各类新兴的5G业务应用,是一项技术难度高、方案复杂度高的系统工程。尤其在活动人员复杂、现场突发情况多、网络不稳定等情况下,如何形成一套高效、稳定的应急通信解决方…...
windows 2012域服务SYSVOL复制异常
这边文章是我多年前在BBS提问的,后来有高手回答,我把他保存了下来,最近服务器出现问题,终于有翻出来了!发出来希望能帮到更多人。 问题 我的环境,windows 2012。最近改了一些域策略,发现没有正…...
动态规划,蒙特卡洛,TD,Qlearing,Sars,DQN,REINFORCE算法对比
动态规划(Dynamic Programming, DP)通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划的步骤 识别子问题:定义问题的递归解法,识别状态和选择。确定DP数组:确定存储子问题解的数据结构ÿ…...
HarmonyOS开发商城商品详情页
目录 一:功能概述 二:代码实现 三:效果图 一:功能概述 这一节,我们实现商品详情页的开发,具体流程就是在首页的商品列表点击商品跳转到商品详情页面,同时传递参数到该页面,通过参数调用商品详情接口在详情页展示商品的的详情信息。这里我们为了方便返回首页,在最顶…...
OS_操作系统的运行环境
2024.06.11:操作系统的运行环境学习笔记 第3节 操作系统的运行环境 3.1 操作系统引导3.2 操作系统内核3.2.1 内核资源管理3.2.2 内核基本功能 3.3 CPU的双重工作模式3.3.1 CPU处于用户态(目态)3.3.2 CPU处于内核态(管态) 3.4 特权…...
开源机械爪技术全解析:从结构设计到ROS集成开发指南
1. 项目概述与核心价值如果你是一名开发者,尤其是在开源社区里摸爬滚打过一阵子,那你肯定对“awesome-xxx”这类项目不陌生。它们通常是一个精心整理的列表,汇聚了某个特定技术领域或工具生态下的优质资源。今天要聊的这个fundgao/awesome-op…...
图解人工智能(8)图灵测试作为智能与否的标准
有人不同意将图灵测试作为智能与否的标准。他们认为,就算机器表现得和人一样,也不能说机器拥有了智能,因为它只是一堆电路,和人的思维方式完全不同。你是否赞同这种说法?说说你赞同或反对的理由。开放讨论题。有几种观…...
Cloudflare + PlanetScale:在边缘运行全栈应用,数据库也不例外
全栈开发者面对的一道老难题 Cloudflare Workers 解决了计算层的全球分发问题——你的代码跑在 Cloudflare 遍布全球的 300 多个数据中心里,离用户近,启动快,不需要管理任何服务器。 但数据不一样。 数据库天然是"有状态的"&#x…...
市场营销Agent:自动生成内容与投放策略
市场营销Agent:自动生成内容与投放策略——从痛点分析到落地实践的全栈指南 引言 痛点引入 在数字营销的战场上,每天都有无数的团队在重复着「内容绞肉机」和「投放试错场」的噩梦: 内容产出端:为了覆盖小红书、抖音、知乎、微信公众号、TikTok、LinkedIn等数十个主流渠…...
瑞芯微刷机工具(RKDevTool)/瑞芯微刷机驱动(DriverAssitant)_多个版本下载及教程分享
瑞芯微刷机工具(RKDevTool)/瑞芯微刷机驱动(DriverAssitant)_多个版本下载及教程分享 适合(处理器是RK字母开头的芯片),比如RK3128、RK3188、RK3229、RK3288、RK3368、RK3328、RK3399、RK3528、RK3568、RK3566、RK3588等等瑞芯微芯…...
面试被问烂的20道编程基础题,你必须全会,不然别去面试
文章目录前言一、Python基础篇(6道)1. Python中list和tuple有什么区别?2. Python 3.7之后普通dict已经有序了,那OrderedDict还有存在的必要吗?3. Python中的深拷贝和浅拷贝有什么区别?4. Python中的*args和…...
实测MPU6050低功耗电流:从Sleep到Cycle模式,不同唤醒频率下功耗到底差多少?
MPU6050低功耗模式实测:从微安级电流到唤醒策略的硬件优化指南 当你的智能手环在手腕上安静沉睡时,MPU6050这颗运动传感器正在以微安级的电流维持着生命体征——这不是魔法,而是现代嵌入式设计中精妙的低功耗艺术。作为硬件工程师,…...
计算机毕业设计:Python医疗文本挖掘与可视化决策平台 Flask框架 随机森林 机器学习 疾病数据 智慧医疗 深度学习(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
中兴光猫工厂模式解锁终极指南:3步开启Telnet高级权限
中兴光猫工厂模式解锁终极指南:3步开启Telnet高级权限 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫工厂模式解锁工具zteOnu是一款专为网络爱好者和技术人员设计…...
STM32CubeMX实战指南:基本定时器中断配置与精准延时应用
1. 认识STM32基本定时器 第一次接触STM32定时器时,我完全被各种类型的定时器搞晕了。直到后来才发现,基本定时器其实是最好上手的。STM32F1系列通常包含TIM6和TIM7两个基本定时器,它们就像电子表里的秒表功能 - 只能计时,没有花哨…...
