DataKit 更新¶
DataKit 支持手动更新和自动更新两种方式。
额外支持的环境变量¶
目前在升级命令中也支持和安装命令一致的环境变量安装命令支持的环境变量,从 1.62.1 版本开始支持。
前置条件¶
- 远程更新要求 Datakit 版本 >= 1.5.9
- 自动更新要求 DataKit 版本 >= 1.1.6-rc1
- 手动更新暂无版本要求
手动更新¶
直接执行如下命令查看当前 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/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/install.ps1 -destination .install.ps1;
powershell ./.install.ps1;
如果当前 DataKit 处于被代理模式,自动更新的提示命令中,会自动加上代理设置:
远程更新服务¶
注意:伺服服务不支持 k8s 中安装的 Datakit。
在 Datakit 安装过程中,默认会安装一个远程更新的伺服服务,专用于升级 Datakit 版本。如果是较老的 Datakit 版本,则在 Datakit 升级命令中,可以额外指定参数来安装该伺服服务:
如果已经线下同步了 Datakit 的安装包,假定线下安装包地址是 http://my.static.com/datakit
,则此处的升级命令是
Attention
伺服服务默认会绑定在 0.0.0.0:9542
地址上,如果该地址被占用,可以额外指定:
由于伺服服务提供了 HTTP API,它有如下参数可选( Version-1.38.0):
version
:将 Datakit 升级/降级到指定的版本号(如果是离线安装,需确保指定的版本是否已经同步)force
:如果当前 Datakit 尚未启动或行为异常,我们可以通过该参数强制升级它并且拉起服务
我们可以手动调用其接口来实现远程更新,或者通过 DCA 来实现远程更新。
参见 DCA 文档。
Info
- 升级过程根据网络带宽情况,可能耗时较长(基本等同于手动调用 Datakit 升级命令),请耐心等待 API 返回。如果中途中断,其行为是未定义的。
- 升级过程中,如果指定版本不存在,请求会报错(
3.4.5
这个版本不存在):
{
"error_code": "datakit.upgradeFailed",
"message": "unable to download script file http://my.static.com/datakit/install-3.4.5.sh: resonse status: 404 Not Found"
}
- 如果当前 Datakit 未启动,则会报错:
离线更新¶
参见离线安装相关的章节。
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 -T # 停止服务
datakit service -S # 启动新的服务
# 如若不行,可以先卸载 DataKit 服务,并重装服务
datakit service -U # 卸载服务
datakit service -I # 重装服务
# 以上操作完成后,再确认下 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
更新到指定版本¶
如果需要升级或回退到指定版本,可以通过如下命令进行操作:
上述命令中的 <版本号>
,可以从 DataKit 的发布历史页面找到。
若要回退 DataKit 版本,目前只支持退回到 1.2.0 以后的版本,之前的 rc 版本不建议回退。