Linux|centos7 Prometheus的自动服务发现 一(文件发现机制)

news2025/8/3 19:57:12

前言:

Prometheus作为一个监控神器,深受大家的喜爱,那么如何使用它是一个问题,如何用好它又是一个问题了。

本文以centos7操作系统下搭建的Prometheus server为例,讲解基于文件发现新的采集器。

一,

Prometheus的配置文件

第一,

通常的,不管是哪种服务都是有且仅有一个主配置文件,例如MySQL的主配置文件是my.cnf ,各个部署安装教程里也都是所有的配置写到这一个配置文件内。

说到底,这么做也是对的,毕竟一个配置文件便于管理嘛,毕竟根据MySQL服务的特点来说,不到100行的配置文件属实是有点小的。

那么,Prometheus的主配置文件就不同了,如果是仅仅几个服务器的监控,无所谓喽,例如,仅仅监控三台的包含node_exporter的配置文件:

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
 
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
 
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
 
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
 
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
 
    static_configs:
      - targets: ["192.168.217.24:9090"]  #本机IP+端口,其它的不用改
      - targets: ["192.168.217.25:9090"] 
      - targets: ["192.168.217.26:9090"] 

那么,问题来了,如果是有上百台的服务器都安装了node_exporter收集器,然后这个Prometheus server要监控它们,是不是就要写几百个      - targets: ["192.168.217.24:9090"] 了?不仅仅是node_exporter收集器,假设这上百个服务器里有几十个MySQL,那么,Prometheus的配置文件是不是还要把几十个mysqld_exporter 写进来?还有其他的需要监控的,比如nginx,那么,又要增加写入多少配置呢?

如此的话,这个配置文件将会非常的臃肿(一般情况下,我们认为一个配置文件的内容不应该超过100行,否则,我们应该认为这个配置是不便于管理的)。

第二,

配置文件修改后生效的问题

一般情况下,任何服务的主配置文件都是和服务的启停脚本绑定的,这意味着如果配置文件修改了,要看到修改后的效果必须要重启服务,Prometheus也是如此(例如,nginx 增加一个反向代理配置,是不是需要重新启动一下nginx服务或者 至少reload一下服务,才可以看到反向代理的效果?)

要不说Prometheus是神器呢,这个问题在普罗米修斯这里不在是问题了。Prometheus贴心的给准备了服务自动发现功能。

文件自动发现概念:

可以通过 watch 一组本地的目标文件来获取抓取目标以及标签信息,这就是基于文件的服务发现方式。

该方式提供了一种更通用的方式来配置静态目标,它读取一组包含零个或多个 <static_config> 列表的文件,对所有定义的文件的变更通过磁盘监视被检测到并立即应用,目标文件可以以 YAML或 JSON 格式,YAML格式的如下:

  1. - targets:

  2. [ - '<host>' ]

  3. labels:

  4. [ <labelname>: <labelvalue> ... ]

三,

如何实现文件自动发现

编辑Prometheus的主配置文件:末尾添加如下:

这里使用了通配符,但也可以使用绝对路径,指定单一文件,这个路径需要绝对存在,

多说一句,在192.168.217.19/20/20/22 这四台服务器都已经安装并启动了node_exporter服务。


cat /usr/local/prometheus/prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label  to any timeseries scraped from this config.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.217.22:9090"]  #本机IP+端口,其它的不用改

  - job_name: "node-exporter"
    file_sd_configs: 
      - files: ['/opt/promethes/files-sd/*.yml'] #自定义的文件存放路径和要发现的文件类型
        refresh_interval : 5s #发现文件的刷新时间为5秒,这里是为了更快速的测试到

根据以上配置,需要新建目录如下:

mkdir -p /opt/promethes/files-sd

重启Prometheus服务:

systemctl daemon-reload && systemctl restart prometheus

此时,我们在/opt/promethes/files-sd目录下根据自己的需求新建文件,文件的后缀名必须是前面定义的yml,Prometheus才可以识别到:

注意,标签可以自定义任意的,但最好定义的有一定意义

cat >/opt/promethes/files-sd/node-exporter2.yml <<eof
- targets: ['192.168.217.20:9100']
  labels:
    job: node2
eof

OK,此时的Prometheus server不再需要重启了,可以立刻通过Prometheus的web管理端看到,那么,依法炮制其它三个文件,内容如下:

cat >/opt/promethes/files-sd/node-exporter2.yml <<eof
- targets: ['192.168.217.20:9100']
  labels:
    job: node2
