alpine如何安装nezha-agent

接上文,alpine小鸡上的v2ray, nginx处理完了,现在开始整nezha探针。nezha-agent已经在64M的小鸡上成功平稳运行,不过32M的就算了,别折腾了。nezha-agent还挺耗资源的。

PS:64M的alpine小鸡可玩性还是挺大的,最后还给小鸡加了个ufw防火墙,一直运行完好。alpine对小内存的小鸡来说,真是YYDS!

准备工作:

脚本里使用了curl命令,所以需要在小鸡里先安装curl

apk add curl

在nezha dashboard里新建一只小鸡,然后得到secret key

(Nezha官网提供的解决方案)

编辑配置文件,文件内容除了标红的位置外,其他的跟官网一致。如果出现不确定的问题,可以基于官方的内容重新编辑一下。尤其要注意一下各行,以免在你的脚本里出现异常的换行。

小技巧:如何判断使用哪个配置文件,在Nezha面板上,创建完小鸡,可以“点击复制”Linux的一键安装脚本,点击复制后,粘贴到一个文本编辑器里,观察

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh install_agent Domain-Name 443 Secret-Key --tls

如果是如上图的,查看标红位置,这个--tls是关键字,说明Nezha面板已经启动tls了,使用第一个配置文件。否则使用第二个配置文件,TLS的位置留空。

其实如果是root用户运行的话,在其他普通的Linux(Debian系,RSLE系等)上,完全可以自己DIY一下,去除sudo命令,添加一些其他的参数来减少小鸡的负载,最后变成如下所示,放在ssh里直接运行:

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && ./nezha.sh install_agent Domain-Name 443 Secret-Key --tls --report-delay 4 --skip-conn --skip-procs

国内镜像:
curl -L https://jihulab.com/nezha/nezha/-/raw/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && CN=true ./nezha.sh install_agent Domain-Name 443 Secret-Key --tls --report-delay 4 --skip-conn --skip-procs

 TLS已经启动  

vi /etc/init.d/nezha-agent

