首页 > 其他分享 >【云原生】夜莺系统的可观测性实操 - 1

【云原生】夜莺系统的可观测性实操 - 1

时间:2023-04-20 20:32:58浏览次数:32  
标签:原生 性实 业务组 夜莺 Dashboard 监控 仪表盘 下拉框

【云原生】夜莺系统的可观测性实操 - 1

前言

笔者已经在公有云上搭建了一套临时环境,可以先登录体验下:

http://124.222.45.207:17000/login
账号:root/root.2020

指标监控

记录规则

记录规则(Record Rule)实现基于现有指标数据计算出新指标数据,通过定时周期(interval)执行计算规则,形成新的指标时序数列。生产中记录规则往往用于简化PromQL复杂性,夜莺监控系统也是支持的:

【云原生】夜莺系统的可观测性实操 - 1_数据

但是,需要注意的是,夜莺系统中配置记录规则,并不是比如生成Rule规则文件下发到Prometheus中,而是采用【远程查询】- 【解析】 - 【远程写入】方式,涉及到远程读写,所以这里可能需要关注网络IO情况。因为Prometheus配置管理这块较弱,没有提供配置管理功能,也没有相关接口,只能进行文件加载,若要搞成下发配置则需要agent才行,对于后面的告警规则一样,也是远程读取数据自行管理触发告警事件,而没有使用Rule Alarm方式。夜莺系统规则计算逻辑具体参见如下代码:

【云原生】夜莺系统的可观测性实操 - 1_数据_02

源码说明:

  1. 每条记录规则(Record Rule)都会创建一个协程进行计算;
  2. rrc.Eval()就是记录规则计算逻辑,然后Sleep一段时间,实现interval间隔计算规则逻辑;

【云原生】夜莺系统的可观测性实操 - 1_下拉框_03

主要步骤:

1、rrc.promClients.GetCli(rrc.datasourceId).Query():根据Record Rule配置的PromQL从指定数据源查询数据;

2、ts := ConvertToTimeSeries(value, rrc.rule):解析查询数据,主要是将自定义标签(label)添加进去;

3、rrc.promClients.GetWriterCli(rrc.datasourceId).Write(ts):将添加了自定义标签的(label)数据远程写入到数据源中。

1、配置prometheus数据源时,【write_addr】就是配置remote_write地址;

2、如果使用Prometheus,则需要打开--web.enable-remote-write-receiver开关,即将Prometheus作为TSDB库,可以通过remote-write方式远程写入数据,对应接口地址:http://xxx:port/api/v1/write

3、如果使用vm作为远端存储,则需要提供vminsert组件提供的remote write协议接口:http://ip:port/api/v1/write

即时查询

【即时查询】提供PromQL查询页面功能,基本类似于Prometheus UI查询页面,特别需要说的是提供【新手模式】,基本通过表单下拉框选项就可以构建出PromQL查询语句,对于初学者不太熟悉PromQL语法的同学稍显友好,深入学习还是建议PromQL,更加直接灵活,比如group left/right等多指标关联暂未找到支持:

【云原生】夜莺系统的可观测性实操 - 1_数据_04

快捷视图

【快捷视图】属于夜莺系统的一个特色功能,主要是简化即时查询,同时作为监控大盘的一个补充,毕竟组件暴露的指标可能大几十到上百个,而Dashboard展示的内容毕竟有限,难免故障定位中需要查询额外指标信息,这就是【快捷视图】的使用场景。

默认提供了一个【Host View】视图,这里比如自定义个MySQL组件视图,用于查看MySQL组件指标:

【云原生】夜莺系统的可观测性实操 - 1_MySQL_05

完成后如下图:

【云原生】夜莺系统的可观测性实操 - 1_下拉框_06