eof


cat >/opt/promethes/files-sd/node-exporter3.yml <<eof
- targets: ['192.168.217.21:9100']
  labels:
    job: node3
eof


cat >/opt/promethes/files-sd/node-exporter4.yml <<eof
- targets: ['192.168.217.21:9100']
  labels:
    job: node4
eof

打开Prometheus的web管理端,查看Status===》Service Discovery,应该是能够看到如下:

 

OK,假设某天节点192.168.217.19损坏了,开不了机了,那么,将其提出Prometheus的监控范围也就非常简单了,把对应节点的配置文件改个名称就好了:

mv node-exporter1.yml node-exporter1.yml-bak

再次回到web管理界面,大概等待5秒(上面定义的刷新时间),可以看到相关的node1的node_exporter已经没有了:

​​​​​​​

 

总结:

基于文件的服务发现有如下优点:

1,减少主配置文件,防止配置文件过于臃肿

2,通过文件解耦服务,便于服务动态改动,不需要重启Prometheus,如果Prometheus的监控服务非常多的话,避免其它的服务受到因服务重启而造成的影响。

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

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

相关文章

【FLASH存储器系列十二】Nand Flash芯片使用指导之二

目录 1.1 芯片指令集 1.2 READ PAGE&#xff08;00h–30h&#xff09; 1.3 READ PAGE CACHE SEQUENTIAL (31h) 1.4 READ PAGE CACHE RANDOM (00h-31h) 1.5 PROGRAM PAGE&#xff08;80h-10h&#xff09; 1.6 PROGRAM PAGE CACHE (80h-15h) 1.7 ERASE BLOCK (60h-D0h) 上…

pytorch深度学习实战lesson26

第二十六课 GoogLeNet 这节课学习Googlenet &#xff0c; 虽然 nin 现在几乎没有被使用&#xff0c;但是 Googlenet 还是在大量的被使用。在比如说 Google 内部当然是用的挺多的&#xff0c;在外面也是被经常使用。这个网络当时候出来的时候也是吓了大家一跳。 如上图所示&…

到底该怎么学python啊?

前言 大家都说找工作有金九银十&#xff0c;经过了金九银十之后&#xff0c;很多小伙伴都纷纷入职了各家企业&#xff0c;在各个企业中扮演者不同的角色&#xff0c;其中我接触最多的就是算法工程师和Python开发工程师&#xff0c;也跟其他企业的相关技术负责人交流过&#xf…

11月25日:tp框架中的架构,配置,路由,控制器

tp框架的主要内容 架构&#xff1a; https://static.kancloud.cn/manual/thinkphp5/118010 配置&#xff1a; 配置文件主要位置 可以使用Config::load()调用thinkphp中的静态方法&#xff0c;显示出config.php的主要内容 路由&#xff1a; 图中可见 使用url::调用静态方法…

Spring Boot集成Easypoi导出Excel

目录 1.引入Maven依赖 2.实体类属性加上Excel注解 3.导出示例 4.导出结果 5.注解Excel说明 1.引入Maven依赖 <!--easypoi依赖&#xff08;表格导入导出&#xff09;--> <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-sp…

【愚公系列】2022年11月 数据库-数据库文档生成工具SmartSQL使用

文章目录前言一、数据库文档生成工具SmartSQL使用1.SmartSQL的功能介绍2.运行3.连接数据库4.分组管理5.数据表相关功能6.导入导出7.文档截图7.1 CHM文档7.2 MD文档ABTABAC_MAPPING 7.3 EXCEL文档7.4 PDF文档7.5 HTML文档7.6 XML文档7.7 JSON文档前言 SmartSQL 是一款方便、快捷…

Photographic Tone Reproduction for Digital Images

Abstract 经典的摄影任务是将现实世界亮度的潜在高动态范围映射到摄影印刷品的低动态范围。将数字图像映射到低动态范围的打印或屏幕的计算机图形从业者也面临着这种音调再现问题。本文介绍的工作利用了经过时间考验的摄影实践技术来开发新的色调再现算子。特别是&#xff0c;…

进程的调度

目录 1. 进程的概念 2.进程是如何被调度的 2.1描述 2.2 组织 2.3 PCB中描述的进程特征 2.4 进程调度的相关属性&#xff08;接2.3&#xff09; 3. 内存管理 1. 进程的概念 一个跑起来的程序就称之为进程(没跑起来就不是进程) 进程是操作系统分配资源的基本单位。 2.进程…