#!/sbin/openrc-run
SERVER="Domain-Name:443" #Dashboard 地址 ip:port
SECRET="SECRET-KEY" #SECRET
TLS="--tls" # 是否启用 tls 是 "--tls" 否留空
NZ_BASE_PATH="/opt/nezha"
NZ_AGENT_PATH="${NZ_BASE_PATH}/agent"
pidfile="/run/${RC_SVCNAME}.pid"
command="/opt/nezha/agent/nezha-agent"
command_args="-s ${SERVER}  -p ${SECRET} ${TLS} --report-delay 4 --skip-conn --skip-procs"
command_background=true
depend() {
    need net
}
checkconfig() {
    GITHUB_URL="github.com"
    if [ ! -f "${NZ_AGENT_PATH}/nezha-agent" ]; then
        if [[ $(uname -m | grep 'x86_64') != "" ]]; then
            os_arch="amd64"
        elif [[ $(uname -m | grep 'i386\|i686') != "" ]]; then
            os_arch="386"
        elif [[ $(uname -m | grep 'aarch64\|armv8b\|armv8l') != "" ]]; then
            os_arch="arm64"
        elif [[ $(uname -m | grep 'arm') != "" ]]; then
            os_arch="arm"
        elif [[ $(uname -m | grep 's390x') != "" ]]; then
            os_arch="s390x"
        elif [[ $(uname -m | grep 'riscv64') != "" ]]; then
            os_arch="riscv64"
        fi
        local version=$(curl -m 10 -sL "https://api.github.com/repos/naiba/nezha/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
        if [ ! -n "$version" ]; then
            version=$(curl -m 10 -sL "https://fastly.jsdelivr.net/gh/naiba/nezha/" | grep "option\.value" | awk -F "'" '{print $2}' | sed 's/naiba\/nezha@/v/g')
        fi
        if [ ! -n "$version" ]; then
            version=$(curl -m 10 -sL "https://gcore.jsdelivr.net/gh/naiba/nezha/" | grep "option\.value" | awk -F "'" '{print $2}' | sed 's/naiba\/nezha@/v/g')
        fi
        if [ ! -n "$version" ]; then
            echo -e "获取版本号失败,请检查本机能否链接 https://api.github.com/repos/naiba/nezha/releases/latest"
            return 0
        else
            echo -e "当前最新版本为: ${version}"
        fi
        wget -t 2 -T 10 -O nezha-agent_linux_${os_arch}.zip https://${GITHUB_URL}/naiba/nezha/releases/download/${version}/nezha-agent_linux_${os_arch}.zip >/dev/null 2>&1
        if [[ $? != 0 ]]; then
            echo -e "Release 下载失败,请检查本机能否连接 ${GITHUB_URL}${plain}"
            return 0
        fi
        mkdir -p $NZ_AGENT_PATH
        chmod 755 -R $NZ_AGENT_PATH
        unzip -qo nezha-agent_linux_${os_arch}.zip && mv nezha-agent $NZ_AGENT_PATH && rm -rf nezha-agent_linux_${os_arch}.zip README.md
    fi
    if [ ! -x "${NZ_AGENT_PATH}/nezha-agent" ]; then
        chmod +x ${NZ_AGENT_PATH}/nezha-agent
    fi
}
start_pre() {
    if [ "${RC_CMD}" != "restart" ]; then
        checkconfig || return $?
    fi
}

chmod +x /etc/init.d/nezha-agent && rc-update add nezha-agent && rc-service nezha-agent start

rc-service nezha-agent status

看看nezha-agent是否运行,再去dashboard上查看下小鸡是否在线

再上一个未开始tls的配置

#!/sbin/openrc-run
SERVER="IP-Address:Port" #Dashboard 地址 ip:port
SECRET="SECRET-KEY" #SECRET
TLS="" # 是否启用 tls 是 "--tls" 否留空
NZ_BASE_PATH="/opt/nezha"
NZ_AGENT_PATH="${NZ_BASE_PATH}/agent"
pidfile="/run/${RC_SVCNAME}.pid"
command="/opt/nezha/agent/nezha-agent"
command_args="-s ${SERVER}  -p ${SECRET} ${TLS} --report-delay 4 --skip-conn --skip-procs"
command_background=true
depend() {
    need net
}
checkconfig() {
    GITHUB_URL="github.com"
    if [ ! -f "${NZ_AGENT_PATH}/nezha-agent" ]; then
        if [[ $(uname -m | grep 'x86_64') != "" ]]; then
            os_arch="amd64"
        elif [[ $(uname -m | grep 'i386\|i686') != "" ]]; then
            os_arch="386"
        elif [[ $(uname -m | grep 'aarch64\|armv8b\|armv8l') != "" ]]; then
            os_arch="arm64"
        elif [[ $(uname -m | grep 'arm') != "" ]]; then
            os_arch="arm"
        elif [[ $(uname -m | grep 's390x') != "" ]]; then
            os_arch="s390x"
        elif [[ $(uname -m | grep 'riscv64') != "" ]]; then
            os_arch="riscv64"
        fi
        local version=$(curl -m 10 -sL "https://api.github.com/repos/naiba/nezha/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
        if [ ! -n "$version" ]; then
            version=$(curl -m 10 -sL "https://fastly.jsdelivr.net/gh/naiba/nezha/" | grep "option\.value" | awk -F "'" '{print $2}' | sed 's/naiba\/nezha@/v/g')
        fi
        if [ ! -n "$version" ]; then
            version=$(curl -m 10 -sL "https://gcore.jsdelivr.net/gh/naiba/nezha/" | grep "option\.value" | awk -F "'" '{print $2}' | sed 's/naiba\/nezha@/v/g')
        fi
        if [ ! -n "$version" ]; then
            echo -e "获取版本号失败,请检查本机能否链接 https://api.github.com/repos/naiba/nezha/releases/latest"
            return 0
        else
            echo -e "当前最新版本为: ${version}"
        fi
        wget -t 2 -T 10 -O nezha-agent_linux_${os_arch}.zip https://${GITHUB_URL}/naiba/nezha/releases/download/${version}/nezha-agent_linux_${os_arch}.zip >/dev/null 2>&1
        if [[ $? != 0 ]]; then
            echo -e "Release 下载失败,请检查本机能否连接 ${GITHUB_URL}${plain}"
            return 0
        fi
        mkdir -p $NZ_AGENT_PATH
        chmod 755 -R $NZ_AGENT_PATH
        unzip -qo nezha-agent_linux_${os_arch}.zip && mv nezha-agent $NZ_AGENT_PATH && rm -rf nezha-agent_linux_${os_arch}.zip README.md
    fi
    if [ ! -x "${NZ_AGENT_PATH}/nezha-agent" ]; then
        chmod +x ${NZ_AGENT_PATH}/nezha-agent
    fi
}
start_pre() {
    if [ "${RC_CMD}" != "restart" ]; then
        checkconfig || return $?
    fi
}

chmod +x /etc/init.d/nezha-agent && rc-update add nezha-agent && rc-service nezha-agent start

rc-service nezha-agent status

看看nezha-agent是否运行,再去dashboard上查看下小鸡是否在线

PS:命令行里面加了--report-delay 4 --skip-conn --skip-procs,以来减少nezha的消耗,官网提供了参数的详细解析。

  • --report-delay 控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
  • --skip-conn 不监控连接数,推荐 机场/连接密集型 服务器或CPU占用较高的服务器设置
  • --skip-procs 不监控进程数,也可以降低 Agent 占用
  • --disable-auto-update 禁止 自动更新 Agent(安全特性)
  • --disable-force-update 禁止 强制更新 Agent(安全特性)
  • --disable-command-execute 禁止在 Agent 上执行定时任务、打开在线终端(安全特性)
  • --tls 启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)

  

 

发现nezha-agent不能自动更新版本,原因未知,估计以后会修复吧。

临时解决方案:

删除掉现有的nezha-agent(# rm -rf /opt/nezha/agent/nezha-agent),执行rc-service nezha-agent restart;或者直接重启小鸡,默认会自动下载最新版本的nezha-agent。

 


此文最后更新于2022-12-01

 -

Telegram Me via Bot

 -

 

Comments

Popular posts from this blog

Alpine+V2Ray(+Nginx+PHP探针),让32M/64M的小鸡起飞。。。

Telegram 搭建 私聊机器人 转发私聊信息 保护隐私