K8s 集群可观测性-数据分流最佳实践
简介
在微服务架构下,一个 k8s 集群中经常会部署多套业务,同时也意味着不同团队、不同角色、不同的业务会在同一集群中,需要将不同业务的数据在不同的空间进行管理和查看。
在传统的主机环境下,这个是可以通过不同的主机部署 DataKit 时配置不同的工作空间 token 轻松实现,但是在 k8s 环境下使用 DaemonSet 方式部署,同一个 DaemonSet 无法灵活的进行多套 DataKit 配置,且在配置变更时需要重启 DataKit,当 DataKit 达到一定规模影响非常大。
因此,观测云提供的 DataWay Sinker 功能,便成为了以上问题的最佳解决方案。
方案介绍
方案流程

通过上图不难看出,该方案最重要的部分在于进行数据 TAG(标签)管理。数据分流是否达到预期、是否准确、是否实用都取决于 TAG 标签的合理使用以及规划管理。而 TAG 的管理和使用恰好是观测云平台的核心能力之一。
关于如何 TAG 的更多介绍,可以参考《TAG 在观测云中的最佳实践》,在此不再赘述。
除此以外,还支持以下属性进行分流:
- 观测云内置自定义 key,例如:category 针对所有常规数据分类,其取值为对应数据分类的「名称」列(如时序是 metric,对象为 object 等)
- 对象 label 属性以及 k8s 集群的自带属性,例如:
namespace,container_name等
方案实践
下面将从实际案例出发,演示如何通过 DataWay Sinker 功能实现数据的分流以及管理。
在本文中,将按照常用的业务属性 namespace 将数据划分到不同的工作空间。
前提条件,集群中已经部署了观测云 DataKit 采集器。
实践背景
在测试集群中,存在多个 namespace,如下图:

并且使用观测云 DataKit 进行 k8s 集群指标监控,但是所有的监控指标都在一个工作空间 OBS 中,如下图:

