本实验以监控端controller1、controller2 被控端node1、node2为实验环境
系统版本 Ubuntu22
略
略
略
SHELL# 下载
wget https://github.com/prometheus/prometheus/releases/download/v2.53.4/prometheus-2.53.4.linux-amd64.tar.gz
# 解压
tar -xzf prometheus-2.53.4.linux-amd64.tar.gz
cd prometheus-2.53.4.linux-amd64
# 移动主程序
sudo cp prometheus promtool /usr/local/bin/
# 创建配置目录并复制配置
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo cp -r consoles console_libraries prometheus.yml /etc/prometheus/
# 创建 prometheus 用户(可选)
sudo useradd -rs /bin/false prometheus
# 设置权限
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
SHELLsudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF [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 EOF
SHELLsudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl enable prometheus sudo systemctl start prometheus
如果安装与配置正常,此时访问服务器IP:9090会看到以下页面

SHELLsudo apt-get update sudo apt-get install -y curl gnupg2 software-properties-common
SHELLcurl -fsSL https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
SHELLecho "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list > /dev/null
SHELLsudo apt-get update sudo apt-get install -y grafana
SHELLsudo systemctl daemon-reexec sudo systemctl enable --now grafana-server
如果安装与配置正常,此时访问服务器IP:3000会看到以下页面,默认账密admin/admin,记得修改复杂密码




略
SHELL
脚本
SHELL#!/bin/bash
# 定义版本和下载地址
VERSION="1.9.1"
DOWNLOAD_URL="https://github.com/prometheus/node_exporter/releases/download/v${VERSION}/node_exporter-${VERSION}.linux-amd64.tar.gz"
# 下载并解压
cd /opt || exit 1
wget -O node_exporter.tar.gz "$DOWNLOAD_URL"
tar -xzf node_exporter.tar.gz
mv node_exporter-${VERSION}.linux-amd64 /usr/local/node_exporter
rm -f node_exporter.tar.gz
# 创建 systemd 服务
cat <<EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=nobody
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF
# 启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
# 显示状态
sudo systemctl status node_exporter --no-pager
如果安装与配置正常,此时访问服务器IP:9100会看到以下页面

SHELLmkdir /etc/prometheus/targets
SHELLsudo nano /etc/prometheus/prometheus.yml
在文件底部增加配置
SHELL- job_name: "node_exporters_dynamic" file_sd_configs: - files: - /etc/prometheus/targets/*.yml refresh_interval: 30s
在/etc/prometheus/targets文件夹中新增节点配置
SHELLnano /etc/prometheus/targets/node1.yml
添加
SHELL# /etc/prometheus/targets/node1.yml
- targets:
- 192.168.1.103:9100
labels:
instance: node1
脚本
SHELL#!/bin/bash
# 检查参数数量
if [ "$#" -ne 2 ]; then
echo "用法: $0 <节点名> <IP地址>"
echo "示例: $0 node1 192.168.1.101"
exit 1
fi
# 读取参数
NODE_NAME="$1"
IP="$2"
TARGET_DIR="/etc/prometheus/targets"
FILE_PATH="$TARGET_DIR/${NODE_NAME}.yml"
# 创建目标目录(如果不存在)
mkdir -p "$TARGET_DIR"
# 写入文件内容
cat > "$FILE_PATH" <<EOF
# ${FILE_PATH}
- targets:
- ${IP}:9100
labels:
instance: ${NODE_NAME}
EOF
echo "已生成配置文件: $FILE_PATH"

结果图如下

此教程采用双监控,拆分监控配置为单节点对应单文件,降低运维难度 grafana中文面板ID:22869