外部普米集中监控多个Prometheus实例:Prometheus Agent 模式与Prometheus 联邦模式 超级详细

news2024/9/25 1:20:30

外部普米集中监控多个Prometheus实例

  • Prometheus Agent 模式-使用推送方式来监控
    • 1.外部Prometheus配置
        • 1.需要开放端口,在启动时,需要配置开放监听端口
        • 2.添加prometheus启动参数
        • 3.修改配置后重启prometheus即可
    • 2.各个节点的普米配置
        • 1.修改prometheus.yml
    • 测试是否成功
        • 遇到问题
          • 1.外部普米未开启远程写入功能
  • prometheus 联邦模式(联合允许 Prometheus 服务器从另一个 Prometheus 服务器抓取选定的时间序列)
    • 一、Prometheus 联邦配置说明
    • 二、 配置 Prometheus
    • 三、实例 2 配置
    • 四、实例3配置
    • 4.实例1最终配置
    • Prometheus 联邦验证结果
    • 遇到的问题
        • Prometheus 联邦模式拉取不到各个节点的数据
          • 如何确认job为何值?
  • 推拉分析
    • 推【Prometheus Agent 模式】
    • 拉【联邦模式】

在这里插入图片描述

Prometheus Agent 模式-使用推送方式来监控

1.外部Prometheus配置

1.需要开放端口,在启动时,需要配置开放监听端口
--web.enable-lifecycle --config.file=/usr/local/prometheus/prometheus.yml --log.level=warn --storage.tsdb.path=/prometheus 
--web.listen-address=0.0.0.0:9090 
--storage.tsdb.retention=30d 
--web.enable-remote-write-receiver
2.添加prometheus启动参数

--enable-feature=remote-write-receiver, 用于启用 Prometheus 的远程写入接收器功能

该功能使 Prometheus 实例能够接收来自其他 Prometheus 实例或监控系统的数据,并将其写入本地时间序列数据库中。通过启用远程写入接收器,可以实现集中式监控数据收集和存储,从而简化监控数据管理和分析过程。

具体来说,启用此功能的目的包括:

  • 数据聚合和中心化 :通过远程写入接收器,多个 Prometheus实例或其他监控系统可以将监控数据发送到单个集中式存储位置。这样可以更轻松地聚合和管理监控数据,并为用户提供统一的监控数据视图。
  • 数据备份和冗余 :将监控数据发送到多个 Prometheus 实例或存储系统可以提供数据备份和冗余。如果一个实例或存储系统发生故障,仍然可以从其他实例或系统中检索数据,确保数据的可用性和持久性。
  • 跨数据中心或云环境的监控 :在分布式环境中,可能存在多个数据中心或云环境,各自运行着不同的 Prometheus实例。启用远程写入接收器可以轻松地将不同地理位置或不同云环境中的监控数据集中到单个存储位置,实现统一的跨数据中心或云环境的监控管理。
  • 实现监控数据的归档和长期存储 :集中式存储位置可以更好地支持监控数据的归档和长期存储需求。通过启用远程写入接收器,可以将监控数据发送到专门的存储系统或服务,实现对监控数据的有效管理和利用。
3.修改配置后重启prometheus即可
docker restart prometheus

2.各个节点的普米配置

1.修改prometheus.yml
vi prometheus.yml 

remote_write:
  - url: http://192.168.1.1:9090/api/v1/write
    # 标签替换配置
    write_relabel_configs:
      - source_labels: [instance]  # 要替换的源标签
        target_label: instance     # 替换后的目标标签
        replacement: "192.168.1.91"      # 替换后的值,可以使用正则表达式

192.168.1.1:9090 外部普米的地址

write_relabel_configs的作用:在 Prometheus 的配置文件中,用于远程写入(remote_write)时对标签进行替换。具体来说,它可以用于以下情况:

  • 标签重命名 :有时,当将监控数据写入到远程存储或其他 Prometheus 实例时,可能需要对标签进行重命名以符合目标系统的要求。例如,源系统使用的标签名与目标系统不一致,需要将其映射到目标系统所需的标签名上。
  • 标签值替换 :在某些情况下,需要修改标签的值。例如,源系统中的标签值包含了敏感信息或不合规定的内容,需要在写入到远程存储之前将其替换为合适的值
  • 标签值修正 :有时,需要根据特定的规则或逻辑来修正标签的值。例如,可能需要基于标签的某些特征来调整其值,以便更好地匹配目标系统的要求或进行数据清洗。 在上述配置中,source_labels 指定了要替换的源标签,target_label 指定了替换后的目标标签,replacement指定了目标标签的替换值。通过这种方式,可以灵活地定义不同的标签替换规则,以满足远程写入的需求。

