当前位置: 首页 > news >正文

24.3 基于文件的服务发现模式

本节重点介绍 :

  • 基于文件的服务发现提供了一种配置静态目标的更通用的方法
  • 可以摆脱对特定服务发现源的依赖
  • 通常的做法是调用内部CMDB的接口获取target数据,打上标签,生成json文件发给prometheus采集

基于文件的服务发现模式

解决的问题

  • 之前手动配置了很多个traget
    • redis
    • mysql
    • blackbox
    • pushgateway
  • 手动配置维护成本高,还容易出错

基于文件的服务发现配置

  • 文档地址

特点

  • 基于文件的服务发现提供了一种配置静态目标的更通用的方法
  • 并充当了插入自定义服务发现机制的接口。
  • 摆脱对特定服务发现源的依赖
  • 只要能正确给出 json/yaml文件即可
  • 和服务树的最好匹配方案

yaml文件类型

  • yaml
YAML yaml - targets: [ - '<host>' ] labels: [ <labelname>: <labelvalue> ... ]
  • 举例
- targets:  - 172.20.70.205:9100- 172.20.70.215:9100labels:account: "aliyun-01"   region: "ap-south-1"

json文件类型

json [ { "targets": [ "<host>", ... ], "labels": { "<labelname>": "<labelvalue>", ... } }, ... ]
  • 举例
[{"targets": ["172.20.70.205:9100"],"labels": {"account": "aliyun-01","region": "ap-south-1","env": "prod","group": "inf","project": "monitor","stree_gpa": "inf.monitor.prometheus"}},{"targets": ["172.20.70.215:9100"],"labels": {"account": "aliyun-02","region": "ap-south-2","env": "prod","group": "inf","project": "middleware","stree_gpa": "inf.middleware.kafka"}}
]

下面来解读一下

  • targets 是一组实例地址的列表
  • labels 是这组实例的标签,应用到列表中所有实例
  • 如果想每个实例不同的标签,可以将targets列表保留一个实例即可
  • 标签可以自定义,下面举几个例子
    • account 代表公有云账户,多账户情况
    • region 代表区域
    • env 代表所属环境 prod代表生产,pre代表预发,test代表测试
    • group代表业务大组
    • project 代表项目
    • stree_gpa 代表服务树三级标签
  • 那么prometheus在采集对应target时就会将对应标签打入其metrics中
  • 为后续我们按照标签过滤提供方便

配置举例

  • files 代表 文件路径 支持通配符
  • refresh_interval 代表 文件刷新间隔
  - job_name: 'node_exporter'scrape_interval: 30sscrape_timeout: 10smetrics_path: /metricsscheme: httphonor_timestamps: falsefile_sd_configs:- files:- /opt/app/prometheus/sd/node_exporter.jsonrefresh_interval: 5m

改造为服务发现类型

  • 将 blackbox-http 和 node_exporter 改为文件发现
  • prometheus 配置
- job_name: 'blackbox-http'metrics_path: /probe# 传入的参数params:module: [http_2xx]  # Look for a HTTP 200 response.scrape_interval: 15sscrape_timeout: 10sscheme: httphonor_timestamps: falsefile_sd_configs:- files:- /opt/app/prometheus/sd/blackbox_http.jsonrefresh_interval: 2mrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 172.20.70.205:9115 - job_name: 'node_exporter'# metrics的path 注意不都是/metrics# 传入的参数scrape_interval: 30sscrape_timeout: 10sscheme: httphonor_timestamps: falsefile_sd_configs:- files:- /opt/app/prometheus/sd/node_exporter.jsonrefresh_interval: 2m
  • 创建sd目录
mkdir -pv /opt/app/prometheus/sd/
  • 写入json文件

cat <<EOF > /opt/app/prometheus/sd/node_exporter.json
[{"targets": ["172.20.70.205:9100"],"labels": {"name": "prome-master01","account": "aliyun-01","region": "ap-south-1","env": "prod","group": "inf","project": "monitor","stree_gpa": "inf.monitor.prometheus"}},{"targets": ["172.20.70.215:9100"],"labels": {"name": "prome-node01","account": "aliyun-02","region": "ap-south-2","env": "prod","group": "inf","project": "middleware","stree_gpa": "inf.middleware.kafka"}}
]
EOFcat <<EOF > /opt/app/prometheus/sd/blackbox_http.json
[{"targets": ["172.20.70.205:9115","http://prometheus.io","http://www.baidu.com","https://www.baidu.com"]}
]
EOF
  • reload prometheus
  • 观察target页面 和 sd结果页面
  • image.png
  • 修改文件 blackbox_http.json 新增 https://github.com/ 的探测
  • image.png
