安装脚本
#!/bin/bash
# 定义变量
NODE_EXPORTER_VERSION="1.9.1"
ARCH="linux-amd64"
TAR_FILE="node_exporter-${NODE_EXPORTER_VERSION}.${ARCH}.tar.gz"
DOWNLOAD_URL="https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/${TAR_FILE}"
INSTALL_DIR="/usr/bin"
SERVICE_FILE="/etc/systemd/system/node_exporter.service"
BINARY_PATH="${INSTALL_DIR}/node_exporter"
# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
echo "❌ 请使用root用户运行此脚本!"
exit 1
fi
# 检查node_exporter是否已安装
if [ -f "${BINARY_PATH}" ]; then
CURRENT_VERSION=$("${BINARY_PATH}" --version 2>&1 | grep -Po '(?<=version ).*?(?= )' || echo "unknown")
echo "⚠️ node_exporter 已安装 (当前版本: ${CURRENT_VERSION})"
echo " 二进制文件路径: ${BINARY_PATH}"
echo " 如需重新安装,请先手动删除旧版本。"
exit 0
fi
# 检查服务是否已存在
if systemctl list-unit-files | grep -q 'node_exporter.service'; then
echo "⚠️ node_exporter服务已存在:"
systemctl status node_exporter --no-pager
exit 0
fi
# 下载node_exporter(如果文件不存在)
#echo "⬇️ 正在下载 node_exporter ${NODE_EXPORTER_VERSION}..."
#if ! wget -q "${DOWNLOAD_URL}"; then
# echo "❌ 下载失败!请检查网络或URL有效性: ${DOWNLOAD_URL}"
# exit 1
#fi
# 解压文件
echo "📦 正在解压 ${TAR_FILE}..."
if ! tar -xzf "${TAR_FILE}"; then
echo "❌ 解压失败!请检查文件完整性。"
rm -f "${TAR_FILE}"
exit 1
fi
# 移动二进制文件
echo "🚚 正在安装 node_exporter 到 ${INSTALL_DIR}..."
if ! mv "node_exporter-${NODE_EXPORTER_VERSION}.${ARCH}/node_exporter" "${BINARY_PATH}"; then
echo "❌ 移动文件失败!请检查目录权限。"
exit 1
fi
# 设置可执行权限
chmod +x "${BINARY_PATH}"
# 创建systemd服务文件
echo "🛠️ 创建systemd服务文件: ${SERVICE_FILE}"
cat > "${SERVICE_FILE}" <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=${BINARY_PATH} --collector.processes --collector.tcpstat --collector.interrupts --collector.systemd
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
# 重新加载systemd配置
echo "🔄 重新加载systemd配置..."
systemctl daemon-reload || {
echo "❌ systemd配置重载失败!"
exit 1
}
# 启用并启动服务
echo "⚡ 启动node_exporter服务..."
systemctl enable --now node_exporter || {
echo "❌ 服务启动失败!"
exit 1
}
# 清理临时文件
rm -rf "${TAR_FILE}" "node_exporter-${NODE_EXPORTER_VERSION}.${ARCH}"
# 验证安装
echo "✅ 安装完成!"
echo " 版本信息: $("${BINARY_PATH}" --version 2>&1 | head -n 1)"
echo " 服务状态:"
echo "确保防火墙已开放相应端口:"
echo " firewall-cmd --add-port=9100/tcp --permanent"
echo " firewall-cmd --reload"
systemctl status node_exporter --no-pager
firewall-cmd --add-port=9100/tcp --permanent
firewall-cmd --reload
仪表盘的json文件
https://download.csdn.net/download/weixin_44923842/91263577