Rocky Linux 9 服务器监控从入门到部署:基于Prometheus+Grafana的实战配置(VMware虚拟机环境)

在VMware虚拟化环境中部署Rocky Linux 9服务器后,如何快速构建一套专业级的监控系统?本文将带您从零开始,在Rocky Linux 9上搭建完整的Prometheus+Grafana监控栈,实现服务器性能指标的可视化管理。这套方案特别适合需要监控本地开发环境或准备上云模板的运维工程师和DevOps团队。

1. 环境准备与基础配置

在开始部署监控系统前,需要确保Rocky Linux 9服务器已正确配置网络并安装必要工具。对于VMware虚拟机环境,网络连接方式(桥接或NAT)将直接影响后续监控数据的访问方式。

首先更新系统并安装基础工具包:

sudo dnf update -y
sudo dnf install -y wget curl tar vim net-tools

网络配置检查要点

  • 桥接模式:确保虚拟机与宿主机在同一网段,能互相访问
  • NAT模式:需配置端口转发规则,使外部能访问监控服务
  • 防火墙设置:开放后续需要的端口(如9090、3000等)

验证网络连通性:

ping -c 4 google.com
ifconfig | grep inet

2. Node Exporter安装与配置

Node Exporter是Prometheus生态中用于采集系统指标的组件,能够收集CPU、内存、磁盘、网络等基础资源使用情况。

2.1 下载并安装Node Exporter

# 创建专用用户
sudo useradd --no-create-home --shell /bin/false node_exporter

# 下载最新版Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz

# 解压并安装
tar xvf node_exporter-1.6.1.linux-amd64.tar.gz
sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

2.2 创建Systemd服务单元

创建服务配置文件 /etc/systemd/system/node_exporter.service

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

启动并启用服务:

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

验证服务状态:

curl http://localhost:9100/metrics

3. Prometheus服务器部署

Prometheus作为监控系统的核心,负责定期从Node Exporter拉取指标数据并存储。

3.1 安装Prometheus

# 创建专用用户
sudo useradd --no-create-home --shell /bin/false prometheus

# 下载Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar xvf prometheus-2.47.0.linux-amd64.tar.gz

3.2 配置Prometheus

创建配置文件 /etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

设置目录权限:

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo cp prometheus-2.47.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.47.0.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.47.0.linux-amd64/consoles /etc/prometheus/
sudo cp -r prometheus-2.47.0.linux-amd64/console_libraries /etc/prometheus/
sudo cp prometheus-2.47.0.linux-amd64/prometheus.yml /etc/prometheus/
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

3.3 创建Systemd服务

创建 /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/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

启动服务:

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

验证Prometheus是否正常运行:

curl http://localhost:9090/api/v1/targets

4. Grafana安装与仪表板配置

Grafana提供强大的数据可视化能力,可以将Prometheus收集的指标数据转化为直观的图表。

4.1 安装Grafana

# 添加Grafana仓库
sudo tee /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

# 安装Grafana
sudo dnf install -y grafana

4.2 配置Grafana

启动并启用服务:

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

防火墙设置(如使用firewalld):

sudo firewall-cmd --add-port=3000/tcp --permanent
sudo firewall-cmd --reload

4.3 配置数据源和仪表板

  1. 访问 http://<服务器IP>:3000 ,默认用户名/密码为admin/admin
  2. 添加Prometheus数据源:
    • 名称:Prometheus
    • URL:http://localhost:9090
  3. 导入Node Exporter仪表板:
    • 仪表板ID:1860(Node Exporter Full)
    • 或从https://grafana.com/grafana/dashboards/下载更多模板

5. 高级配置与优化

5.1 监控多个节点

要监控多台服务器,只需在其他节点安装Node Exporter,并在Prometheus配置中添加新targets:

scrape_configs:
  - job_name: 'nodes'
    static_configs:
      - targets: ['node1:9100', 'node2:9100', 'node3:9100']

5.2 配置告警规则

创建告警规则文件 /etc/prometheus/rules.yml

groups:
- name: node_alerts
  rules:
  - alert: HighCPUUsage
    expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 10m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage on {{ $labels.instance }}"
      description: "{{ $labels.instance }} CPU usage is {{ $value }}%"

prometheus.yml 中引用规则文件:

rule_files:
  - 'rules.yml'

5.3 数据保留策略

调整数据保留时间(默认为15天):

# 修改prometheus.service中的ExecStart行
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --storage.tsdb.retention.time=30d \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

6. 安全加固措施

6.1 为Prometheus和Grafana启用认证

Prometheus基本认证

  1. 安装htpasswd工具:
    sudo dnf install -y httpd-tools
    
  2. 创建密码文件:
    sudo htpasswd -c /etc/prometheus/.htpasswd prometheus-user
    
  3. 修改prometheus.service配置:
    ExecStart=/usr/local/bin/prometheus \
        --config.file /etc/prometheus/prometheus.yml \
        --storage.tsdb.path /var/lib/prometheus/ \
        --web.config.file=/etc/prometheus/web.yml
    
  4. 创建web.yml:
    basic_auth_users:
      prometheus-user: <加密后的密码>
    

Grafana认证

  1. 修改 /etc/grafana/grafana.ini
    [security]
    disable_initial_admin_creation = true
    
    [auth.basic]
    enabled = true
    

6.2 配置TLS加密

为Grafana启用HTTPS:

# 生成自签名证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/grafana/grafana.key -out /etc/grafana/grafana.crt \
  -subj "/CN=grafana.local"

# 修改grafana.ini
[server]
protocol = https
http_port = 3000
cert_file = /etc/grafana/grafana.crt
cert_key = /etc/grafana/grafana.key

7. 日常维护与故障排查

7.1 服务状态检查

常用命令:

# 检查服务状态
sudo systemctl status node_exporter prometheus grafana-server

# 查看日志
journalctl -u prometheus -f
journalctl -u grafana-server -f

7.2 常见问题解决

Prometheus无法抓取指标

  1. 检查target状态: http://localhost:9090/targets
  2. 验证Node Exporter端点: curl http://localhost:9100/metrics
  3. 检查防火墙规则:
    sudo firewall-cmd --list-all
    

Grafana无法显示数据

  1. 检查数据源配置
  2. 验证PromQL查询是否有效
  3. 检查时间范围设置

磁盘空间不足

  1. 调整数据保留策略
  2. 清理旧数据:
    sudo du -sh /var/lib/prometheus/
    

8. 扩展监控能力

8.1 监控Docker容器

安装cAdvisor:

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  gcr.io/cadvisor/cadvisor:v0.47.0

在Prometheus中添加job:

- job_name: 'cadvisor'
  static_configs:
    - targets: ['localhost:8080']

8.2 监控MySQL数据库

安装MySQL Exporter:

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz
tar xvf mysqld_exporter-0.15.0.linux-amd64.tar.gz
sudo cp mysqld_exporter-0.15.0.linux-amd64/mysqld_exporter /usr/local/bin/

创建MySQL监控用户:

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

配置并启动Exporter:

export DATA_SOURCE_NAME='exporter:password@(localhost:3306)/'
/usr/local/bin/mysqld_exporter &

在VMware虚拟化环境中,这套监控方案不仅适用于Rocky Linux 9,也可以轻松迁移到其他Linux发行版。实际部署时发现,合理配置的监控系统能够提前发现80%的性能问题,特别是在资源受限的虚拟机环境中,及时告警可以避免许多潜在的服务中断。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