在Docker中部署DataKit最佳实践

本文主要介绍如何在 Docker 中安装 DataKit。

配置和启动 DataKit 容器

登陆观测云平台,点击「集成」 -「DataKit」 - 「Docker」,然后拷贝第二步的启动命令,启动参数按实际情况配置。

拷贝启动命令:

sudo docker run \--hostname "$(hostname)" \--workdir /usr/local/datakit \-v "/etc/conf/dir/conf.d":"/usr/local/datakit/conf.d/host-inputs-conf"-v "/":"/rootfs" \-v /var/run/docker.sock:/var/run/docker.sock \-e ENV_DATAWAY="https://openway.guance.com?token=tkn_XXXX" \-e ENV_DEFAULT_ENABLED_INPUTS='cpu,disk,diskio,mem,swap,system,net,host_processes,hostobject,container,dk' \-e ENV_GLOBAL_HOST_TAGS="tag1=a1,tag2=a2" \-e ENV_HTTP_LISTEN="0.0.0.0:9529" \-e HOST_PROC="/rootfs/proc" \-e HOST_SYS="/rootfs/sys" \-e HOST_ETC="/rootfs/etc" \-e HOST_VAR="/rootfs/var" \-e HOST_RUN="/rootfs/run" \-e HOST_DEV="/rootfs/dev" \-e HOST_ROOT="/rootfs" \--cpus 2 \--memory 1g \--privileged \--publish 9529:9529 \--name datakit-docker \-d \pubrepo.guance.com/datakit/datakit:1.66.2

容器启动后,查看是否启动成功:

docker ps

如下所示,启动成功:

启动参数说明:

  • --hostname:将宿主机的主机名作为 DataKit 运行的主机名,如果需要在当前宿主机上运行多个 DataKit,可以给它适当加一些后缀 --hostname "$(hostname)-dk1"
  • --workdir:设置容器工作目录
  • -v:各种宿主机文件挂载:
    • DataKit 中有很多配置文件,我们可以将其在宿主机上准备好,通过 -v 一次性整个挂载到容器中去(容器中的路径为 conf.d/host-inputs-conf 目录)
    • 此处将宿主机根目录挂载进 Datakit,目的是访问宿主机上的各种信息(比如 /proc 目录下的各种文件),便于默认开启的采集器采集数据
    • 将 docker.sock 文件挂载进 Datakit 容器,便于 container 采集器采集数据。不同宿主机该文件目录可能不同,需按照实际来配置
  • -e:各种 Datakit 运行期的环境变量配置,这些环境变量功能跟 DaemonSet 部署 时是一样的
  • ENV_DATAWAY : 将 token 粘贴到 ENV_DATAWAY 环境变量值中 “token=”
  • --publish:便于外部将 Trace 等数据发送给 Datakit 容器,此处我们将 Datakit 的 HTTP 端口映射到外面的 9529 上,诸如 trace 数据设置发送地址的时候,需关注这个端口设置。
  • --name: 指定 Docker 容器名称,否则,name 将随机生成
  • 此处对该运行的 DataKit 设置了 2C 的 CPU 和 1GiB 内存限制

