最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Datakit,真正的統(tǒng)一可觀測性 Agent

2022-06-28 16:43 作者:bili_521854929  | 我要投稿

前言

隨著云、云原生的發(fā)展,越來越多的客戶意識到了“數(shù)據(jù)”的重要性,紛紛掀起了一波數(shù)據(jù)累積浪潮。

現(xiàn)今,國內(nèi)外都有大量的數(shù)據(jù)采集器,但大多數(shù)采集能力單一,比如 Telegraf 僅支持指標,F(xiàn)ilebeat只服務日志,OpenTelemetry 的 Collector對非云原生的組件并不友好,需要大量安裝 Exporter插件。為了實現(xiàn)系統(tǒng)的可觀測性,需要使用多個采集器,造成資源浪費。

Datakit 是目前唯一的真正一體化實現(xiàn)各種環(huán)境(傳統(tǒng)環(huán)境,云/云原生)統(tǒng)一數(shù)據(jù)采集平臺,一個進程或 Daemonset Pod就可以實現(xiàn)全方位的數(shù)據(jù)采集,配置體驗良好,開源且可擴展性強。本文將全面介紹 Datakit 相關功能。

(DataKit 內(nèi)部架構(gòu))

多維度可觀測性數(shù)據(jù)采集

Datakit 支持從各種基礎設施、技術(shù)棧中采集 Metrics、Logs、Traces 等數(shù)據(jù),并對這些數(shù)據(jù)進行結(jié)構(gòu)化處理。

1、實時基礎設施對象

DataKit 支持從主機,容器,k8s,進程,云產(chǎn)品,所有基礎設施對象實時狀態(tài)一網(wǎng)打盡。例如:

(1)Datakit hostobject 用于收集主機基本信息,如硬件型號、基礎資源消耗等。

(2)進程采集器可以對系統(tǒng)中各種運行的進程進行實施監(jiān)控, 獲取、分析進程運行時各項指標,包括內(nèi)存使用率、占用CPU時間、進程當前狀態(tài)、進程監(jiān)聽的端口等,并根據(jù)進程運行時的各項指標信息,用戶可以在觀測云中配置相關告警,使用戶了解進程的狀態(tài),在進程發(fā)生故障時,可以及時對發(fā)生故障的進程進行維護。

2、指標

相比 Telegraf 只能采集時序數(shù)據(jù),DataKit 涵蓋更為全面的數(shù)據(jù)采集類型,有海量的技術(shù)棧的指標收集能力,采集器的配置更簡單,數(shù)據(jù)質(zhì)量更好。

3、日志

日志數(shù)據(jù)對于整體的可觀測性,其提供了足夠靈活、多變的的信息組合方式,正因如此,相比指標和 Tracing,日志的采集、處理方式方案更多,以適應不同環(huán)境、架構(gòu)以及技術(shù)棧的采集場景。

從磁盤文件獲取日志

這是最原始的日志處理方式,不管是對開發(fā)者而言,還是傳統(tǒng)的日志收集方案而言,日志最開始一般都是直接寫到磁盤文件的,寫到磁盤文件的日志有如下幾個特點:

(1)序列式寫入:一般的日志框架,都能保證磁盤文件中的日志,保持時間的序列性

自動切片:由于磁盤日志文件都是物理遞增的,為避免日志將磁盤打爆,一般日志框架都會自動做切割,或者通過一些外部常駐腳本來實現(xiàn)日志切割

(2)基于以上特征,DataKit 只需要要持續(xù)盯住這些文件的變更即可(即采集最新的更新),一旦有日志寫入,則 DataKit 就能采集到,而且其部署也很簡單,只需要在日志采集器的 conf 中填寫要采集的文件路徑(或通配路徑)即可。

通過調(diào)用環(huán)境 API 獲取日志

這種采集方式目前主要針對容器環(huán)境中的 stdout 日志,這種日志要求運行在容器(或 Kubernetes Pod)中的應用將日志輸出到 stdout,然后通過 Docker 的日志接口,將對應 stdout 上的日志同步到 DataKit。