测试是否成功

访问外部的普米节点:http://192.168.1.1:9090/,会有监控的指标信息,搜索查看即可

在这里插入图片描述

遇到问题
1.外部普米未开启远程写入功能
root@test:etc/prometheus# curl -X POST -d "metric_name{label1=\"value1\", label2=\"value2\"} 1234567890" http://192.168.1.1:9090/api/v1/write
remote write receiver needs to be enabled with --web.enable-remote-write-receiver

需要在prometheus启动参数 --enable-feature=remote-write-receiver

prometheus 联邦模式(联合允许 Prometheus 服务器从另一个 Prometheus 服务器抓取选定的时间序列)

官方文档:https://prometheus.io/docs/prometheus/latest/federation/

–enable-feature=native-histograms

联邦有不同的使用场景。通常,它用于实现可伸缩的Prometheus监控,或将一个服务相关指标从一个Prometheus拉取到另一个中
为了扩展单个Prometheus的采集能力和存储能力,Prometheus引入了联邦概念。多个Prometheus节点组成两级联邦结构,上面一层是联邦节点,负责定时从下面的节点获取数据并汇总,下面的Promethes可以负责不同区域/不同服务的数据采集。
Prometheus 是一个强大的监控平台,它是针对容器和微服务的开源监控预警工具,功能稳健,而且现在很多大厂都在使用一套监控系统(像网易、360等)

一、Prometheus 联邦配置说明

本次我以三台 Prometheus 实例进行简单演示:
实例1:10.xxx.xxx.91/32
实例2:10.xxx.xxx.96/32
实例3:10.xxx.xxx.94/32
说明:实例 1 为主,实例2、实例3为从,实例 1 会从实例 2 、实例3采集数据,并最终在实例 1 进行整合。

二、 配置 Prometheus

1、实例 1 配置
在 Prometheus 实例(主)配置 Prometheus 实例(从)

vim prometheus.yml

  - job_name: 'prometheus-federate-xahmat'
    honor_labels: true
    metrics_path: '/federate'
    params:
     'match[]':
      - '{job=~".*"}'
    static_configs:
    - targets: ["公网IP:9090"]

params一些配置参考

    params:
      'match[]':    #match[]用指定查询条件,即只从其他Prometheus抓取符合条件的数据
      - '{job="prometheus"}'    #job用于匹配指定名称的job,这里表示抓取prometheus job对应的指标数据
      - '{__name__=~"job:.*"}'    #__name__表示匹配指定名称的指标数据,这里表示抓取以job开头的指标数据
      - '{job=~"node.*"}'    #抓取以node开头的job的指标

配置说明:

  • job_name:自定义工作名;
  • honor_labels:保持原标签不变;
  • metrics_path:匹URL(即配置完成后可通过此URL 来验证是否采集到实例 2 上的数据);
  • params:匹配(可进行正则匹配),下面的 {job=~“.*”} 采集所有来自实例 2的指标数据,根据实际情况自定义即可;
  • static_configs:即实例 2 的地址(IP+Port)这里的 IP 为实例 2 的公网 IP,如果有多个实例,依次往下添加即可。

三、实例 2 配置

实例 2 就是正常的配置,我这里配置的是blackbox-exporter的监控信息

 - job_name: 'blackbox-91'
    scrape_interval: 5s
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
          - '2.2.2.2'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '测试'
          sourcePlace: '10.2.2.91'
          targetPlace: '2.2.2.2'
      - targets:
          - '3.3.3.3'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '测试'
          sourcePlace: '10.2.2.91'
          targetPlace: '3.3.3.3'
    relabel_configs:
    - source_labels: ['__address__']
      target_label: __param_target
    - source_labels: ['__param_target']
      target_label: target
    - target_label: '__address__'
      replacement: '10.2.2.91:9115'
    - source_labels: ['__address__']
      target_label: instance
      regex: '(.*):.*'
      replacement: '${1}'

四、实例3配置

 - job_name: 'blackbox-94'
    scrape_interval: 5s
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
          - '3.3.3.93'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '生产机房'
          sourcePlace: '10.2.2.94'
          targetPlace: '3.3.3.93'
      - targets:
          - '10.2.2.93'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '生产机房'
          sourcePlace: '10.2.2.94'
          targetPlace: '10.2.2.93'

    relabel_configs:
    - source_labels: ['__address__']
      target_label: __param_target
    - source_labels: ['__param_target']
      target_label: target
    - target_label: '__address__'
      replacement: '10.2.2.94:9115'
    - source_labels: ['__address__']