cat <<EOF > /opt/app/prometheus/sd/blackbox_http.json
[{"targets": ["172.20.70.205:9115","http://prometheus.io","http://www.baidu.com","https://www.baidu.com","https://github.com/"]}
]
EOFcurl -X POST http://localhost:9090/-/reload

本节重点总结 :

  • 基于文件的服务发现提供了一种配置静态目标的更通用的方法
  • 可以摆脱对特定服务发现源的依赖
  • 通常的做法是调用内部CMDB的接口获取target数据,打上标签,生成json文件发给prometheus采集

相关文章:

24.3 基于文件的服务发现模式

本节重点介绍 : 基于文件的服务发现提供了一种配置静态目标的更通用的方法可以摆脱对特定服务发现源的依赖通常的做法是调用内部CMDB的接口获取target数据&#xff0c;打上标签&#xff0c;生成json文件发给prometheus采集 基于文件的服务发现模式 解决的问题 之前手动配置…...

【Java】面向UDP接口的网络编程

【Java】面向UDP接口的网络编程 一. 基本通信模型二. APIDatagramSocketDatagramPacket 三. 回显服务器/客户端示例服务器客户端总结 一. 基本通信模型 UDP协议是面向数据报的&#xff0c;因此此处要构建数据报(Datagram)在进行发送。 二. API DatagramSocket DatagramSocke…...

SRS服务器搭建

1、配置 listen 1935; max_connections 1000; #srs_log_tank file; #srs_log_file ./objs/srs.log; daemon on; http_api { enabled on; listen 1985; } http_server { enabled on; listen 808…...

iMazing只能苹果电脑吗 Win和Mac上的iMazing功能有区别吗

在当今数字时代&#xff0c;管理和备份手机数据变得越来越重要。无论是转移照片、备份短信&#xff0c;还是管理应用程序&#xff0c;一个强大的工具可以大大简化这些操作。iMazing作为一款备受好评的iOS设备管理软件&#xff0c;已经成为许多用户的选择。但是&#xff0c;许多…...

ChatGPT可以分析股票吗?

结合国庆前大A股市的小波牛市以及今天的股市表现&#xff0c;我从多个角度为你提供一些分析和建议&#xff1a; 一、国庆前的小波牛市分析 国庆前&#xff0c;大A股市出现了一波小幅上涨&#xff0c;市场呈现出一些积极的信号&#xff1a; 政策面利好&#xff1a;政府出台了…...

Dockerfile搭建镜像

Dockerfile搭建镜像的优势与区别 引言 在现代软件开发与运维中&#xff0c;容器化技术日益普及&#xff0c;而Docker作为最流行的容器化平台之一&#xff0c;通过Dockerfile提供了一种灵活、自动化的方式来构建Docker镜像。Dockerfile使得镜像的构建过程可重复、可版本化&…...

Kubernetes-Kind篇-01-kind搭建测试集群

1、Kind 介绍 官方文档地址&#xff1a;https://kind.sigs.k8s.io/ github仓库地址&#xff1a;https://github.com/kubernetes-sigs/kind 国内镜像仓库地址&#xff1a;https://gitcode.com/gh_mirrors/ki/kind/overview kind 是一种使用 Docker 容器 nodes 运行本地 Kubern…...

在UniApp中高效处理大量文件请求的策略

在开发跨平台应用时&#xff0c;尤其是在使用UniApp这样的框架时&#xff0c;我们可能会遇到需要同时请求多个文件的情况。然而&#xff0c;不加节制地同时发起大量请求可能会带来严重的性能问题&#xff0c;如界面卡顿、内存溢出、网络带宽饱和等。本文将探讨如何在UniApp中高…...

docker compose入门4—常用命令