遠程推送日志給 DataKit

對遠程日志推送而言,其主要是

(1)開發(fā)者直接將應用日志推送到 DataKit 指定的服務上,比如 Java 的 log4j 以及 Python 原生的 SocketHandler 均支持將日志發(fā)送給遠端服務。

(2)第三方平臺日志接入

這種形式的特點是日志直接發(fā)送給 DataKit,中間無需落盤。

Sidecar 形式的日志采集

這種方式的采集實際上是綜合了磁盤日志采集和日志遠程推送倆種方式,具體而言,就是在用戶的 Pod 中添加一個跟 DataKit 配套(即 logfwd)的 Sidecar 應用,其采集方式如下:

4、鏈路追蹤

DataKit 當前支持多種廣泛應用的 Trace 數(shù)據(jù),如 zipkin/jaeger/otel/skywalking/ddtrace 等,只需要將對應的數(shù)據(jù)地址指向 Datakit 即可。

5、端行為

DataKit 支持全面收集前端的行為數(shù)據(jù),包括 H5/Android/IOS/Fultter/React-native 等。

RUM(Real User Monitor)采集器用于收集網(wǎng)頁端或移動端上報的用戶訪問監(jiān)測數(shù)據(jù)。建議將 RUM 以單獨的方式部署在公網(wǎng)上,不要跟已有的服務部署在一起(如 Kubernetes 集群)。因為 RUM 這個接口上的流量可能很大,集群內(nèi)部的流量會被它干擾到,而且一些可能的集群內(nèi)部資源調(diào)度機制,可能影響 RUM 服務的運行。

通常生產(chǎn)環(huán)境的 js 文件會經(jīng)過各種轉(zhuǎn)換和壓縮,與開發(fā)時的源代碼差異較大,不便于排錯(debug)。如果需要定位錯誤至源碼中,就得借助于sourcemap文件。

DataKit 支持這種源代碼文件信息的映射,方法是將對應 js 的sourcemap文件進行 zip 壓縮打包,命名格式為 --.zip,上傳至/data/rum/,這樣就可以對上報的error指標集數(shù)據(jù)自動進行轉(zhuǎn)換,并追加 error_stack_source 字段至該指標集中。

6、云原生安全

SChecker 插件,絕對安全的安全巡檢器,lua 沙箱只讀分析,支持 300+ 的安全事件發(fā)現(xiàn),用戶可自定義屬于自己的規(guī)則文件及l(fā)ib庫。

一般在運維過程中有非常重要的工作就是對系統(tǒng),軟件,包括日志等一系列的狀態(tài)進行巡檢,傳統(tǒng)方案往往是通過工程師編寫shell(bash)腳本進行類似的工作,通過一些遠程的腳本管理工具實現(xiàn)集群的管理。但這種方法實際上非常危險,由于系統(tǒng)巡檢操作存在權(quán)限過高的問題,往往使用root方式運行,一旦惡意腳本執(zhí)行,后果不堪設想。實際情況中存在兩種惡意腳本,一種是惡意命令,如rm -rf,另外一種是進行數(shù)據(jù)偷竊,如將數(shù)據(jù)通過網(wǎng)絡 IO 泄露給外部。

因此 Security Checker 希望提供一種新型的安全的腳本方式(限制命令執(zhí)行,限制本地IO,限制網(wǎng)絡IO)來保證所有的行為安全可控,并且 Security Checker 將以日志方式通過統(tǒng)一的網(wǎng)絡模型進行巡檢事件的收集。同時 Security Checker 將提供海量的可更新的規(guī)則庫腳本,包括系統(tǒng),容器,網(wǎng)絡,安全等一系列的巡檢。scheck 為Security Checker 的簡寫。

7、基于 eBPF的網(wǎng)絡監(jiān)控

DataKit eBPF 采集器支持收集面向主機/進程/容器的網(wǎng)絡 4 層/7層的性能與異常數(shù)據(jù)。

