Prometheus基于文件的自动发现

文章目录
  1. 1. 一、自动发现服务
  2. 2. 二、配置
    1. 2.1. 步骤1 修改prometheus.yml文件
    2. 2.2. 步骤2 创建targets文件
  3. 3. 三、Rule的自动加载

一、自动发现服务

每次修改Prometheus配置文件都需要重载服务,未免有些麻烦,而自动发现服务就是为了解决这种麻烦事儿的,自动发现服务又分为好几种,其中基于文件的服务发现是最通用的方式。这种方式不需要依赖于任何的平台或者第三方服务。Prometheus会定时从文件中读取最新的Target信息,因此,我们可以通过任意的方式将监控Target的信息写入即可。

二、配置

步骤1 修改prometheus.yml文件

1
2
3
4
- job_name: 'file_sd_default'
file_sd_configs:
- files: ['/etc/prometheus/config/sd_config/*.yml']
refresh_interval: 5s
  • file_sd_configs:说明配置为基于文件的自动发现服务

  • files:文件存放位置

  • refresh_interval: 读取的周期

步骤2 创建targets文件

  • 创建文件

1
touch /etc/prometheus/config/sd_config/xxx.yml
  • 写入targets

1
2
- targets:
- 'localhost:9090'

如果需要添加验证,则需要在jobs添加

  • 修改prometheus.yml文件

1
2
3
4
5
6
7
8
scrape_configs:
- job_name: 'file_sd_node'
file_sd_configs:
- files: ['/etc/prometheus/config/sd_config/node/node.yml']
refresh_interval: 5s
basic_auth:
username: 用户名
password: 密码

通过这种方式,Prometheus会自动的周期性读取文件中的内容。当文件中定义的内容发生变化时,不需要对Prometheus进行任何的重启操作。

Targets可以通过Promethtusweb界面,Status > Targets查看

三、Rule的自动加载

Rule无法使用Targets的方式,推荐办法是在修改完Rule之后,使用以下命令进行配置的重新加载(不是重启)。

1
2
3
sudo kill -HUP $(pgrep prometheus)
# 或者使用curl方式
curl -X POST http://WEBIP/-/reload

HUP信号

  • 全称:Hang Up signal

  • 用途:当进程接收到HUP信号时,它通常会执行挂起操作,这通常意味着进程会关闭打开的文件描述符并重新读取其配置文件。对于许多守护进程(daemon)来说,HUP信号是一个请求进程重新加载配置文件的常用方式。

  • 常见使用场景:HUP信号常用于服务的平滑重启,特别是对于那些需要持续运行且不能轻易停止的服务。通过发送HUP信号,可以让服务在不中断的情况下重新加载配置。因此,当你执行sudo kill -HUP pgrep prometheus命令时,你实际上是在告诉系统向所有名为prometheus的进程发送一个HUP信号,请求它们重新加载配置文件。这对于Prometheus这样的监控服务非常有用,因为它允许管理员在不中断监控服务的情况下更新配置。