假如我们在 /host/conf/dir 目录下配置了如下一些采集器:

  • APM:DDTrace/OpenTelemetry 等采集器
  • Prometheuse exporter:在当前 docker 环境中,某些应用容器暴露了自身指标(一般形如 http://ip:9100/metrics),那么我们可以将其端口暴露出来,然后编写 prom.conf 来采集这些指标
  • 日志采集:如果某些 Docker 容器将日志写入了宿主机的某个目录,我们可以单独编写日志采集配置来采集这些文件。不过事先我们需要通过 -v 将这些宿主机的目录挂载进 Datakit 容器。另外,默认开启的 container 采集器,会自动采集所有容器的 stdout 日志

登陆观测云平台,点击「基础设施」 - 「容器」,查看名称为 datakit-docker 容器是否上报,点击进入查看容器详情。

场景演示

如何使用 Docker 的 DataKit 采集用户应用访问数据。

开启 RUM 采集器

在挂载的目录 /etc/conf/dir/conf.d 下创建 rum 目录,然后在 rum 目录下,新建 rum.conf 文件,内容如下:

# {"version": "1.66.2", "desc": "do NOT edit this line"}                                                                                 [[inputs.rum]]                                                                                                                           ## profile Agent endpoints register by version respectively.                                                                           ## Endpoints can be skipped listen by remove them from the list.                                                                       ## Default value set as below. DO NOT MODIFY THESE ENDPOINTS if not necessary.                                                         endpoints = ["/v1/write/rum"]                                                                                                          ## used to upload rum session replay.                                                                                                  session_replay_endpoints = ["/v1/write/rum/replay"]                                                                                    ## specify which metrics should be captured.                                                                                           measurements = ["view", "resource", "action", "long_task", "error", "telemetry"]                                                       ## Android command-line-tools HOME                                                                                                     android_cmdline_home = "/usr/local/datakit/data/rum/tools/cmdline-tools"                                                               ## proguard HOME                                                                                                                       proguard_home = "/usr/local/datakit/data/rum/tools/proguard"                                                                           ## android-ndk HOME                                                                                                                    ndk_home = "/usr/local/datakit/data/rum/tools/android-ndk"                                                                             ## atos or atosl bin path                                                                                                              ## for macOS datakit use the built-in tool atos default                                                                                ## for Linux there are several tools that can be used to instead of macOS atos partially,                                              ## such as https://github.com/everettjf/atosl-rs                                                                                       atos_bin_path = "/usr/local/datakit/data/rum/tools/atosl"                                                                              # Provide a list to resolve CDN of your static resource.                                                                               # Below is the Datakit default built-in CDN list, you can uncomment that and change it to your cdn list,                               # it's a JSON array like: [{"domain": "CDN domain", "name": "CDN human readable name", "website": "CDN official website"},...],        # domain field value can contains '*' as wildcard, for example: "kunlun*.com",                                                         # it will match "kunluna.com", "kunlunab.com" and "kunlunabc.com" but not "kunlunab.c.com".                                            # cdn_map = '''                                                                                                                        # [                                                                                                                                    #   {"domain":"15cdn.com","name":"some-CDN-name","website":"https://www.15cdn.com"},                                                   #   {"domain":"tzcdn.cn","name":"some-CDN-name","website":"https://www.15cdn.com"}                                                     # ]                                                                                                                                    # '''                                                                                                                                  ## Threads config controls how many goroutines an agent cloud start to handle HTTP request.                                            ## buffer is the size of jobs' buffering of worker channel.                                                                            ## threads is the total number fo goroutines at running time.                                                                          # [inputs.rum.threads]                                                                                                                 #   buffer = 100                                                                                                                       #   threads = 8                                                                                                                        ## Storage config a local storage space in hard dirver to cache trace data.                                                            ## path is the local file path used to cache data.                                                                                     ## capacity is total space size(MB) used to store data.                                                                                # [inputs.rum.storage]                                                                                                                 #   path = "./rum_storage"                                                                                                             #   capacity = 5120                                                                                                                    ## session_replay config is used to control Session Replay uploading behavior.                                                         ## cache_path set the disk directory where temporarily cache session replay data.                                                      ## cache_capacity_mb specify the max storage space (in MiB) that session replay cache can use.                                         ## clear_cache_on_start set whether we should clear all previous session replay cache on restarting Datakit.                           ## upload_workers set the count of session replay uploading workers.                                                                   ## send_timeout specify the http timeout when uploading session replay data to dataway.                                                ## send_retry_count set the max retry count when sending every session replay request.                                                 ## filter_rules set the the filtering rules that matched session replay data will be dropped,                                          ## all rules are of relationship OR, that is to day, the data match any one of them will be dropped.                                   # [inputs.rum.session_replay]                                                                                                          #   cache_path = "/usr/local/datakit/cache/session_replay"                                                                             #   cache_capacity_mb = 20480                                                                                                          #   clear_cache_on_start = false                                                                                                       #   upload_workers = 16                                                                                                                #   send_timeout = "75s"                                                                                                               #   send_retry_count = 3                                                                                                               #   filter_rules = [                                                                                                                   #       "{ service = 'xxx' or version IN [ 'v1', 'v2'] }",                                                                             #       "{ app_id = 'yyy' and env = 'production' }"                                                                                    #   ]                                       

然后重启 DataKit。

docker restart datakit-docker
docker ps

进入容器查看是否挂载成功,如下图所示已成功挂载。

docker exec -it datakit-docker /bin/bash
datakit monitor

应用接入

登录观测云控制台,进入「用户访问监测」,点击左上角「新建应用」,即可开始创建一个新的应用。

选择 Web 应用,并选择本地环境部署的 NPM 接入方式。

按需填入配置参数,点击创建,即可在应用列表查看应用。

然后,将 SDK 复制到前端项目中。

启动应用后,进行访问,相关数据会上报到观测云平台。

观测云效果

登录观测云控制台,点击「用户访问监测」 -「应用列表」,然后点击创建的应用。

点击查看器,就能查询采集到的用户访问数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac OS Homebrew更换国内镜像源(中科大;阿里;清华)

omebrew官方的源一般下载包之类的会很慢,所以通常我们都是用国内的镜像源来代替,这样会提高我们的效率。Homebrew主要有四个部分组成: brew、homebrew-core 、homebrew-bottles、homebrew-cask。 代码语言:javascript 代码运行次数&#xf…

React Native 原理

React Native 是一个跨平台移动应用开发框架,它允许开发者使用 JavaScript 和 React 来开发 iOS 和 Android 原生应用。React Native 的核心原理是通过 桥接(Bridge) 技术,使用 JavaScript 来控制原生组件,并将应用逻辑…

实验:k8s+keepalived+nginx+iptables

1、创建两个nginx的pod,app都是nginx nginx1 nginx2 2、创建两个的pod的service 3、配置两台keepalived的调度器和nginx七层反向代理,VIP设置192.168.254.110 keepalived调度器master keepalived调度器backup 两台调度器都配置nginx七层反向代理&#…

火山引擎 DeepSeek R1 API 使用小白教程

一、火山引擎 DeepSeek R1 API 申请 首先需要三个要素: 1)API Key 2)API 地址 3)模型ID 1、首先打开火山引擎的 DeepSeek R1 模型页面 地址:账号登录-火山引擎 2、在页面右下角,找到【推理】按钮&#…

