如何在不丢失配置和数据的前提下切换 Netdata 安装类型与发布通道?
【免费下载链接】netdataThe fastest path to AI-powered full stack observability, even for lean teams.项目地址: https://gitcode.com/GitHub_Trending/ne/netdata
Netdata 提供了多种安装类型(原生包、静态构建、本地构建、Docker 容器)和两条发布通道(stable 与 nightly)。当你需要更换其中任何一项时,核心风险是配置文件、指标数据和节点身份(claim token、API key)丢失。本文基于 切换安装类型与发布通道指南 和 Agent 备份与恢复文档,给出一条连续的"备份—切换—恢复—验证"操作路径,让切换后你的配置和数据保持完整。
第一步:备份配置与数据(所有切换操作的前置动作)
Netdata 的数据分三类,位置如下(见备份文档中的数据表):
| 数据类型 | 说明 | 位置 |
|---|---|---|
| Agent 配置 | 控制 Agent 行为的配置文件 | /etc/netdata |
| Metrics | 数据库文件 | /var/cache/netdata |
| Identity | claim token、API key 等 | /var/lib/netdata |
具体路径随安装方式不同而变化,官方文档给出的备份范围是:
- 原生包、静态构建、本地构建:
/etc/netdata、/var/cache/netdata、/var/lib/netdata; - 静态构建:
/opt/netdata/etc/netdata、/opt/netdata/var/cache/netdata、/opt/netdata/var/lib/netdata; - Docker 容器:从容器内部备份
/etc/netdata、/var/cache/netdata、/var/lib/netdata。
:::warning 无论哪种安装类型,都必须从备份中排除.environment和.install-type两个文件(例如/etc/netdata/.environment、/etc/netdata/.install-type)。文档明确指出:把这两个文件从一个安装类型复制到另一个安装类型会破坏后续更新。 :::
备份操作建议先停止 Agent,再打包数据库文件(备份文档推荐顺序:确认目录路径 → 停止 Agent → 打包 → 重启):
sudo systemctl stop netdata sudo tar -cvpzf netdata_backup.tar.gz /etc/netdata/ /var/cache/netdata /var/lib/netdata打包命令需要以 root 或 netdata 用户身份运行才能访问全部文件。备份完成后再启动 Agent 继续正常监控。
场景一:切换安装类型
原生包 / 静态构建 / 本地构建之间切换(主路径)
使用 kickstart 脚本的干净重装模式:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh sh /tmp/netdata-kickstart.sh --reinstall-clean [OPTIONS_FOR_DESIRED_INSTALL_TYPE][OPTIONS_FOR_DESIRED_INSTALL_TYPE]是源文档中的占位符,指你希望目标安装方式/发布通道对应的 kickstart 参数(如发布通道选项),参数含义见 kickstart.sh 文档的参数表。该命令会先卸载现有安装再安装,需要 root 权限,执行期间 Netdata 不可用。完成后把备份内容恢复到新安装对应的路径(原生包/本地构建恢复到/etc/netdata等系统路径;静态构建恢复到/opt/netdata/...对应路径)。
从厂商打包的原生安装切换(可选分支)
如果系统通过自己的软件源附带 Netdata(文档举例 XCP-ng 和 XOA),这些安装没有.install-type文件,kickstart.sh不识别它们,直接用它更新、重装或卸载可能失败甚至把系统弄坏。这类系统必须先手动处理:
- 停止 Agent:
sudo systemctl stop netdata - 用系统包管理器移除现有包,例如 XCP-ng(RPM 系)
sudo yum remove netdata或sudo dnf remove netdata;XOA(Debian 系)sudo apt remove netdata - 按第一步的方法备份配置与数据
- 运行 kickstart 脚本安装:
sh /tmp/netdata-kickstart.sh [OPTIONS_FOR_DESIRED_INSTALL_TYPE] - 恢复备份到新安装路径
切换到 Docker 容器(可选分支)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh sh /tmp/netdata-kickstart.sh --uninstall--uninstall会完全卸载现有 Netdata。之后启动 Netdata 的 Docker 容器,把备份内容恢复到容器内部对应路径(容器内路径与宿主机原生包安装的路径一致),最后重启容器使恢复的配置生效。
从 Docker 切换到其他安装类型(可选分支)
从容器内部备份配置与数据 → 删除容器 → 运行 kickstart 脚本安装 → 恢复备份。删除容器本身不会删除持久卷中的数据,但官方建议的恢复路径就是"容器内备份后恢复",按此执行最稳妥。
场景二:切换发布通道(stable ↔ nightly)
切换通道不需要更换安装方式,只需按当前安装类型执行对应命令。
静态构建与本地构建
直接带--reinstall和通道选项重跑 kickstart:
# 切换到 stable wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh sh /tmp/netdata-kickstart.sh --reinstall --stable-channel# 切换到 nightly wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh sh /tmp/netdata-kickstart.sh --reinstall --nightly-channel原生包
Debian/Ubuntu——从 nightly 切到 stable:
# Install stable repository (automatically removes nightly repo) sudo apt install netdata-repo sudo apt update sudo apt remove netdata sudo apt install netdata从 stable 切到 nightly 只需把仓库包换成netdata-repo-edge:
# Install nightly repository (automatically removes stable repo) sudo apt install netdata-repo-edge sudo apt update sudo apt remove netdata sudo apt install netdataFedora/RHEL:
# nightly → stable sudo dnf install --allowerasing netdata-repo sudo dnf remove netdata sudo dnf install --refresh netdata# stable → nightly sudo dnf install --allowerasing netdata-repo-edge sudo dnf remove netdata sudo dnf install --refresh netdataopenSUSE:
# nightly → stable sudo zypper install --allowerasing netdata-repo sudo zypper refresh sudo zypper remove netdata sudo zypper install netdata# stable → nightly sudo zypper install --allowerasing netdata-repo-edge sudo zypper refresh sudo zypper remove netdata sudo zypper install netdata仓库配置包(netdata-repo/netdata-repo-edge)会自动移除另一通道的仓库以防止冲突,这是官方文档明确说明的行为。
Docker 容器
Docker 容器不会自动更新,切换通道即"拉取新镜像 + 重建容器",只是把镜像 tag 换成目标通道对应的:stable 用stabletag,nightly 用edgetag(latesttag 不指定时默认使用,可能指向 nightly 构建,见 Docker 文档的 tag 表):
docker pull netdata/netdata:stable docker stop netdata && docker rm netdata # 用你最初的 docker run 命令重建容器docker stop && docker rm只删除容器;官方文档说明netdataconfig、netdatalib、netdatacache三个持久卷会在容器重建间保留你的配置与指标,前提是当初按推荐方式(挂载这三个卷)启动的容器。
验证切换结果
非 Docker 安装——两种检查方式(见 服务控制文档):
sudo systemctl status netdata sudo netdatacli pingnetdatacli ping在 Agent 就绪时输出pong且退出码为 0;初始化中退出码为 1;不可达时退出码为 255。也可以用浏览器打开http://NODE:19999,或运行curl http://NODE:19999/api/v1/info(NODE替换为你的 Agent IP 或主机名)确认可访问。
Docker 容器——确认运行的版本信息:
docker exec netdata netdata -W buildinfo如果 Netdata Cloud 出现Critical update通知,说明 Agent 版本低于 Cloud 正常功能所需的最低版本,nightly 构建即使最新也可能触发该通知;切换到stabletag 可解决(Docker 文档明确给出此说明)。
限制与注意事项
.environment与.install-type必须排除在备份之外,这是所有安装类型切换的共同红线,违反会破坏更新机制。- 恢复数据库文件前,备份恢复文档要求先确保 Metrics 目录为空,即执行
sudo rm -Rf /var/cache/netdata。这是删除命令,会清空该目录下的指标数据库文件,仅在"准备恢复数据库文件且已持有完整备份"的前提下执行。 - 厂商打包的原生安装(XCP-ng/XOA 类)不要交给 kickstart 直接处理,必须先用系统包管理器移除。
- 切换过程中的停止、重启会造成指标采集的短暂空档,这是重启 Agent 的固有现象(服务控制文档已提示)。
- 两条通道的支持策略不同(见 发布通道说明):stable 按发布节奏提供 bug 修复与安全更新,历史配置语义和数据受更新版本支持;nightly 连续获得修复与新特性,但未发布功能的配置和数据可能在 nightly 之间发生变化。
- 若安装脚本下载后需要校验,kickstart 文档提供了完整性检查方法(注意其中包含构建期模板变量,需以文档最新发布的值为准),生产环境建议先校验再执行。
完成上述任一路径后,只要netdatacli ping返回pong(或容器buildinfo输出对应通道版本)、/etc/netdata(或/opt/netdata/etc/netdata、容器内路径)中的配置与你备份的内容一致,切换即完成。
【免费下载链接】netdataThe fastest path to AI-powered full stack observability, even for lean teams.项目地址: https://gitcode.com/GitHub_Trending/ne/netdata
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考