DataKit 更新¶
DataKit 支持手动更新和自动更新两种方式。
前置条件¶
- 远程更新要求 DataKit 版本 >= 1.5.9
- 自动更新要求 DataKit 版本 >= 1.1.6-rc1
- 手动更新暂无版本要求
2.x 与 1.x 的升级策略¶
- 自动升级默认只升级到最新
2.x。 - 如果当前主机已经运行
2.x,会按升级源中的最新2.x继续升级。 - 升级源如果异常(例如未提供可用的
2.x安装资源),升级会失败并保持当前版本不变。 - 如果你仍需使用
1.x(例如1.92.0),请手动指定目标版本升级。
2.x 的系统最低要求:
- Linux:内核版本 >=
3.2 - Windows:
Windows 10/Windows Server 2016及以上 - macOS:
macOS 12及以上
2.x 和 1.x 使用不同的升级源:
https://static.guance.com/datakit-v2/:2.x升级源,推荐。https://static.guance.com/datakit/:1.x升级源,仅用于兼容旧系统。
升级脚本会根据当前路径自动选择对应的版本线,自动升级统一走 datakit-v2 路径。由于两条路径各自独立发布,datakit-v2 路径只会升级到最新的 2.x,datakit 路径只会升级到最新的 1.x,互不互通。如需手动升级到 1.x,使用带版本号的脚本(如 install-1.93.0.sh)。
手动更新¶
直接执行如下命令查看当前 DataKit 版本。如果线上有最新版本,则会提示对应的更新命令,如:
- 如果 DataKit < 1.2.7,此处只能用
datakit --version- 如果 DataKit < 1.2.0,请直接使用更新命令
$ datakit version
Version: 1.2.8
Commit: e9ccdfbae4
Branch: testing
Build At(UTC): 2022-03-11 11:07:06
Golang Version: go version go1.18.3 linux/amd64
Uploader: xxxxxxxxxxxxx/xxxxxxx/xxxxxxx
ReleasedInputs: all
---------------------------------------------------
Online version available: 1.2.9, commit 9f5ac898be (release at 2022-03-10 12:03:12)
Upgrade:
DK_UPGRADE=1 bash -c "$(curl -L https://static.guance.com/datakit-v2/install.sh)"
$ datakit.exe version
Version: 1.2.8
Commit: e9ccdfbae4
Branch: testing
Build At(UTC): 2022-03-11 11:07:36
Golang Version: go version go1.18.3 linux/amd64
Uploader: xxxxxxxxxxxxx/xxxxxxx/xxxxxxx
ReleasedInputs: all
---------------------------------------------------
Online version available: 1.2.9, commit 9f5ac898be (release at 2022-03-10 12:03:12)
Upgrade:
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_UPGRADE="1";
Set-ExecutionPolicy Bypass -scope Process -Force;
Import-Module bitstransfer;
start-bitstransfer -source https://static.guance.com/datakit-v2/install.ps1 -destination .install.ps1;
powershell ./.install.ps1;
如果当前 DataKit 处于被代理模式,自动更新的提示命令中,会自动加上代理设置:
远程更新服务¶
注意:伺服服务不支持 k8s 中安装的 DataKit。
在 DataKit 安装过程中,默认会安装一个升级管理服务,专用于管理和升级 DataKit 版本。如果是较老的 DataKit 版本,则在 DataKit 升级命令中,可以额外指定参数来安装该服务:
如果已经线下同步了 DataKit 的安装包,假定线下安装包地址是 http://my.static.com/datakit,则此处的升级命令是
我们可以通过 DCA 来实现远程更新,具体参见 DCA 文档。
Info
- 升级过程根据网络带宽情况,可能耗时较长(基本等同于手动调用 DataKit 升级命令),请耐心等待。
- 自版本 Version-1.91.1 开始,移除了直接通过 HTTP 服务升级 DataKit 的功能。
离线更新¶
参见离线安装相关的章节。
更新到指定版本¶
如果需要升级或回退到指定版本,可以通过如下命令进行操作:
例如,手动指定升级到 1.93.0:
其中 1.93.0 可替换为任意目标 1.x 版本号。
上述命令中的 <版本号>,可以从 DataKit 的发布历史页面找到。
若要回退 DataKit 版本,目前只支持退回到 1.2.0 以后的版本,之前的 rc 版本不建议回退。
额外支持的环境变量¶
目前在升级命令中也支持和安装命令一致的环境变量安装命令支持的环境变量,从 1.62.1 版本开始支持。
FAQ¶
更新和安装的差异¶
如果要升级较新版本的 DataKit,可以通过:
- 重新安装
- 执行升级命令
在已经安装好 DataKit 的主机上,建议通过升级命令来升级到较新的版本,而不是重新安装。如果重新安装,所有 datakit.conf 里面的配置都会被重置为默认设置,比如全局 tag 配置、端口设置等等。这可能不是我们所期望的。
不过,不管是重新安装,还是执行升级命令,所有采集相关的配置,都不会因此变更。
版本检测失败的处理¶
在 DataKit 安装/升级过程中,安装程序会对当前运行的 DataKit 版本进行检测,以确保当前运行的 DataKit 版本就是升级后的版本。
但是某些情况下,老版本的 DataKit 服务并未卸载成功,导致检测过程中中发现,当前运行的 DataKit 版本号还是老的版本号:
2022-09-22T21:20:35.967+0800 ERROR installer installer/main.go:374 checkIsNewVersion: current version: 1.4.13, expect 1.4.16
此时我们可以强制停止老版本的 DataKit,并重启 DataKit:
datakit service stop # 停止服务
datakit service start # 启动新的服务
# 如若不行,可以先卸载 DataKit 服务,并重装服务
datakit service uninstall # 卸载服务
datakit service reinstall # 重装服务
# 以上操作完成后,再确认下 DataKit 版本是否是最新版本
datakit version # 确保当前运行的 DataKit 已经是最新的版本
Version: 1.4.16
Commit: 1357544bd6
Branch: master
Build At(UTC): 2022-09-20 11:43:20
Golang Version: go version go1.18.3 linux/amd64
Uploader: zy-infra-gitlab-prod-runner/root/xxx
ReleasedInputs: checked