Pytorch使用手册--将 PyTorch 模型导出为 ONNX(专题二十六)

注意 截至 PyTorch 2.1,ONNX 导出器有两个版本。 torch.onnx.dynamo_export 是最新的(仍处于测试阶段)导出器,基于 PyTorch 2.0 发布的 TorchDynamo 技术。 torch.onnx.export 基于 TorchScript 后端,自 PyTorch 1.2.0 起可用。 一、torch.onnx.dynamo_export使用 在 60 …

yolov8_pose模型,使用rknn在安卓RK3568上使用

最近在使用rknn的一些功能,看了看文档以及自己做的一些jni,使用上yolov8_pose的模型. 1.我们先下载一下rknn的模型功能代码,rk有自己做的一套demo 地址:GitHub - airockchip/rknn_model_zooContribute to airockchip/rknn_model_zoo development by creating an account on G…

算法:判断链表是否有环

/*** brief 判断链表是否有环* * 该函数使用快慢指针法来判断链表中是否存在环。* 快指针每次移动两步,慢指针每次移动一步。* 如果链表中存在环,那么快指针最终会追上慢指针;* 如果链表中不存在环,快指针会先到达链表末尾。* * p…

什么是 jQuery

一、jQuery 基础入门 (一)什么是 jQuery jQuery 本质上是一个快速、小巧且功能丰富的 JavaScript 库。它将 JavaScript 中常用的功能代码进行了封装,为开发者提供了一套简洁、高效的 API,涵盖了 HTML 文档遍历与操作、事件处理、…

mysql怎样优化where like ‘%字符串%‘这种模糊匹配的慢sql

一 问题描述 工作中经常遇到这种模糊匹配的慢sql: select * from 表名 where 字段 like %字符串%; 由于前面有%,导致无法走该字段上的索引。 二 解决办法 ① 给该字段创建一个全文索引 CREATE FULLTEXT INDEX 索引名 ON 表名 (字段名); ② 改写sq…

计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

飞书考勤Excel导入到自己系统

此篇主要用于记录Excel一行中,单条数据的日期拿取,并判断上下班打卡情况。代码可能满足不了大部分需求,目前只够本公司用,如果需要,可以参考。 需要把飞书月度汇总的考勤表导入系统中可以参考下。 下图为需要获取的年…

【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

AIGC系列博文: 【AIGC系列】1:自编码器(AutoEncoder, AE) 【AIGC系列】2:DALLE 2模型介绍(内含扩散模型介绍) 【AIGC系列】3:Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件,找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…

傅里叶分析

傅里叶分析之掐死教程(完整版)更新于2014.06.06 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复…

长时间目标跟踪算法(2)-LCT目标跟踪算法

LCT算法的原始论文和源码已开源,原始论文和源码打包下载。 目录 算法简介核心思路与基本原理 2.1 任务分解:平移与尺度估计2.2 时间上下文相关滤波模型2.3 目标外观相关滤波模型2.4 在线随机蕨分类器 实现方案 3.1 关键公式与频域加速3.2 伪代码与流程…

【深度学习】Hopfield网络:模拟联想记忆

Hopfield网络是一种经典的循环神经网络,由物理学家John Hopfield在1982年提出。它的核心功能是模拟联想记忆,类似于人类大脑通过部分信息回忆完整记忆的能力。以下是通俗易懂的解释: 1. 核心思想 想象你看到一张模糊的老照片,虽然…

【算法】【并查集】acwing算法基础837. 连通块中点的数量

题目 给定一个包含 n 个点(编号为 1∼n)的无向图,初始时图中没有边。 现在要进行 m 个操作,操作共有三种: C a b,在点 a 和点 b 之间连一条边,a和 b 可能相等;Q1 a b,询问…

uniapp-原生android插件开发摘要

uni-app在App侧的原生扩展插件,支持使用java、object-c等原生语言编写,从HBuilderX 3.6起,新增支持了使用uts来开发原生插件。 基础项目 UniPlugin-Hello-AS工程请在App离线SDK中查找 基础项目(App离线SDK)已经配置好了自定义插件所需要的…

Idea 中 Project Structure简介

在 IntelliJ IDEA 中,Project Structure(项目结构)对话框是一个非常重要的配置界面,它允许你对项目的各个方面进行详细的设置和管理。下面将详细介绍 Project Structure 中各个主要部分的功能和用途。 1. Project(项…

Linux:进程概念

目录 1 冯诺依曼体系 2 操作系统(Operator System) 3 如何理解管理 3.1计算机管理硬件 3.2 管理逻辑图 3.3 怎样管理 4 什么是进程? 5 查看进程 5.1 ps ajx显示所有进程信息 5.2 /proc(内存文件系统) 5.2.1 ls /proc/PID 5.2.2 ls /proc/PID -al ​ 5…