一、Prometheus简介

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。

Prometheus的特点

· 多维度数据模型。

· 灵活的查询语言。

· 不依赖分布式存储,单个服务器节点是自主的。

· 通过基于HTTP的pull方式采集时序数据。

· 可以通过中间网关进行时序列数据推送。

· 通过服务发现或者静态配置来发现目标服务对象。

· 支持多种多样的图表和界面展示,比如Grafana等

Promtheus的时序数据库在存储了大量的数据后,每次重启Prometheus进程的时间会越来越慢。而在日常运维工作中会经常调整Prometheus的配置信息,Prometheus提供了在运行时热加载配置信息的功能。

Promtheus配置热加载有两种方式:

第一种:查看Prometheus的进程id,发送SIGHUP信号

kill -HUP <pid>

第一种热加载方式配置

1、配置prometheus.yml

[root@localhost ~]# vim /usr/lib/systemd/system/prometheus.service

# 添加ExecReload=/bin/kill -HUP $MAINPID

[Unit]
Description=prometheus
Documentation=https://prometheus.io/docs/introduction/overview
Wants=network-online.target
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

2、重载Prometheus

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl reload prometheus

第二种:发送一个POST请求到/-/reload,需要在启动时配置--web.enable-lifecycle参数

第二种热加载方式配置

1、配置prometheus.yml

[root@localhost ~]# vim /usr/lib/systemd/system/prometheus.service

# 添加参数--web.enable-lifecycle

[Unit]
Description=prometheus
Documentation=https://prometheus.io/docs/introduction/overview
Wants=network-online.target
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/usr/local/prometheus/data
Restart=on-failure

[Install]
WantedBy=multi-user.target

2、重启Prometheus

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl restart prometheus

三、Prometheus热加载演示

1、第一种热加载方式

1)修改前

2)修改后

[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml

# 新增一台主机192.168.0.195

3)重载Prometheus

[root@localhost ~]# systemctl reload prometheus

4)再次查看Prometheus

2、第二种热加载方式

1)修改前

2)修改后

[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml

# 新增一台主机192.168.0.198

3)热加载

# Prometheus本机执行

[root@localhost ~]# curl -X POST http://localhost:9090/-/reload

# 远程主机执行

4)再次查看Prometheus