• 搜索
  • 夜间模式
    ©2012-2026  陈十一的小破站 Theme by OneBlog

    陈十一的小破站博客

    搜索
    标签
    # Nodejs # CentOS # Git # Golang # Docker # Windows # Nginx # 反向代理 # 脚本 # Linux
  • 首页>
  • 技术>
  • 正文
  • 关于NeZhaV0Agent安装失败部分解决方案

    2025年04月13日 514 阅读 0 评论 6531 字

    Agent安装解决方案(仅适用于机器无法访问Github)

    手动创建nezha.sh

    公益镜像地址获取:https://status.akams.cn/status/services

    #!/bin/sh
    
    NZ_BASE_PATH="/opt/nezha"
    NZ_AGENT_PATH="${NZ_BASE_PATH}/agent"
    
    red='\033[0;31m'
    green='\033[0;32m'
    yellow='\033[0;33m'
    plain='\033[0m'
    export PATH="$PATH:/usr/local/bin"
    
    os_arch=""
    
    sudo() {
        myEUID=$(id -ru)
        if [ "$myEUID" -ne 0 ]; then
            if command -v sudo > /dev/null 2>&1; then
                command sudo "$@"
            else
                err "错误: 您的系统未安装 sudo,因此无法进行该项操作。"
                exit 1
            fi
        else
            "$@"
        fi
    }
    
    err() {
        printf "${red}%s${plain}\n" "$*" >&2
    }
    
    success() {
        printf "${green}%s${plain}\n" "$*"
    }
    
    info() {
        printf "${yellow}%s${plain}\n" "$*"
    }
    
    install_base() {
        (command -v curl >/dev/null 2>&1 && command -v wget >/dev/null 2>&1 && command -v unzip >/dev/null 2>&1 && command -v getenforce >/dev/null 2>&1) ||
            (install_soft curl wget unzip)
    }
    
    install_soft() {
        (command -v yum >/dev/null 2>&1 && sudo yum makecache && sudo yum install "$@" selinux-policy -y) ||
            (command -v apt >/dev/null 2>&1 && sudo apt update && sudo apt install "$@" selinux-utils -y) ||
            (command -v pacman >/dev/null 2>&1 && sudo pacman -Syu "$@" base-devel --noconfirm) ||
            (command -v apt-get >/dev/null 2>&1 && sudo apt-get update && sudo apt-get install "$@" selinux-utils -y) ||
            (command -v apk >/dev/null 2>&1 && sudo apk update && sudo apk add "$@" -f)
    }
    
    selinux() {
        #Check SELinux
        if command -v getenforce >/dev/null 2>&1; then
            if getenforce | grep '[Ee]nfor'; then
                echo "SELinux是开启状态,正在关闭!"
                sudo setenforce 0 >/dev/null 2>&1
                find_key="SELINUX="
                sudo sed -ri "/^$find_key/c${find_key}disabled" /etc/selinux/config
            fi
        fi
    }
    
    install_agent() {
        # Set default GitHub mirror
        GITHUB_URL="ghfile.geekertao.top/https://github.com"
        
        # Allow custom GitHub mirror
        printf "请输入 GitHub 镜像源 (留空使用默认: %s): " "$GITHUB_URL"
        read -r custom_mirror
        if [ -n "$custom_mirror" ]; then
            GITHUB_URL="$custom_mirror"
        fi
    
        install_base
        selinux
    
        echo "> 安装监控Agent"
    
        # Nezha Monitoring Folder
        sudo mkdir -p $NZ_AGENT_PATH
    
        # Set version
        _version="v0.20.5"
    
        echo "正在下载监控端"
        NZ_AGENT_URL="https://${GITHUB_URL}/nezhahq/agent/releases/download/${_version}/nezha-agent_linux_${os_arch}.zip"
        echo "下载地址: ${NZ_AGENT_URL}"
    
        _cmd="wget -t 2 -T 60 -O nezha-agent_linux_${os_arch}.zip $NZ_AGENT_URL >/dev/null 2>&1"
        if ! eval "$_cmd"; then
            err "Release 下载失败,请检查本机能否连接 ${NZ_AGENT_URL}"
            return 1
        fi
    
        sudo unzip -qo nezha-agent_linux_${os_arch}.zip &&
            sudo mv nezha-agent $NZ_AGENT_PATH &&
            sudo rm -rf nezha-agent_linux_${os_arch}.zip README.md
    
        if [ $# -ge 3 ]; then
            modify_agent_config "$@"
        else
            modify_agent_config 0
        fi
    }
    
    modify_agent_config() {
        echo "> 修改 Agent 配置"
    
        if [ $# -lt 3 ]; then
            echo "请先在管理面板上添加Agent,记录下密钥"
                printf "请输入一个解析到面板所在IP的域名(不可套CDN): "
                read -r nz_grpc_host
                printf "请输入面板RPC端口 (默认值 5555): "
                read -r nz_grpc_port
                printf "请输入Agent 密钥: "
                read -r nz_client_secret
                printf "是否启用针对 gRPC 端口的 SSL/TLS加密 (--tls),需要请按 [y],默认是不需要,不理解用户可回车跳过: "
                read -r nz_grpc_proxy
            echo "${nz_grpc_proxy}" | grep -qiw 'Y' && args='--tls'
            if [ -z "$nz_grpc_host" ] || [ -z "$nz_client_secret" ]; then
                err "所有选项都不能为空"
                return 1
            fi
            if [ -z "$nz_grpc_port" ]; then
                nz_grpc_port=5555
            fi
        else
            nz_grpc_host=$1
            nz_grpc_port=$2
            nz_client_secret=$3
            shift 3
            if [ $# -gt 0 ]; then
                args="$*"
            fi
        fi
    
        _cmd="sudo ${NZ_AGENT_PATH}/nezha-agent service install -s $nz_grpc_host:$nz_grpc_port -p $nz_client_secret $args >/dev/null 2>&1"
    
        if ! eval "$_cmd"; then
            sudo "${NZ_AGENT_PATH}"/nezha-agent service uninstall >/dev/null 2>&1
            sudo "${NZ_AGENT_PATH}"/nezha-agent service install -s "$nz_grpc_host:$nz_grpc_port" -p "$nz_client_secret" "$args" >/dev/null 2>&1
        fi
        
        success "Agent 配置 修改成功,请稍等 Agent 重启生效"
    }
    
    show_agent_log() {
        echo "> 获取 Agent 日志"
    
        if [ "$os_alpine" != 1 ]; then
            sudo journalctl -xf -u nezha-agent.service
        else
            sudo tail -n 10 /var/log/nezha-agent.err
        fi
    }
    
    uninstall_agent() {
        echo "> 卸载 Agent"
    
        sudo ${NZ_AGENT_PATH}/nezha-agent service uninstall
    
        sudo rm -rf $NZ_AGENT_PATH
        clean_all
    }
    
    restart_agent() {
        echo "> 重启 Agent"
    
        sudo ${NZ_AGENT_PATH}/nezha-agent service restart
    }
    
    clean_all() {
        if [ -z "$(ls -A ${NZ_BASE_PATH})" ]; then
            sudo rm -rf ${NZ_BASE_PATH}
        fi
    }
    
    show_usage() {
        echo "哪吒监控 Agent 管理脚本使用方法: "
        echo "--------------------------------------------------------"
        echo "./nezha.sh install_agent              - 安装监控Agent"
        echo "./nezha.sh modify_agent_config        - 修改Agent配置"
        echo "./nezha.sh show_agent_log             - 查看Agent日志"
        echo "./nezha.sh uninstall_agent            - 卸载Agent"
        echo "./nezha.sh restart_agent              - 重启Agent"
        echo "--------------------------------------------------------"
    }
    
    # Detect OS architecture
    if uname -m | grep -q 'x86_64'; then
        os_arch="amd64"
    elif uname -m | grep -q 'i386\|i686'; then
        os_arch="386"
    elif uname -m | grep -q 'aarch64\|armv8b\|armv8l'; then
        os_arch="arm64"
    elif uname -m | grep -q 'arm'; then
        os_arch="arm"
    elif uname -m | grep -q 's390x'; then
        os_arch="s390x"
    elif uname -m | grep -q 'riscv64'; then
        os_arch="riscv64"
    fi
    
    if [ $# -gt 0 ]; then
        case $1 in
            "install_agent")
                shift
                if [ $# -ge 3 ]; then
                    install_agent "$@"
                else
                    install_agent
                fi
                ;;
            "modify_agent_config")
                modify_agent_config
                ;;
            "show_agent_log")
                show_agent_log
                ;;
            "uninstall_agent")
                uninstall_agent
                ;;
            "restart_agent")
                restart_agent
                ;;
            *) show_usage ;;
        esac
    else
        show_usage
    fi
    本文著作权归作者 [ 陈十一 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    — END —
    Copyright©2012-2026  All Rights Reserved.  Load:0.013 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。