在使用 Docker Compose 管理多容器应用时&#xff0c;常见的命令帮助我们高效地管理容器的生命周期、服务、日志等。以下是一些常用的 Docker Compose 命令及其详细讲解&#xff1a; 1. docker-compose up 这个命令用于启动定义在 docker-compose.yml 文件中的服务。 用法&am…...

wps文本框文字居中对齐

直接点对齐里的水平居中&#xff0c;垂直居中是将文本框水平垂直居中&#xff0c;文字不会居中 将文本框里的文字居中&#xff1a; 垂直居中&#xff1a; 水平居中&#xff1a;...

注册信息页面

知识点&#xff1a; &#xff01;&#xff0b;Enter 直接生成前端基本框架 1.<h1></h1> (2,3,4,5) 表示各级标题 2.<form></form> 表单建立 3.<input type" "></input> 表格&#xff08;表单嵌套表格&#xff09; type属…...

详解Java中的BIO、NIO、AIO

1、 详解Java中的BIO、AIO、NIO 1.1、引言 IO流是Java中比较难理解的一个知识点&#xff0c;但是IO流在实际的开发场景中经常会使用到&#xff0c;比如Dubbo底层就是NIO进行通讯。本文将介绍Java发展过程中出现的三种IO&#xff1a;BIO、NIO以及AIO&#xff0c;重点介绍NIO。…...

CAN和CANFD如何转换和通信

随着科技的发展&#xff0c;汽车电子和工业领域中CAN通信需要承载数据量也越来越大&#xff0c;传统CAN通信有了向CANFD通信过渡的倾向。在实现过渡的过程中可能会出现自己设备是CAN通信&#xff0c;客户设备是CANFD通信的情况&#xff0c;或者自己设备是CANFD通信&#xff0c;…...

QDateTimeEdit Class

Header:#include qmake:QT += widgets Inherits:QAbstractSpinBox Inherited By:QDateEdit and QTimeEdit Public Types enum Section {NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, …, YearSection } flags SectionsProperties calendarPopu…...

Windows环境安装CentOS7

【注意】安装CentOS需要先安装Vmware虚拟机 【下载前准备】 一、下载CentOS 7镜像文件阿里云镜像开源&#xff0c;点击跳转 二、安装VMware&#xff08;17&#xff09;&#xff1a; a. 官网&#xff0c;点击跳转 b. 许可证&#xff1a;JU090-6039P-08409-8J0QH-2YR7F 安装V…...

用docker启动mysql步骤

以下是在 Docker 中启动 MySQL 的详细步骤&#xff1a; **一、拉取 MySQL 镜像 ** 1. 打开终端&#xff0c;确保 Docker 服务正在运行。可以使用以下命令检查 Docker 服务状态&#xff1a; sudo systemctl status docker 2. 使用以下命令拉取 MySQL 官方镜像&#xff1a; d…...

[Linux] Linux 初识进程地址空间 (进程地址空间第一弹)

标题&#xff1a;[Linux] Linux初识进程地址空间 个人主页水墨不写bug &#xff08;图片来源于AI&#xff09; 目录 一、什么是进程地址空间 二、为什么父子进程相同地址的变量的值不同 三、初识虚拟地址、页表 一、什么是进程地址空间 其实&#xff0c;在很久之前&#xf…...

力扣21~25题

21题&#xff08;简单&#xff09;&#xff1a; 分析&#xff1a; 按要求照做就好了&#xff0c;这种链表基本操作适合用c写&#xff0c;python用起来真的很奇怪 python代码&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, v…...

04. prometheus 监控 Windows 服务器

prometheus 监控 Windows 服务器 1. 下载安装 Windows_exporter 安装包下载&#xff1a;https://github.com/prometheus-community/windows_exporter/releases 下载 msi 版本&#xff0c;上传至要监控的 Windows 服务器&#xff0c;双击安装即可&#xff0c;exporter 会自动…...

【机器学习】——决策树以及随机森林

文章目录 1. 决策树的基本概念与结构1.1 决策树的构建过程 2. 决策树的划分标准2.1 信息增益&#xff08;Information Gain&#xff09;2.2 信息增益比&#xff08;Information Gain Ratio&#xff09;2.3 基尼指数&#xff08;Gini Index&#xff09;2.4 均方误差&#xff08;…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...