eBPF 采集器,采集主機網(wǎng)絡 TCP、UDP 連接信息,Bash 執(zhí)行日志等。本采集器主要包含 ebpf-net 及 ebpf-bash 倆類:

ebpf-net:

數(shù)據(jù)類別: Network

由 netflow、httpflow 和 dnsflow 構(gòu)成,分別用于采集主機 TCP/UDP 連接統(tǒng)計信息和主機 DNS 解析信息;

ebpf-bash:

數(shù)據(jù)類別: Logging

采集 Bash 的執(zhí)行日志,包含 Bash 進程號、用戶名、執(zhí)行的命令和時間等;

CICD 追蹤

DataKit 支持追蹤 Gitlab pipeline/Jenkins的構(gòu)建過程和相關指標日志。

通過配置 Gitlab Webhook,可以實現(xiàn) Gitlab CI 可視化。Datakit 接收到 Webhook Event 后,是將數(shù)據(jù)作為 logging 打到數(shù)據(jù)中心的。

Jenkins 采集器可以通過接收 Jenkins datadog plugin 發(fā)出的 CI Event 實現(xiàn) CI 可視化。

9、支持通過選舉來進行差異化采集

在集群模式下,Datakit 能通過選舉的方式來區(qū)分公共資源和專屬資源的不同采集。對公共資源而言,多個 Datakit 會競選其數(shù)據(jù)采集,但最終只有一個會獲取到采集權(quán),進而可避免對公共資源(比如 MySQL 指標)的重復采集以及可能的單點故障。

而對于專屬資源,主要指主機相關的指標,如內(nèi)存、磁盤等,它們都是由各個不同 Datakit 分別采集,不需要參與選舉。

完整的數(shù)據(jù)處理語言 Pipeline

DataKit 內(nèi)置簡便的數(shù)據(jù)提取、處理引擎 Pipeline,用于提取非結(jié)構(gòu)化數(shù)據(jù),方便查詢與統(tǒng)計。有以下特點:

簡單,每一行就是數(shù)據(jù)處理,支持邏輯判斷

全領域的數(shù)據(jù)處理,所有的收集數(shù)據(jù)均可以通過編寫 Pipeline實現(xiàn)動態(tài)的數(shù)據(jù)預處理

豐富的函數(shù)支持

可通過內(nèi)置的 Pipeline 功能直接操作 DataKit 采集的各種不同類型的數(shù)據(jù),包括時序、日志、Tracing 等。同時還支持通過遠程的方式編輯、調(diào)試 Pipeline,一鍵同步到所有 Datakit 上。

支持通過 git 來進行配置管理

由于大部分配置都是純文本,Datakit 支持通過 Git 方式來管理這些配置,便于集群模式下的配置統(tǒng)一變更和同步。

強大的擴展性&開源兼容

自定義采集器

DataKit 包含定時觸發(fā)用戶自定義 python 采集腳本的一整套方案,支持自定義的 Python數(shù)據(jù)收集能力。

編寫用戶自定義腳本需要用戶繼承 DataKitFramework 類,然后對 run 方法進行改寫。并且支持使用 git repo,一旦開啟 git repo 功能,則 conf 里面的 args 里面填寫的路徑是相對于 gitrepos 的路徑。

第三方接入

DataKit 支持第三方數(shù)據(jù)接入,例如:

Prometheus Exporter與Remote_Endpoint

Prom 采集器可以獲取各種 Prometheus Exporters 暴露出來的指標數(shù)據(jù),只要配置相應的 Exporter 地址,就可以將指標數(shù)據(jù)接入。并且支持監(jiān)聽 Prometheus Remote Write 數(shù)據(jù)。

(2)Filebeat/Flenutd

Elastic Beats 接收器目前支持接收 Filebeat 采集的數(shù)據(jù)。

(3)OpenTelemetry,Skywalking

靈活的部署模型,簡單易用

DataKit 一鍵部署安裝,全云平臺支持,全操作系統(tǒng)支持,內(nèi)置上百種數(shù)據(jù)集成,支持在安裝階段就自動開啟基礎數(shù)據(jù)采集,開箱即用。

