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 分流 。

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

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

相关文章

springboot集成rocketmq-spring-boot-starter的坑(避坑指南)

1.说明版本(解决方法) springboot版本:2.2.2.RELEASE RocketMQ版本:rocketmq-spring-boot-starter 2.2.2 2.坑 rocketmq-spring-boot-starter的版本一开始,使用的是2.2.0版本,一直出现一个问题&#x…

【MybatisPlus篇】查询条件设置(范围匹配 | 模糊匹配 | 空判定 | 包含性判定 | 分组 | 排序)

文章目录 🎄环境准备⭐导入依赖⭐写入User类⭐配置启动类⭐创建UserDao 的 MyBatis Mapper 接口,用于定义数据库访问操作⭐创建配置文件🛸创建测试类MpATest.java 🍔范围查询⭐eq⭐between⭐gt 🍔模糊匹配⭐like &…

11 插入排序和希尔排序

1. 插入排序 基本思想 直接插入排序是一种简单的插入排序法,基本思想: 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 在玩扑克牌时,就用…

【开源】JAVA+Vue+SpringBoot实现学生综合素质评价系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生功能2.2 教师功能2.3 教务处功能 三、系统展示四、核心代码4.1 查询我的学科竞赛4.2 保存单个问卷4.3 根据类型查询学生问卷4.4 填写语数外评价4.5 填写品德自评问卷分 五、免责说明 一、摘要 1.1 项目介绍 基于J…

vite, vue3, vue-router, vuex, ES6学习日记

学习使用vitevue3的所遇问题总结&#xff08;2024年2月1日&#xff09; 组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default…

Flutter开发2:安装Flutter

在本篇博客中&#xff0c;我们将详细介绍如何安装Flutter开发环境。安装Flutter是开始使用Flutter进行跨平台移动应用开发的第一步。让我们开始吧&#xff01; 官方安装文档 步骤1&#xff1a;下载Flutter SDK 打开浏览器&#xff0c;访问Flutter官方网站&#xff1a;https://…

Java面向对象的三大特性

目录 封装 封装的好处&#xff1a; 权限修饰符 this 关键字 继承 使用继承的好处 什么时候用继承 ​编辑 继承的特点 注意点 super关键字 多态 多态的好处? 多态调用成员的特点 多态的弊端 封装 封装告诉我们&#xff0c;如何正确设计对象的属性和方法 简单来说…

深度学习和大数据技术的进步在自然语言处理领域的应用

文章目录 每日一句正能量前言一、深度学习在NLP中的应用二、大数据技术在NLP中的应用三、深度学习和大数据技术的影响四、应用场景后记 每日一句正能量 努力学习&#xff0c;勤奋工作&#xff0c;让青春更加光彩。 前言 随着深度学习和大数据技术的迅猛发展&#xff0c;自然语…

<Linux> 进程信号

目录 一、信号概念 二、信号的作用 三、信号的特性 四、信号捕捉初识 五、信号产生 &#xff08;一&#xff09;通过终端按键产生信号 &#xff08;二&#xff09;硬件中断 &#xff08;三&#xff09;系统调用产生信号 1. kill 函数 2. raise 函数 3. abort 函数 …

2021-10-12 51蛋骗鸡数码管前7位显示1-7第8位显示0-9

缘由 51单片机数码管问题-编程语言-CSDN问答 #include "REG52.h" sbit K1 P3^0; sbit K2 P3^1; sbit K3 P3^2; sbit K4 P3^3; bit k1,wk0; unsigned char code SmZiFu[]{63,6,91,79,102,109,125,7,127,111,128,255,64};//0-9.消隐- unsigned char Js0,miao0,fen…

数据结构—基础知识:哈夫曼树

文章目录 数据结构—基础知识&#xff1a;哈夫曼树哈夫曼树的基本概念哈夫曼树的构造算法哈夫曼树的构造过程哈夫曼算法的实现算法&#xff1a;构造哈夫曼树 数据结构—基础知识&#xff1a;哈夫曼树 哈夫曼树的基本概念 哈夫曼&#xff08;Huffman&#xff09;树又称最优树&…

T06垃圾收集器G1ZGC

垃圾收集器G1&ZGC CMS用的增量更新&#xff0c;G1用的原始快照 G1收集器&#xff08;-XX:UseG1GC&#xff09; G1(Garbage-First)是一款面向服务器的垃圾收集器&#xff0c;主要针对配置多颗处理器及大容量内存的机器&#xff0c;以极高概率满足停顿时间的要求&#xff…