在当今高度动态和复杂的IT环境中,有效的监控系统对于维护服务稳定性和性能至关重要。Prometheus作为一款开源的监控报警系统,因其灵活性、可扩展性以及丰富的生态系统而在业界广受欢迎。本文将指导读者如何在Rocky Linux 9上部署Prometheus,从零开始搭建一个基础的监控框架,从而能够监控系统和应用程序的健康状况。
从 Prometheus 官网下载二进制文件进行部署
Releases : https://github.com/prometheus/prometheus/releases/tag/v2.53.0
[root@dev-rocky9-shanghai-area1 packages]# wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz # 从 Prometheus 的官方网站下载适用于 Linux 的二进制文件 2.53.0 / 2024-06-16 LTS Release notes
[root@dev-rocky9-shanghai-area1 packages]# tar xvf prometheus-2.53.0.linux-amd64.tar.gz # 解压文件
[root@dev-rocky9-shanghai-area1 packages]# mkdir -p /usr/local/prometheus/
[root@dev-rocky9-shanghai-area1 packages]# mv prometheus-2.53.0.linux-amd64/* /usr/local/prometheus/ # 移动到程序部署规划位置
创建用户和组
[root@dev-rocky9-shanghai-area1 packages]# groupadd prometheus
[root@dev-rocky9-shanghai-area1 packages]# useradd -r -g prometheus -s /sbin/nologin prometheus
设置文件和目录的所有权
[root@dev-rocky9-shanghai-area1 packages]# chown -R prometheus:prometheus /usr/local/prometheus/prometheus
[root@dev-rocky9-shanghai-area1 packages]# chown prometheus:prometheus /etc/prometheus/prometheus.yml
[root@dev-rocky9-shanghai-area1 packages]# chown -R prometheus:prometheus /var/lib/prometheus/
设置适当的权限
[root@dev-rocky9-shanghai-area1 packages]# chmod 750 /usr/local/prometheus/prometheus
[root@dev-rocky9-shanghai-area1 packages]# chmod 640 /etc/prometheus/prometheus.yml
[root@dev-rocky9-shanghai-area1 packages]# chmod 750 /var/lib/prometheus/
部署nginx-prometheus-exporter收集度量数据
[root@dev-rocky9-shanghai-area1 packages]# go install github.com/nginxinc/nginx-prometheus-exporter@latest go: github.com/nginxinc/nginx-prometheus-exporter@latest: module github.com/nginxinc/nginx-prometheus-exporter: Get "https://proxy.golang.org/github.com/nginxinc/nginx-prometheus-exporter/@v/list": dial tcp 142.251.42.241:443: connect: connection timed out
[root@dev-rocky9-shanghai-area1 packages]# tar -zxvf nginx-prometheus-exporter_1.1.2_linux_amd64.tar.gz # wget https://github.com/nginxinc/nginx-prometheus-exporter/releases
[root@dev-rocky9-shanghai-area1 packages]# vim /etc/systemd/system/nginx-prometheus-exporter.service
[Unit]
Description=nginx-prometheus-exporter
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/data/packages/nginx-prometheus-exporter -nginx.scrape-uri=http://203.0.113.128
[Install]
WantedBy=multi-user.target
[root@dev-rocky9-shanghai-area1 packages]# systemctl daemon-reload
[root@dev-rocky9-shanghai-area1 packages]# systemctl enable nginx-prometheus-exporter --now
配置 Prometheus(任务与示例 01)
配置示例包含了Prometheus的基本配置,包括全局设置和数据抓取配置
[root@dev-rocky9-shanghai-area1 packages]# mkdir -p /etc/prometheus/
[root@dev-rocky9-shanghai-area1 packages]# cat /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s # 定义抓取目标频率,单位是秒,配置每15秒抓取一次数据
evaluation_interval: 15s # 定义规则评估频率,单位是秒,配置每15秒评估一次报警规则
scrape_configs: # 一组抓取配置,根据这些配置来抓取目标
- job_name: 'Prometheus_Service_Port_9090' # 定义了一个名为Prometheus_Service_Port_9090的抓取任务
static_configs: # 静态配置的目标列表,目标是直接抓取数据的地方
- targets: ['localhost:9090'] # 目标列表,将抓取本地主机上运行在9090端口上的Prometheus服务器自身的指标
- job_name: 'Nginx_Prometheus_Exporter_9113'
static_configs:
- targets: ['203.0.113.128:9113'] # nginx-prometheus-exporter 的默认端口是9113
创建 Systemd 服务
[root@dev-rocky9-shanghai-area1 packages]# vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.libraries /usr/local/prometheus/consoles/ \
--web.console.templates /usr/local/prometheus/consoles/
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
启动和验证 Prometheus
[root@dev-rocky9-shanghai-area1 packages]# systemctl daemon-reload
[root@dev-rocky9-shanghai-area1 packages]# systemctl start prometheus
访问 Prometheus UI
浏览器访问 Prometheus 的 Web UI,通常在 http://203.0.113.128:9090