原理解读:

  • 前置条件用于赛选指标序列series,然后就是指定两个标签:动态过滤标签和展开维度标签;
  • 展开维度标签一般就是获取采集点或实例;
  • 动态过滤标签就是对步骤2中采集点或实例进行分组筛选,比如MySQL节点非常多,可以按照网络域分组方便查找;
  • 选中【MySQL视图】,然后勾选故障MySQL实例节点,监控指标栏就展示出该节点所有指标信息,并按照前缀tab展示(前缀就是截取第一个下划线前面部分),指标说明需要通过metrics.yaml文件维护;

指标查询接口如:/api/v1/label/name/values?start=1681826693&end=1681830293&match[]={ident=~"VM-4-14-centos|categraf01"}

所以,比如ident标签这里要唯一代表一个实例,如一个主机上部署多个exporter就不要使用主机名无法区分,需要使用类似于instance标签,带有ip:port唯一标识。

  • 比如这里查看disk_io_time指标,下面就以ident实例维度聚合,即每个实例展示以avg均值聚合展示一条趋势线,【聚合函数】下拉框可以切换不同的聚合函数,还可以使用计算函数进行数值处理;
  • 【环比】提供1天和7天环比,借助PromQLoffset偏移功能

仪表盘

内置仪表盘

内置仪表盘提供夜莺监控提供的内置公共监控Dashboard,公共Dashboard作为基础模板大家都会使用,所以这里禁止编辑,避免相互影响,如果需要编辑修改做自定义定制,则使用【克隆】功能将公共模板复制一份到指定业务组下,这样业务组就拥有一份私有Dashboard,编辑修改也不会影响到其它项目组监控功能,类似于Grafana实现多租户实现Dashboard隔离:

【云原生】夜莺系统的可观测性实操 - 1_下拉框_07

监控仪表盘

内置仪表盘通过克隆成业务组私有仪表盘,就可以在【监控仪表盘】页面看到,该页面仪表盘按照业务组划分。

夜莺仪表盘可视化数据没有使用Grafana,而是自己开发实现,更加的轻量,方便系统整合。仪表盘和Grafana仪表盘对比,大致概念,操作逻辑相似度非常高,熟悉Grafana仪表盘的用户上手夜莺仪表盘基本没有任何压力,所以,对从Grafana切换过来的用户比较友好,最大的障碍是Grafana官网提供的大量Dashboard没法兼容使用。

但是,我在使用夜莺仪表盘配置过程中发现,夜莺仪表盘功能上还是有很多阉割,保留了大部分常用功能,毕竟Grafana也是一套庞大的系统。

我在配置过程中还是发现一些常见实用的功能缺失:

1、缺失业务组筛选

点击查看仪表盘,ident下拉框筛选主机,发现所有业务组的主机节点都在下拉框中,前端打开Dashboard时应该将业务组标签传递进来(这样感觉定义业务组时必须打开英文标识才行),Dashboard定义一个Constant变量进行接收,然后对ident进行基于业务组标签筛选:

【云原生】夜莺系统的可观测性实操 - 1_下拉框_08

2、变量列表不支持变量引用,导致下拉框联动无法实现。

比如在Dashboard上定义了两个维度筛选下拉框【group】和【name】,【name】下拉框需要和【group】下拉框联动,配置如下,但是夜莺系统好像不太支持。

【云原生】夜莺系统的可观测性实操 - 1_数据_09

3、Data Link功能缺失

很多场景下都需要监控大盘,监控大盘可以汇总的展示所有节点指标数据,在监控大盘中table是常用组件,基于table将所有节点及其重要核心指标列表方式直观展示出来,并基于Data Link跳转指定节点看详情,即监控下钻功能,然后我在夜莺监控Dashboard中并没有找到Data Link功能,只看到【链接】功能,链接只能针对到panel级别跳转,不能到达数据级别跳转,另外【链接】没有实现跳转将当前Dashboard定义的变量一并传递,也使【链接】功能大打折扣。

【云原生】夜莺系统的可观测性实操 - 1_MySQL_10

权限隔离

简单梳理了下夜莺监控系统权限隔离情况,见下图:

【云原生】夜莺系统的可观测性实操 - 1_MySQL_11