基于主機

(1)若目標機器沒有公網(wǎng)訪問出口,DataKit 支持離線部署

(2)支持通過 Ansible 等方式來批量安裝 DataKit

基于 Kubernetes

(1)支持在 K8s 中通過 DaemonSet 方式安裝 DataKit

DataSinker-將數(shù)據(jù)寫入到其他開源協(xié)議下的產(chǎn)品中

Sinker 是 DataKit 中數(shù)據(jù)存儲定義模塊。默認情況下,DataKit 采集到的數(shù)據(jù)是上報給觀測云,但通過配置不同的 Sinker 配置,我們可以將數(shù)據(jù)發(fā)送給不同的自定義存儲。

(1)InfluxDB:目前支持將 DataKit 采集的時序數(shù)據(jù)(M)發(fā)送到本地的 InfluxDB 存儲

(2)M3DB:目前支持將 DataKit 采集的時序數(shù)據(jù)(M)發(fā)送到本地的 InfluxDB 存儲(同 InfluxDB)

(3)Logstash:目前支持將 DataKit 采集的日志數(shù)據(jù)(L)發(fā)送到本地 Logstash 服務

更多功能

自監(jiān)控調(diào)試能力

(1)DataKit 支持以交互式方式執(zhí)行 DQL 查詢,在交互模式下,DataKit 自帶語句補全功能。

(2) DataKit 提供了相對完善的基本可觀測信息輸出,通過查看 DataKit 的 monitor 輸出,我們能清晰的知道當前 DataKit 的運行情況。

(3)DataKit self 采集器用于 DataKit 自身基本信息的采集,包括運行環(huán)境信息、CPU、內(nèi)存占用情況等。

聯(lián)邦模式與代理模式

當 Datakit 無法訪問外網(wǎng)時,可在內(nèi)網(wǎng)部署一個代理將流量發(fā)送出來。

通過 DataKit 內(nèi)置的正向代理服務

通過 Nginx 反向代理服務

當集群中只有一個被采集對象(如 Kubernetes),但是在批量部署情況下,多個 DataKit 的配置完全相同,都開啟了對該中心對象的采集,為了避免重復采集,可以開啟 DataKit 的選舉功能。

全方位開源,安全保障

Datakit 已全方位開源,并且官方維護團隊超過 10 人,可放心使用,安全有保障。

Datakit 開源地址

github:https://github.com/GuanceCloud/datakit

極狐:https://jihulab.com/guance-cloud/datakit

Datakit 官方網(wǎng)站

https://www.datakit.tools/

關于觀測云

觀測云(www.guance.com),新一代 SaaS 化全鏈路數(shù)據(jù)可觀測平臺,實現(xiàn)統(tǒng)一采集、統(tǒng)一標簽、統(tǒng)一存儲和統(tǒng)一界面,帶來全功能的一體化可觀測體驗。觀測云能全環(huán)境高基數(shù)采集數(shù)據(jù),支持多維度信息智能檢索分析,及提供的強大的自定義可編程能力,使系統(tǒng)運行狀態(tài)盡在掌控,故障根因無所遁形。聰明的團隊會觀測,可觀測性用觀測云。


Datakit,真正的統(tǒng)一可觀測性 Agent的評論 (共 條)

分享到微博請遵守國家法律
麟游县| 三明市| 合肥市| 永安市| 富蕴县| 绥芬河市| 淳安县| 道孚县| 林芝县| 水富县| 渭源县| 汾阳市| 中牟县| 阿勒泰市| 奎屯市| 日土县| 中江县| 博罗县| 高唐县| 嫩江县| 山东省| 朔州市| 新宾| 临高县| 黎川县| 绵阳市| 肥乡县| 瓦房店市| 漳平市| 南乐县| 河间市| 富顺县| 高州市| 通河县| 昆山市| 陆河县| 大足县| 枣阳市| 和田市| 安溪县| 丹棱县|