说说原型(prototype)、原型链

1、原型 prototype 和 proto 每个对象都有一个__proto__属性&#xff0c;并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor指向构造函数本身 看一下代码就清楚了 function Person(nick, age){this.nick nick;this.…

数据结构学习笔记(Ⅳ):串

目录 1 串 1.1 定义与基本操作 1.定义 2.基本操作 1.2 串的存储结构 1.顺序存储 2.链式存储 3.基于顺序存储实现基本操作 2 串的朴素模式匹配算法 2.1 朴素模式匹配算法 2.2 KMP算法 1.优化思路 2.计算next数组 2.3 KMP算法优化 1 串 1.1 定义与基本操作 1.定义…

02.OpenWrt-进入开发板系统

02.OpenWrt-进入开发板系统 进入系统就是连接到系统shell,可是输入命令.说到shell第一个想到windows系统的PowerShell,在windows系统上多使用图形界面的方式进行与系统交互,毕竟windows的精髓就是图形界面,很少使用PowerShell命令.其实PowerShell的功能也非常强大,有时候记住一…

Flutter高仿微信-第38篇-单聊-转账

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取小视频的部…

【C++】Cmake使用教程(看这一篇就够了)

文章目录引言一 环境搭建二 简单入门2.1 项目结构2.2 示例源码2.3 运行查看三 编译多个源文件3.1 在同一个目录下有多个源文件3.1.1 简单版本3.1.1.1 项目结构3.1.1.2 示例代码3.1.1.3 运行查看3.1.2 进阶版本3.1.2.1 项目结构3.1.2.2 示例源码3.1.2.3 运行查看3.2 在不同目录下…

热门编程语言那么多,该选择哪个

编程语言那么多&#xff0c;该怎么选呢&#xff1f;无论是对找工作、还是打算转行新领域的同学们&#xff0c;起初都会有这样的困扰。这时候了解清楚编程语言的种类&#xff0c;到底该选哪个方向&#xff1f;将来能从事哪些岗位的工作&#xff1f;就比较重要了。与其盲目随从他…

CAS号:376364-38-4,rCRAMP (rat)

rCRAMP (rat) 是一种大鼠组织蛋白酶相关的抗菌肽&#xff0c;有助于大鼠脑肽/蛋白质提取物的抗菌活性。rCRAMP (rat) 是大鼠中枢神经系统先天免疫系统的关键参与者。rCRAMP (rat) is the rat cathelin-related antimicrobial peptide. rCRAMP (rat) contributes to the antibac…

计算机网络协议------从入门到深化

计算机网络通信 什么是通信协议 简单来说&#xff0c;通信协议就是计算机之间通过网络实现通信时事先达成 的一种“约定”&#xff1b;这种“约定”使那些由不同厂商的设备&#xff0c;不同CPU及不 同操作系统组成的计算机之间&#xff0c;只要遵循相同的协议就可以实现通 信。…

数据治理容易走进哪些误区?

在业界&#xff0c;大家都为如何做好数据治理而感到困惑。数据治理工作一定要先摸清楚数据的家底&#xff0c;规划好路线图&#xff0c;再进行决策。不然很容易走进误区中&#xff0c;无法自拔。下面总结了数据治理的7个常见误区&#xff0c;并给出一定建议&#xff0c;希望给予…

ERD Online 4.0.3_fix 元数据在线建模(免费、私有部署)

❝ 修复数据源导入的元数据&#xff0c;在没有中文注释修改的时候&#xff0c;导致表消失修复页面刷新导致404修改是否在关系图中显示的提示一键部署增加两种部署方式&#xff1a;IPPORT、DOMAIN增加手动部署方式、极大程度的实现部署定制化❞以 「root」 用户登录 Linux 主机执…

面试:dumpsys meminfo 内存信息含义

查看内存信息&#xff1a; adb shell dumpsys meminfo dumpsys meminfo显示的信息如图所示&#xff1a; 这里仅介绍我们需要重点关注的字段&#xff1a; Dalvik Heap&#xff1a;虚拟机占用的内存&#xff0c;可以理解为Java层占用的内存。Native Heap&#xff1a;Native层占…

python 循环引用的解决方法

目录 1、问题描述 2、原因 3、示例 4、解决办法 1、问题描述 编写python代码&#xff0c;运行中出现了&#xff1a;‘most likely due to a circular import ’ 这样的报错。 2、原因 循环引用问题&#xff0c;即A引用了B&#xff0c;B又引用了A&#xff0c;造成循环引用…