希望达到效果:根据不同的 namespace 将监控数据分流至不同的工作空间,如 namespace=datakit 的所有数据分流至观测云 datakit 工作空间。
步骤一:安装 Dataway
对于 SaaS 用户而言,可以在自己本地(k8s Cluster)部署一个 Dataway,专用于分流,然后再将数据转发给 Openway。
1)参考 Dataway 安装文档,安装 dataway ;
2)修改 dataway.yaml ,添加如下 Sinker 相关配置环境变量;
- name: DW_SECRET_TOKEN # 当开启数据分流功能时,用于与DataKit进行链接,注意tkn_后面需添加32位字符串value: "tkn_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
- name: DW_CASCADED # 当开启数据分流功能时,SaaS用户使用级联方式链接value: "on"
- name: DW_SINKER_FILE_PATH # 挂载的sinker.json文件地址value: "/usr/local/cloudcare/dataflux/dataway/sinker.json"
- name: DW_REMOTE_HOST # 配置级联地址value: "https://openway.guance.com"
这里使用的是文件的方式配置分流规则,同时支持 etcd 进行配置,具体配置可以参考 Dataway 配置 。
3)部署 dataway。
步骤二:编辑分流规则
创建文件 sinker.json ,填写如下内容,并将文件挂载至 dataway 容器中。
{"strict":true,"rules": [{"rules": ["{ namespace = 'utils'}" # 匹配规则],# 对应工作空间的openway地址及token"url": "https://openway.guance.com?token=tkn_cb1a9a53fcb04436a4adab6435327fca" },{"rules": ["{ namespace = 'datakit' }"],"url": "https://openway.guance.com?token=tkn_c6e8ae1bbfa2489aba843cc56baf3c66"},{"rules": ["{ namespace != 'datakit',namespace!='utils' }"],"url": "https://openway.guance.com?token=tkn_1618f90ef13b482d9f682f30f7118d2f"}]
}
步骤三:修改 DataKit 配置
1)修改 DataKit 分流环境变量配置;
- name: ENV_DATAWAY # 步骤一中Dataway地址和SECRET_TOKENvalue: http://10.16.253.114:9528?token=tkn_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy- name: ENV_SINKER_GLOBAL_CUSTOMER_KEYS # 指定分流的keyvalue: namespace- name: ENV_DATAWAY_ENABLE_SINKER # 开启分流value: "true"
2)重新部署 DataKit 。
最终效果
- datakit 工作空间中只有 namespace 为 datakit 的数据
- utils 工作空间中只有 namespace 为 utils 的数据
- OBS 工作空间中没有 utils 和 datakit 数据



至此,分流成功。
总结
除以上的例子外,也可以利用 Datakit 内置的自定义 Key,它们一般不会出现在采集的数据中,但 Datakit 可以以这些 Key 来对数据进行分组。如果在这些 Key 的维度有分流的需求,可以将它们添加到「全局自定义 Key」列表中(这些 Key 默认都不配置)。我们可以使用内置一些自定义 Key 来实现数据分流。具体分流规则可以参考内置自定义 key 分流 。
相关文章:
K8s 集群可观测性-数据分流最佳实践
简介 在微服务架构下,一个 k8s 集群中经常会部署多套业务,同时也意味着不同团队、不同角色、不同的业务会在同一集群中,需要将不同业务的数据在不同的空间进行管理和查看。 在传统的主机环境下,这个是可以通过不同的主机部署 Da…...
muduo库的模拟实现——工具部分
文章目录 一、Buffer模块1.为什么需要Buffer缓冲区2.Buffer模块的设计3.Buffer模块的实现4.Buffer缓冲区的其它设计方案 二、Socket模块1.Socket模块的设计2.Socket代码实现 三、Acceptor模块1.Acceptor模块的设计与实现2.Acceptor模块完整代码实现 四、定时器模块1.时间轮的思…...
SpringBoot接入微信公众号【服务号】
SpringBoot接入微信公众号【服务号】 一、服务号注册 注册地址:https://mp.weixin.qq.com/cgi-bin/registermidpage?actionindex&langzh_CN 注册流程参考:https://kf.qq.com/touch/faq/150804UVr222150804quq6B7.html?platform15 二、服务号配…...
2023 英特尔On技术创新大会直播 |探索视觉AI的无限可能
2023 英特尔On技术创新大会直播 | 探索视觉AI的无限可能 前言一未来的 AI:释放视觉 AI 真正潜力二AI技术突破、视觉Al挑战及前沿研究创新三全尺度视觉学习全尺度视觉学习示例1.GridConv 实现三维人体姿态估计更高准确率2.KW 预训练及迁移模型性能3.无数据增强稠密对…...
安卓视图基础
目录 设置视图的宽高 设置视图的间隔 设置视图的对齐方式 设置视图的宽高 设置视图的间隔 设置视图的对齐方式 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"a…...
电路设计(10)——超温报警电路的proteus仿真
1.题目背景 在现实生活中,常有一种工程技术,即带有自动温度补偿的设备,能在规定温度内正常工作。但是为了设备安全,需设定工作的上限温度,万一温控补偿失效,设备温度一旦超出上限温度时,便立即切…...
gerrit(1) | gerrit 简介
gerrit(1) | gerrit 简介 1. 目的 之前用过 gitlab CI/CD, github actions, 以及公司的配置管理员配置的 jenkins。 github 的 MR, github 的 PR, 虽然在用, 但仅限于参与开源项目或公司内的开源项目, OEM 项目中完全没在用。 …...
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
车辆跟踪及测距 该项目一个基于深度学习和目标跟踪算法的项目,主要用于实现视频中的目标检测和跟踪。该项目使用了 YOLOv5目标检测算法和 DeepSORT 目标跟踪算法,以及一些辅助工具和库,可以帮助用户快速地在本地或者云端上实现视频目标检测和…...
redis(5)
文章目录 一、redis 哨兵(sentinel)redis 集群介绍哨兵(Sentinel)工作原理sentinel 架构和故障转移sentinel中的三个定时任务 实时哨兵启动哨兵验证哨兵端口查看哨兵日志当前sentinel状态停止Redis Master测试故障转移恢复故障的m…...
Postgresql体系结构
client连接PostgreSQL过程: 1、客户端发起请求 2、主服务postmaster进程负责服务器是否接受客户端的host通信认证,服务器对客户端进行身份鉴别 3、主服务进程为该客户端单独fork一个客户端工作进程postgres 4、客户端与postgres进程建立通信连接…...
【Rust】——rust前言与安装rust
🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:…...
基于SpringBoot的家电销售展示网页的设计与实现
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…...
【Qt】—— 项⽬⽂件解析
目录 (一).pro⽂件解析 (二)widget.h⽂件解析 (三)main.cpp⽂件解析 (四)widget.cpp⽂件解析 (五)widget.ui⽂件解析 (一).pro⽂…...
【Linux】静态库和动态库
动静态库 一、静态库1. 静态库概念2. 制作静态库(1)朴素方法 --- 不打包(2)对静态库打包 3. 使用静态库(1)朴素方法 --- 直接使用(2)使用打包好的静态库 二、动态库1. 动态库概念2. …...
LeetCode 0292.Nim 游戏:脑筋急转弯
【LetMeFly】292.Nim 游戏:脑筋急转弯 力扣题目链接:https://leetcode.cn/problems/nim-game/ 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合,…...
ctfshow-web1~10-WP
web1 右键查看源码就能看到flag web2 打开网页提示无法查看源代码,右键也使用不了,那我们就在url前面加上view-source: view-source:http://83a83588-671e-4a94-9c6f-6857f9e20c2f.chall.ctf.show/ 访问后即可获得flag web3 右键源码也没看到信息,去查看一下请求头和响应…...
集合问题(并查集)
本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例1: 输入 4 5 9 2 3 4 5 输出 YES 0 0 1 1 样例2: 输入 3 3 4 1 2 4 输出 NO 思路: 这道题关键点在于。 当集合中有一个元素均存在于集合 A 和集合 B 的时…...
Ubuntu文件系统结构
Ubuntu文件系统结构 介绍 Ubuntu是一种备受欢迎的Linux发行版,其文件系统结构以及组织方式是每个使用者和系统管理员都应该了解的重要主题。本篇博客将带您深入探索Ubuntu文件系统的结构,以便更好地理解Linux操作系统的工作原理。 1. 根目录ÿ…...
vue element 组件 form深层 :prop 验证失效问题解决
此图源自官网 借鉴。 当我们简单单层验证的时候发现是没有问题的,但是有的时候可能会涉及到深层prop,发现在去绑定的时候就不生效了。例如我们在form单里面循环验证,在去循环数据验证。 就如下图的写法了 :prop"pumplist. i .device…...
前端开发:入门(一)
当我们开始学习前端开发时,首先接触到的是HTML(超文本标记语言)。HTML是构建网页结构的基础。 1. HTML(超文本标记语言) 介绍和基础语法 HTML,即超文本标记语言,是一种用于创建网页结构的标记…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
