主机安装¶
本文介绍 DataKit 的基本安装。
注册/登陆观测云¶
浏览器访问 观测云注册入口,填写对应信息之后,即可登陆观测云
获取安装命令¶
登陆工作空间,点击左侧「集成」选择顶部「Datakit」,即可看到各种平台的安装命令。
注意,以下 Linux/Mac/Windows 安装程序,能自动识别硬件平台(arm/x86, 32bit/64bit),无需做硬件平台选择。
安装命令支持 bash
和 ash
( Version-1.14.0) :
bash
DK_DATAWAY=https://openway.guance.com?token=<TOKEN> bash -c "$(curl -L https://static.guance.com/datakit/install.sh)"
ash
DK_DATAWAY=https://openway.guance.com?token=<TOKEN> ash -c "$(curl -L https://static.guance.com/datakit/install.sh)"
安装完成后,在终端会看到安装成功的提示。
Windows 上安装需在 Powershell 命令行安装,且必须以管理员身份运行 Powershell。按下 Windows 键,输入 powershell 即可看到弹出的 powershell 图标,右键选择「以管理员身份运行」即可。
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_DATAWAY="https://openway.guance.com?token=<TOKEN>";
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¶
可以通过在安装命令中添加 DK_LITE
环境变量来安装精简版的 DataKit ( Version-1.14.0) :
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_DATAWAY="https://openway.guance.com?token=<TOKEN>";
$env:DK_LITE="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 只包含以下采集器:
采集器名称 | 说明 |
---|---|
CPU(cpu ) |
采集主机的 CPU 使用情况 |
Disk(disk ) |
采集磁盘占用情况 |
磁盘 IO(diskio ) |
采集主机的磁盘 IO 情况 |
内存(mem ) |
采集主机的内存使用情况 |
Swap(swap ) |
采集 Swap 内存使用情况 |
System(system ) |
采集主机操作系统负载 |
Net(net ) |
采集主机网络流量情况 |
主机进程(host_processes ) |
采集主机上常驻(存活 10min 以上)进程列表 |
主机对象(hostobject ) |
采集主机基础信息(如操作系统信息、硬件信息等) |
Datakit(dk ) |
采集 Datakit 自身运行指标收集 |
用户访问监测 (rum ) |
用于收集用户访问监测数据 |
网络拨测 (dialtesting ) |
采集网络拨测数据 |
Prom 采集 (prom ) |
采集 Prometheus Exporters 暴露出来的指标数据 |
日志采集 (logging ) |
采集文件日志数据 |
安装 DataKit 的 eBPF Trace Linker 版本¶
可以通过在安装命令中添加 DK_ELINKER
环境变量来安装用于 eBPF Span 的连接和 eBPF Trace 生成的 DataKit ELinker 版本( Version-1.30.0):
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_DATAWAY="https://openway.guance.com?token=<TOKEN>";
$env:DK_ELINKER="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 ELinker 只包含以下采集器:
采集器名称 | 说明 |
---|---|
CPU(cpu ) |
采集主机的 CPU 使用情况 |
Disk(disk ) |
采集磁盘占用情况 |
磁盘 IO(diskio ) |
采集主机的磁盘 IO 情况 |
eBPF Trace Linker(ebpftrace ) |
接收 eBPF 链路 span 并连接这些 spans 来生成 trace id 等信息 |
Swap(swap ) |
采集 Swap 内存使用情况 |
System(system ) |
采集主机操作系统负载 |
Net(net ) |
采集主机网络流量情况 |
主机对象(hostobject ) |
采集主机基础信息(如操作系统信息、硬件信息等) |
DataKit(dk ) |
采集 DataKit 自身运行指标收集 |
安装指定版本的 DataKit¶
可通过在安装命令中指定版本号来安装指定版本的 DataKit,如安装 1.2.3 版本的 DataKit:
DK_DATAWAY=https://openway.guance.com?token=<TOKEN> bash -c "$(curl -L https://static.guance.com/datakit/install-1.2.3.sh)"
Windows 下同理:
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_DATAWAY="https://openway.guance.com?token=<TOKEN>";
Set-ExecutionPolicy Bypass -scope Process -Force;
Import-Module bitstransfer;
start-bitstransfer -source https://static.guance.com/datakit/install-1.2.3.ps1 -destination .install.ps1;
powershell ./.install.ps1;
额外支持的安装变量¶
如果需要在安装阶段定义一些 DataKit 配置,可在安装命令中增加环境变量,在 DK_DATAWAY
前面追加即可。如追加 DK_NAMESPACE
设置:
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_DATAWAY="https://openway.guance.com?token=<TOKEN>";
$env:DK_NAMESPACE="[NAMESPACE]";
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;
俩种环境变量的设置格式为:
# Windows: 多个环境变量之间以分号分割
$env:NAME1="value1"; $env:Name2="value2"
# Linux/Mac: 多个环境变量之间以空格分割
NAME1="value1" NAME2="value2"
安装脚本支持的环境变量如下(全平台支持)。
最常用环境变量¶
DK_DATAWAY
:指定 DataWay 地址,目前 DataKit 安装命令已经默认带上DK_GLOBAL_TAGS
:已弃用,改用 DK_GLOBAL_HOST_TAGSDK_GLOBAL_HOST_TAGS
:支持安装阶段填写全局主机 tag,格式范例:host=__datakit_hostname,host_ip=__datakit_ip
(多个 tag 之间以英文逗号分隔)DK_GLOBAL_ELECTION_TAGS
:支持安装阶段填写全局选举 tag,格式范例:project=my-porject,cluster=my-cluster
(多个 tag 之间以英文逗号分隔)DK_CLOUD_PROVIDER
:支持安装阶段填写云厂商(目前支持如下几类云主机aliyun/aws/tencent/hwcloud/azure
)。该功能已弃用,Datakit 已经可以自动识别云主机类型。DK_USER_NAME
:Datakit 服务运行时的用户名。默认为root
。更详情的说明见下面的 “注意事项”。DK_DEF_INPUTS
:默认开启的采集器配置。如果要禁用某些采集器,需手动将其屏蔽,比如,要禁用cpu
和mem
采集器,需这样指定:-cpu,-mem
,即除了这两个采集器之外,其它默认采集器均开启。DK_LITE
:安装精简版 DataKit 时,可设置该变量为1
。( Version-1.14.0)
禁用所有默认采集器 Version-1.5.5
如果要禁用所有默认开启的采集器,可以将 DK_DEF_INPUTS
设置为 -
,如
DK_DEF_INPUTS="-" \
DK_DATAWAY=https://openway.guance.com?token=<TOKEN> \
bash -c "$(curl -L https://static.guance.com/datakit/install.sh)"
另外,如果之前有安装过 Datakit,必须将之前的默认采集器配置都删除掉,因为 Datakit 在安装的过程中只能添加采集器配置,但不能删除采集器配置。
注意事项
由于权限问题,如果通过 DK_USER_NAME
修改 Datakit 服务运行时的用户名为非 root
,那么以下采集器将不可使用:
另外,需要注意以下几项:
-
必须先手动创建好用户和用户组,用户名和用户组名称必须一致,再进行安装。不同 Linux 发行版创建的命令可能会有差异,以下命令仅供参考:
DataKit 自身日志相关¶
DK_LOG_LEVEL
: 可选值 info/debugDK_LOG
: 如果改成 stdout, 日志将不写文件,而是终端输出DK_GIN_LOG
: 如果改成 stdout, 日志将不写文件,而是终端输出
DataKit pprof 相关¶
DK_ENABLE_PPROF
: 是否开启pprof
。 Version-1.9.2 已默认开启。DK_PPROF_LISTEN
:pprof
服务监听地址
DataKit 选举相关¶
DK_ENABLE_ELECTION
: 开启选举,默认不开启,如需开启,给该环境变量任意一个非空字符串值即可。(如True
/False
)DK_NAMESPACE
:支持安装阶段指定命名空间(选举用)
HTTP/API 相关环境变量¶
DK_HTTP_LISTEN
:支持安装阶段指定 DataKit HTTP 服务绑定的网卡(默认localhost
)DK_HTTP_PORT
:支持安装阶段指定 DataKit HTTP 服务绑定的端口(默认9529
)DK_RUM_ORIGIN_IP_HEADER
: RUM 专用DK_DISABLE_404PAGE
: 禁用 DataKit 404 页面 (公网部署 DataKit RUM 时常用。如True
/False
)DK_INSTALL_IPDB
: 安装时指定 IP 库(当前仅支持iploc/geolite2
)DK_UPGRADE_IP_WHITELIST
: 从 Datakit 1.5.9 开始,支持远程访问 API 的方式来升级 Datakit,此环境变量用于设置可以远程访问的客户端 IP 白名单(多个 IP 用逗号,
分隔),不在白名单内的访问将被拒绝(默认是不做 IP 限制)。DK_UPGRADE_LISTEN
: 指定升级服务绑定的 HTTP 地址(默认0.0.0.0:9542
) Version-1.38.1DK_HTTP_PUBLIC_APIS
: 设置 Datakit 允许远程访问的 HTTP API ,RUM 功能通常需要进行此配置,从 Datakit 1.9.2 开始支持。
DCA 相关¶
DK_DCA_ENABLE
:支持安装阶段开启 DCA 服务(默认未开启)DK_DCA_LISTEN
:支持安装阶段自定义配置 DCA 服务的监听地址和端口(默认0.0.0.0:9531
)DK_DCA_WHITE_LIST
: 支持安装阶段设置访问 DCA 服务白名单,多个白名单以,
分割 (如:192.168.0.1/24,10.10.0.1/24
)
外部采集器相关¶
DK_INSTALL_EXTERNALS
: 可用于安装未与 DataKit 一起打包的外部采集器
Confd 配置相关¶
环境变量名 | 类型 | 适用场景 | 说明 | 样例值 |
---|---|---|---|---|
DK_CONFD_BACKEND | string | 全部 | 后端源类型 | etcdv3 或 zookeeper 或 redis 或 consul |
DK_CONFD_BASIC_AUTH | string | etcdv3 或 consul |
可选 | |
DK_CONFD_CLIENT_CA_KEYS | string | etcdv3 或 consul |
可选 | |
DK_CONFD_CLIENT_CERT | string | etcdv3 或 consul |
可选 | |
DK_CONFD_CLIENT_KEY | string | etcdv3 或 consul 或 redis |
可选 | |
DK_CONFD_BACKEND_NODES | string | 全部 | 后端源地址 | [IP:2379, IP2:2379] |
DK_CONFD_PASSWORD | string | etcdv3 或 consul |
可选 | |
DK_CONFD_SCHEME | string | etcdv3 或 consul |
可选 | |
DK_CONFD_SEPARATOR | string | redis |
可选默认 0 | |
DK_CONFD_USERNAME | string | etcdv3 或 consul |
可选 |
Git 配置相关¶
DK_GIT_URL
: 管理配置文件的远程 git repo 地址。(如http://username:password@github.com/username/repository.git
)DK_GIT_KEY_PATH
: 本地 PrivateKey 的全路径。(如/Users/username/.ssh/id_rsa
)DK_GIT_KEY_PW
: 本地 PrivateKey 的使用密码。(如passwd
)DK_GIT_BRANCH
: 指定拉取的分支。为空则是默认,默认是远程指定的主分支,一般是master
。DK_GIT_INTERVAL
: 定时拉取的间隔。(如1m
)
Sinker 相关配置¶
通过 DK_SINKER_GLOBAL_CUSTOMER_KEYS
用于设置 sinker 过滤的 tag/field key 名称,其形式如下:
Remove-Item -ErrorAction SilentlyContinue Env:DK_*;
$env:DK_DATAWAY="https://openway.guance.com?token=<TOKEN>";
$env:DK_DATAWAY_ENABLE_SINKER="on";
$env:DK_SINKER_GLOBAL_CUSTOMER_KEYS="key1,key2";
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;
资源限制配置相关¶
目前仅支持 Linux 和 Windows ( Version-1.15.0) 操作系统。
DK_LIMIT_DISABLED
:关闭资源限制功能(默认开启)DK_LIMIT_CPUMAX
:支持 CPU 的最大功率,默认 30.0DK_LIMIT_MEMMAX
:限制内存(含 swap)最大用量,默认 4096(4GB)
其它安装选项¶
环境变量名 | 取值示例 | 说明 |
---|---|---|
DK_INSTALL_ONLY |
on |
仅安装,不运行 |
DK_HOSTNAME |
some-host-name |
支持安装阶段自定义配置主机名 |
DK_UPGRADE |
1 |
升级到最新版本(注:一旦开启该选项,除 DK_UPGRADE_MANAGER 外其它选项均无效) |
DK_UPGRADE_MANAGER |
on |
升级 Datakit 同时是否升级 远程升级服务,需要和 DK_UPGRADE 配合使用, 从 1.5.9 版本开始支持 |
DK_INSTALLER_BASE_URL |
https://your-url |
可选择不同环境的安装脚本,默认为 https://static.guance.com/datakit |
DK_PROXY_TYPE |
- | 代理类型。选项有:datakit 或 nginx ,均为小写 |
DK_NGINX_IP |
- | 代理服务器 IP 地址(只需要填 IP 不需要填端口)。这个与上面的 "HTTP_PROXY" 和 "HTTPS_PROXY" 互斥,而且优先级最高,会覆盖以上两者 |
DK_INSTALL_LOG |
- | 设置安装程序日志路径,默认为当前目录下的 install.log,如果设置为 stdout 则输出到命令行终端 |
HTTPS_PROXY |
IP:Port |
通过 Datakit 代理安装 |
DK_INSTALL_RUM_SYMBOL_TOOLS |
on |
是否安装 RUM source map 工具集,从 Datakit 1.9.2 开始支持 |
DK_VERBOSE |
on |
打开安装过程中的 verbose 选项(仅 Linux/Mac 支持),将输出更多调试信息 Version-1.19.0 |
DK_CRYPTO_AES_KEY |
0123456789abcdfg |
使用加密后的密码解密秘钥,用于采集器中明文密码的保护 Version-1.31.0 |
DK_CRYPTO_AES_KEY_FILE |
/usr/local/datakit/enc4dk |
秘钥的另一种配置方式,优先于上一种。将秘钥放到该文件中,并将配置文件路径通过环境变量方式配置即可。 |
FAQ¶
如何应付不友好的主机名¶
由于 DataKit 使用主机名(Hostname)作为数据串联的依据,某些情况下,一些主机名取得不是很友好,比如 iZbp141ahn....
,但由于某些原因,又不能修改这些主机名,这给使用带来一定的困扰。在 DataKit 中,可在主配置中覆盖这个不友好的主机名。
在 datakit.conf
中,修改如下配置,DataKit 将读取 ENV_HOSTNAME
来覆盖当前的真实主机名:
Attention
如果之前某个主机已经采集了一段时间的数据,更改主机名后,这些历史数据将不再跟新的主机名关联。更改主机名,相当于新增了一台全新的主机。
Mac 安装问题¶
Mac 上安装时,如果安装/升级过程中出现
"launchctl" failed with stderr: /Library/LaunchDaemons/cn.dataflux.datakit.plist: Service is disabled
# 或者
"launchctl" failed with stderr: /Library/LaunchDaemons/com.guance.datakit.plist: Service is disabled
执行
然后再执行如下命令即可
sudo launchctl load -w /Library/LaunchDaemons/cn.dataflux.datakit.plist
# 或者
sudo launchctl load -w /Library/LaunchDaemons/com.guance.datakit.plist
Datakit 是否有文件以及数据的高危操作?¶
Datakit 在运行过程中,根据采集配置不同,会读取很多系统信息,比如进程列表、软硬件信息(比如操作系统信息、CPU、内存、磁盘、网卡等)。但它不会主动执行删除、修改其自身之外的其它数据。关于文件读写,分成两个部分,一个是和数据采集有关的读文件/端口操作,一个是 Datakit 自身运行过程中一些必要的文件读写操作。
采集需要读取的主机文件:
-
在进程信息采集、软硬件信息采集的过程中,Linux 下会读取 /proc 目录下的相关信息;Windows 下主要通过 WMI 以及 Golang Windows SDK 来获取这些信息
-
如果配置了相关的日志采集,根据采集的配置,会扫描并且读取符合配置的日志(比如 syslog,用户应用日志等)
-
端口占用:Datakit 为了对接一些其它系统,会单独开启一些端口服务来接收外部数据。这些端口根据采集器不同,按需开启
-
eBPF 采集:eBPF 由于其特殊性,需要更多 Linux 内核以及进程的二进制信息,会有如下一些动作:
- 分析所有(或指定的)在运行的程序(动态库、容器内进程)的二进制文件内包含的符号地址
- 读写内核 DebugFS 挂在点下的文件或 PMU(Performance Monitoring Unit)以放置 kprobe/uprobe/tracepoint eBPF 探针
- uprobe 探针会修改用户进程的 CPU 指令,以读取相关数据
除了采集之外,Datakit 自身会有如下文件读写操作:
- 自身日志文件
Linux 安装时位于 /var/log/datakit/ 目录下;Windows 位于 C:\Program Files\datakit 目录下。
日记文件到达指定大小(默认 32MB)后会自动 Rotate,并且有最大 Rotate 个数上限(默认最大 5 + 1 个分片)。
- 磁盘缓存
部分数据采集需要用到磁盘缓存功能(需手动开启),这部分缓存会在生成和消费过程中有文件增删。磁盘缓存也有最大 capacity 设置,数据满了之后,会自动执行 FIFO 删除操作,避免写满磁盘。
Datakit 如何控制自身资源消耗?¶
可以通过 cgroup 等机制来限制 Datakit 自身资源使用,参见这里。如果 Datakit 部署在 Kubernetes 中,参见这里。
Datakit 自身可观测性?¶
Datakit 在运行过程中,暴露了很多自身的指标。默认情况下,Datakit 通过内置采集器会采集这些指标并上报到用户的工作空间。
除此之外,Datakit 自身还带有一个 monitor 命令行工具,通过该工具,能查看当前的运行状态以及采集、上报情况。