联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

免费开启

支持私有云环境部署

代码托管平台

DataKit 10大核心能力
12/24/2021
DataKit 是观测云的统一的数据收集 Agent,与开源的 Telegraf 相比,它又不仅仅是一个数据收集的 Agent,其包含了丰富的功能。接下来就分享一下 DataKit 的最主要的 10 大核心能力。

1. 对于各种技术栈的全量数据收集

DataKit 能从各种基础设施,技术栈中收集全量的数据,这里的全量数据不仅仅是指 Metrics (指标),而是也支持相关的日志,包括链路等数据。同时所有的指标,日志数据均进行了结构化处理,最重要的是统一了相关的 Tag 命名,使得后续在使用数据时可以有效的进行数据关联。这里需要说明的是,这种数据能力收集也包括了 APM (jaeger, zipkin, skywalking, ddtrace)及 RUM 的数据收集和集成能力。

2. 强大的云原生支持

DataKit 对容器和云原生进行了特别的支持,不仅仅是默认配置就可以自动将容器相关的指标、日志、对象等数据有效的同步上来,并且所有收集的数据均默认标记了所需的相关 Tag,如 container_name, pod_name 等,方便进行数据定位,同时 DataKit 全面支持 OpenTelemetry,其包含 OpenMetric 和 OpenTracing,意味着 CNCF 的所有组件均可以通过 DataKit 完美集成。

3. 数据收集的自动选举能力

在集群中通常会出现需要通过中心进行数据收集的能力,即数据的采集源在中心,如 Kubernetes 集群的 API,为了维护方便,高可用及降低消耗。 DataKit 具有 选举能力,对于那些中心化的数据收集,可以通过开启选举,避免配置相同的 DataKit 不同节点重复采集,也避免需要指定某一个 DataKit 采集某个服务导致的配置管理复杂度和可靠性。

4. 强大的维护能力

DataKit 作为一个需要安装在每一台主机(Node)上的组件,其自身部署首先就支持包括单机部署容器化部署,以及 Kubernetes 下的 Daemoset 方式部署。同时可以通过传统的配置文件(conf.d),环境变量,Docker Label 及 Kubernetes Annotation 方式进行配置的修改,非常灵活。

5. 可编程的数据处理引擎 DataKit Pipeline

DataKit 内置了数据处理引擎 Pipeline,Pipeline 是一种基于行进行数据处理的指令集,通过内置的各种处理函数,可以在数据上报前对数据进行进一步的处理,其中包括了对日志文本文件进行结构化处理。Pipeline 的函数中还包含了日期、正则、JSON、IP地址、URLDecode、脱敏等。

6. 基于 Python 编写自定义采集器

DataKit 本身内置了海量的技术栈的数据采集能力,但肯定还有大量未支持的技术栈以及用户自定义所需要收集的数据,因此 DataKit 内置了一个基于 Python 可自定义数据采集的模块(pythonD),除了可以实现自定义的采集,pythonD 还可以读取观测云的数据,可以通过 pythonD 实现一些面向主机的 Action。

7. 一切皆可以 GitOps

DataKit 所支持的无论是配置文件(conf.d), pipeline,还是 PythonD,均可以通过绑定不同的 Git Branch,来实现对于所有相关配置文本的 Git 化管理,方便管理人员一次性有效维护海量的集群。

8. API Server

DataKit 本身也是一个观测云在客户侧的一个 API Server,可以通过访问 DataKit API 实现对观测云中心数据的访问和处理,如通过 PythonD 就可以获取中心的相关数据,实现基于数据的 Action,也可以通过安装 DataFlux Func 来连接 DataKit 数据源,与观测云进行通讯,也可以实现一个自定义的程序直接通过 HTTP 方式与 DataKit 所连接的观测云发生互动。

9. 友好强大的命令行

DataKit 本身作为一个命令行也具备强大的功能,可以通过 datakit -- dql 直接查询 DataKit 所连接的观测云中心的数据。通过 datakit -- moniter 可以有效的进行 DataKit 本身内部 input 运行情况的监控和故障排查。同时包括 Grok 及 Pipeline 的调试也集成在 DataKit 的命令行中。也可以通过 Cron 命令开启 DataKit 本身的 OTA 升级。

10.开源兼容

DataKit 本身所有代码均 开放源码,同时 DataKit 本身收集的输出支持标准的行协议输出,所以也可以将 DataKit 直接对接开源的数据平台,如 InfluxDB。