4.实例1最终配置

- job_name: 'federate'
    scrape_interval: 5s
    honor_labels: true
    metrics_path: '/federate'
    params:
      'match[]':
         - '{job="blackbox-91"}'
         - '{job="blackbox-94"}'
    static_configs:
      - targets: ['10.2.2.91:60909','10.2.2.94:60909']

Prometheus 联邦验证结果

1、数据验证
在实例 1(主)上验证实例 2 的数据是否已经采集:

在这里插入图片描述

遇到的问题

Prometheus 联邦模式拉取不到各个节点的数据

Prometheus 联邦模式在使用过程中一直拉取不到节点的数据,经排查发现params:匹配的问题,最终改成抓取所有的可行,然后再根据具体的job配置这个参数

 params:
     'match[]':
      - '{job=~".*"}'
如何确认job为何值?

方式1:查看 Prometheus 目标页面:
在 Prometheus 的目标页面中,你可以查看当前由 Prometheus 监控的所有作业及其相关信息。你可以通过浏览器访问 Prometheus 的目标页面,通常 URL 是 http://<prometheus_ip>:<prometheus_port>/targets
在这里插入图片描述

方式2:检查 Prometheus 配置文件:
在 Prometheus 的配置文件中,通常会列出所有配置的作业及其详细信息。你可以查看 Prometheus 的配置文件(通常是 prometheus.yml)中的作业部分,以确认哪些作业正在被配置和监控。

在这里插入图片描述

推拉分析

推【Prometheus Agent 模式】

  • 网络问题 需要在各个节点配置外部prometheus 的地址 【可由页面下发外部普米的地址】
  • 只需要外部普米开放端口,各个分支不需要【配置开放监听端口0.0.0.0】
  • 需要在各个分支配置外部普米的地址
  • 外部的prometheus启动参数需要加–enable-feature=remote-write-receiver,用于启用 Prometheus 的远程写入接收器功能

拉【联邦模式】

  • 需要考虑每个分支采集的时间间隔
  • 中心节点配置所有采集点的IP 端口 ,手动配置,当分支IP改变后,需要手动调整
  • 各个节点prometheus需要开放端口,在启动时,需要配置开放监听端口 0.0.0.0

具体使用哪种模式根据市局情况而定

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

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

相关文章

夜神模拟器如何配置BurpSuite抓包及安装Xposed框架

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog 0x00 前言 夜神模拟器安卓 7 以上直接安装证书是无法成功抓取 App 的 HTTPS 数据包的&#xff0c;因为安…

FTP服务器部署

1、FTP 概述 1 &#xff09; FTP &#xff1a; File Transfer Protocol &#xff1a;文件传输协议 2 &#xff09; FTP 协议包括两个组成部分&#xff08; C/S) FTP 服务器 FTP 客户端 3 &#xff09; FTP 服务器用来存储文件 , 客户端电脑可以使用 FTP 客户端软件 来进行…

005、Dynamo与Revit API之间的转换

今天来聊聊 Dynamo 与 Revit 之间图元转换的基础知识&#xff0c;这些需要你牢牢记住哦&#xff0c;不然在 Python script 中写代码&#xff0c;经常会报错的~ 通常来讲&#xff0c;所有来自 Dynamo 节点的几何图形都不是 Revit 的几何对象&#xff0c;所以它们需要与 Revit AP…

Unity 布局元素Layout Element

Layout Element是一种用于控制UI元素在布局组件&#xff08;如Horizontal Layout Group、Vertical Layout Group、Grid Layout Group、Content Size Fitter和Aspect Ratio Fitter&#xff09;中的大小和位置的组件。Layout Element组件可以附加到UI元素上&#xff0c;以便在布局…

牛客题霸-SQL篇(刷题记录三)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 以下内容是…

贪心算法相关题目

文章目录 1. 什么是贪心&#xff1f;2. 分发饼干3. 摆动序列4. 最大子数组和5. 买卖股票的最佳时机 II6. 跳跃游戏7. 跳跃游戏 II8.K 次取反后最大化的数组和9.加油站10.分发糖果11.柠檬水找零 1. 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而…

了解Spring:Java开发的利器

Spring是一款开源的轻量级Java开发框架&#xff0c;旨在提高开发人员的效率和系统的可维护性。本文将介绍Spring的基本概念、使用优势、设计模式以及与Spring MVC和Spring Boot的关联。 什么是Spring&#xff1f; Spring是一款开源的轻量级Java开发框架&#xff0c;它由多个模…