用户业务资产两个维度来说,用户采用常见的RBAC基于角色的权限控制,主要授权用户可以访问哪些页面的接口资源,再加上一个团队(Team)概念方便管理。业务资产主要包括Categraf采集点、Record Rule、Dashboard、告警规则和自愈脚本等,并将这些业务资产关联到某个业务组下,不同业务组下这些资产是独立隔离开的,避免相互影响,比如定制仪表盘、修改告警规则等。然后将用户以Team为单元添加到业务组下,即用户拥有操作管理该业务组下相关业务资产权限。

但是,对于基础数据部分,夜莺并没有做到多租户隔离。比如仪表盘是业务组隔离的,但是仪表盘可以访问哪些数据并没有限制;同样的,告警规则隶属于某个业务组,但是基于告警规则触发的告警并没有项目组概念。


【云原生】夜莺系统的可观测性实操 - 1_数据_12

标签:原生,性实,业务组,夜莺,Dashboard,监控,仪表盘,下拉框
From: https://blog.51cto.com/u_16014310/6210555

相关文章

  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅳ)
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数......
  • 云原生2.0网关API标准发展趋势
    摘要:GatewayAPI希望取代IngressAPI。本文分享自华为云社区《云原生2.0网关API标准发展趋势》,作者:华为云云原生团队。云原生网关API标准背景及发展现状GatewayAPI是一个开源的API标准,源自KubernetesSIG-NETWORK兴趣组。从出身角度讲,可谓根正苗红,自从开源以来备受关注,被寄予......
  • SchemaRegestry组件原生的类和方法无法实现flink消费kafka的数据动态调整schema的情况
    0、前提知识储备Conflurent公司的SchemaRegestry组件的基本了解和使用一、背景:0.组件版本flink:1.141.链路调整情况原先链路:oracle-->OGG-->kafka-->flink-->数据库\湖\仓实现链路:oracle-->OGG-->kafka(搭配conflurent公司的SchemaRegestry组件使用)-->flink-->数据库\湖\仓2......
  • 云原生监控|Prometheus
    一、背景Prometheus是由SoundCloud开发的开源监控系统的开源版本。2016年,由Google发起的Linux基金会(CloudNativeComputingFoundation,CNCF)将Prometheus纳入其第二大开源项目。Prometheus在开源社区也十分活跃,成为受欢迎度仅次于Kubernetes的项目Prometheus原理:Prometheu......
  • MASA MAUI Plugin (十)iOS消息推送(原生APNS方式)
    MASAMAUIPlugin(十)iOS消息推送(原生APNS方式)背景MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的补......
  • 云原生之在kubernetes集群下部署Mysql应用
    (云原生之在kubernetes集群下部署mysql应用)一、Mysql介绍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL使用了标准......
  • 前端沙箱利用这些特性实现代码的隔离与限制
    ​随着Web技术的不断发展,前端沙箱也在不断的演进和发展。未来,前端沙箱将更加智能化和自适应,可以根据代码的特征和行为动态调整运行环境,从而提高运行效率和安全性。名词解释:沙箱也称作:“沙盒/沙盘”。沙箱是一种安全机制,为运行中的程序提供隔离环境。通常是作为一些来源不可信......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅲ)
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数据......
  • 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅲ)
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,《火山引擎云原生数据仓库ByteHouse技术白皮书》正式发布。白皮书简述了ByteHouse基于ClickHouse引擎的发展历程,首次详细展现ByteHouse的整体架构设计及自研核心技术,为云原生数......
  • 【博云+智领云】携手云原生大数据领域,开展深度合作
    近日,博云与LinkTimeCloud智领云达成战略合作伙伴关系,基于此前坚实合作基础,全面拓宽合作广度与深度,共同推出基于Kubernetes的企业级容器云+云原生大数据技术融合的新型数字化IT底座,并且在某国家级创新中心首次落地。以Hadoop为中心的大数据生态系统从2006年开源以来,一直是大部分企......