Linux监控node_exporter

发布于:2025-07-07 ⋅ 阅读:(12) ⋅ 点赞:(0)

安装脚本
 

#!/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


网站公告

今日签到

点亮在社区的每一天
去签到