毕业论文降重(gpt+完美降重指令),sci论文降重gpt指令——超级好用,重复率低于4%

1. 降重方法&#xff1a;gpt降重指令 2. gpt网站 https://yiyan.baidu.com/ https://chat.openai.com/ 3. 降重指令——非常好用&#xff01;&#xff01;sci论文&#xff0c;本硕大论文都可使用&#xff01; 请帮我把下面句子重新组织&#xff0c;通过调整句子逻辑&#xff0…

Java研学-SpringBoot(二)

二 Spring Boot 介绍 1 简介 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;主要目标是简化Spring应用程序的配置和部署过程&#xff0c;减少开发者在项目搭建和配置上的工作量&#xff0c;让开发者能够更专注于业务逻辑的实现。它使用特定的方式来进行配置&#xff0…

Redis客户端和插件

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 REmote DIctionary…

SpringCloudAlibaba之Nacos Config

1、服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相对分散。在一个微服务架构下&#xff0c;配置文件会随着微服务的增多变的越来越多&#xff0c;而且分散在各个微服务中&#xff0c;不好统一配置和管理。配置文件无法区分环境…

Linux 进程通信:命名管道、共享内存

目录 一、命名管道 1、概念 2、特点 3、原理 4、创建 5、匿名管道与命名管道的区别 6、命名管道的打开规则 二、命名管道—实现客户端和服务器之间的通信 1、Makefile 2、comm.hpp 3、Log.hpp 4、server.cxx 5、client.cxx 运行测试&#xff1a; 三、system V…

备战蓝桥杯Day35 - 动态规划 - 01背包问题

问题描述 隐含前提&#xff1a; 1.物体是不可分的&#xff0c;要么装&#xff0c;要么不装&#xff0c;不能只装一部分。 2.物体顶多使用一次。 动态规划思路 我在b站上看的闫氏dp分析大法的视频&#xff0c;他对dp问题做了总结归纳。 从集合的角度分析dp问题。求出有限集…

C语言中的联合体和枚举

联合体 联合体的创建 联合体的关键字是union union S {char a;int i; };除了关键字和结构体不一样之外&#xff0c;联合体的创建语法形式和结构体的很相似&#xff0c;如果不熟悉结构体的创建&#xff0c;可以看一下我上一篇的博客关于结构体知识的详解。 联合体的特点 联合…

数据库管理开发工具Navicat for MySQL Mac版下载

Navicat for MySQL&#xff08;Mac版&#xff09;是一款强大的数据库管理开发工具&#xff0c;专为MySQL设计。它提供直观的用户界面&#xff0c;支持数据建模、查询构建、数据传输等功能&#xff0c;帮助用户轻松管理数据库。其特点包括高效的数据处理能力、安全的数据传输机制…

力扣74---搜索二维矩阵

目录 题目描述&#xff1a; 思路&#xff1a; 代码&#xff1a; 题目描述&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 targ…

红外遥控器的使用和详细解释

infrared.c #include "infrared.h"/* 红外 --- PA8*/void Infrared_Init(void) {GPIO_InitTypeDef GPIO_InitStruct; EXTI_InitTypeDef EXTI_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;//使能SYSCFG时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, E…

深入探索php中Laravel框架的技术架构

在当今Web开发领域&#xff0c;Laravel框架作为一款强大而受欢迎的PHP框架&#xff0c;以其优雅的语法、丰富的功能和高效的性能而备受开发者青睐。本文将深入探讨Laravel框架的技术架构&#xff0c;揭示其内部设计和工作原理&#xff0c;帮助读者更好地理解这个流行框架的运作…

学习vue3第十节(插槽v-slot)

本节主要介绍一下 v-slot 插槽指令&#xff0c;以及插槽相关内容 1、定义&#xff1a; 子组件给父组件提供使用的一个位置&#xff0c;使用<slot></slot>表示&#xff0c;父组件可以在这个位置填充任何代码&#xff1b; 2、默认插槽 匿名插槽&#xff1a;会自定…

Android 项目新建问题总结

title: Android 项目新建问题总结 search: 2024-03-24 tags: “#Android 项目新建问题总结” Android 项目新建问题总结 一、gradle 项目每次都自动下载依赖包到C盘 背景&#xff1a;idea 首次打开一个 gradle 项目&#xff0c;都会在 C 盘下载项目所需的依赖包&#xff0c;但…