Rocky Linux 9.6 环境下,Prometheus + Grafana 生产级安装手册
(适用于 MySQL + sysbench 性能测试场景,可直接照做)。
📌 一、Prometheus + Grafana 简要介绍(摘要版)
Prometheus
开源的监控与告警系统,由 CNCF 维护。
核心特点:
- 拉取式(pull)采集模型
- 强大的 PromQL 查询语言
- 内置 时间序列数据库(TSDB)
- 生态完善:node_exporter、mysqld_exporter 等丰富插件
非常适合监控系统、MySQL、容器等指标。
Grafana
最流行的可视化工具,可以将 Prometheus 的指标以:
- 图表
- 仪表盘
- 大屏
形式展示,支持告警、分享和权限管理。
Prometheus 负责"收集数据",Grafana 负责"展示数据",两者常搭配构建完整监控平台。
📌 二、安装架构
本教程包含组件:
| 组件 | 用途 |
|---|---|
| node_exporter | 采集服务器 CPU/内存/磁盘/网络等系统指标 |
| mysqld_exporter | 采集 MySQL 指标 |
| Prometheus | 汇总并存储 metrics |
| Grafana | 展示监控图表 |
📌 三、安装 Prometheus(Rocky 9.6)
1. 创建用户
bash
sudo useradd --no-create-home --shell /bin/false prometheus
这个命令用于在 Linux 系统中创建一个不可登录的服务专用账户,常用于运行后台服务(如 Prometheus 监控)。各参数含义如下:
sudo:以管理员权限执行命令useradd:创建新用户的命令--no-create-home:不为该用户创建/home/prometheus主目录(服务账户通常不需要)--shell /bin/false:将登录 Shell 设为/bin/false,禁止该用户通过终端登录系统(无交互式 shell)prometheus:创建的用户名
实际效果
创建的是一个系统账户(默认 UID < 1000),专门用于运行 Prometheus 服务进程。这样做的好处是:
- 安全隔离:服务以低权限用户运行,即使被攻击也不会波及整个系统
- 无法登录:防止恶意者通过该账户登录系统
- 无个人数据:不占用 home 目录空间
2. 下载 Prometheus 包
bash
cd /opt
curl -LO https://github.com/prometheus/prometheus/releases/latest/download/prometheus-*.linux-amd64.tar.gz
tar -xzf prometheus-*.linux-amd64.tar.gz
mv prometheus-*.linux-amd64 prometheus
3. 创建目录
bash
mkdir -p /etc/prometheus /var/lib/prometheus
4. 拷贝二进制文件
bash
cp /opt/prometheus/prometheus /usr/local/bin/
cp /opt/prometheus/promtool /usr/local/bin/
chown prometheus:prometheus /usr/local/bin/prometheus
chown prometheus:prometheus /usr/local/bin/promtool
5. 拷贝配置文件
bash
cp -r /opt/prometheus/consoles /etc/prometheus
cp -r /opt/prometheus/console_libraries /etc/prometheus
📌 四、配置 Prometheus
创建配置文件:
bash
nano /etc/prometheus/prometheus.yml
内容:
yaml
global:
scrape_interval: 5s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
📌 五、配置 systemd 服务
bash
nano /etc/systemd/system/prometheus.service
内容:
ini
[Unit]
Description=Prometheus Monitoring
After=network.target
[Service]
User=prometheus
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
启动:
bash
systemctl daemon-reload
systemctl enable --now prometheus
systemctl status prometheus
访问:
http://IP:9090
📌 六、安装 Node Exporter(采集系统指标)
bash
cd /opt
curl -LO https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
tar -xzf node_exporter-*.linux-amd64.tar.gz
mv node_exporter-*.linux-amd64 node_exporter
cp node_exporter/node_exporter /usr/local/bin/
Systemd 单元:
bash
nano /etc/systemd/system/node_exporter.service
ini
[Unit]
Description=Node Exporter
[Service]
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
启动:
bash
systemctl daemon-reload
systemctl enable --now node_exporter
访问测试:
http://IP:9100/metrics
📌 七、安装 MySQL Exporter(mysqld_exporter)
下载:
bash
cd /opt
curl -LO https://github.com/prometheus/mysqld_exporter/releases/latest/download/mysqld_exporter-*.linux-amd64.tar.gz
tar -xzf mysqld_exporter-*.linux-amd64.tar.gz
mv mysqld_exporter-*.linux-amd64 mysqld_exporter
cp mysqld_exporter/mysqld_exporter /usr/local/bin/
1. 创建 MySQL 授权账号
登录 MySQL:
sql
CREATE USER 'exporter'@'localhost' IDENTIFIED BY '123456';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
FLUSH PRIVILEGES;
2. 配置账号文件
bash
nano /etc/.mysqld_exporter.cnf
内容:
ini
[client]
user=exporter
password=123456
权限:
bash
chmod 600 /etc/.mysqld_exporter.cnf
3. systemd 服务
bash
nano /etc/systemd/system/mysqld_exporter.service
内容:
ini
[Unit]
Description=MySQL Exporter
[Service]
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf=/etc/.mysqld_exporter.cnf \
--web.listen-address=:9104
[Install]
WantedBy=multi-user.target
启动:
bash
systemctl daemon-reload
systemctl enable --now mysqld_exporter
📌 八、安装 Grafana(官方仓库)
1. 添加 Grafana 仓库
bash
sudo tee /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=Grafana OSS
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF
2. 安装 Grafana
bash
sudo dnf install grafana -y
3. 启动 Grafana
bash
systemctl enable --now grafana-server
systemctl status grafana-server
访问:
http://IP:3000
默认账号:admin / admin
📌 九、Grafana 添加 Prometheus 数据源
进入 Grafana → Configuration → Data Sources → Add data source
选择 Prometheus
URL 填:
http://localhost:9090
保存。
📌 十、自带 MySQL + Node 完整仪表盘导入
推荐直接导入官方模板:
| 类型 | Grafana Dashboard ID |
|---|---|
| Node Exporter 全量监控 | 1860 |
| MySQL Exporter 监控 | 7362 |
| Percona MySQL 大盘 | 7371 |
导入方式:
Grafana → Dashboard → Import → 输入 ID。
📌 结语
至此,你已经完成:
✔ Prometheus 安装
✔ Node Exporter 安装
✔ MySQL Exporter 安装
✔ Grafana 安装
✔ 监控指标接入
✔ 导入成熟 MySQL 监控大盘