夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

业务组

夜莺中要管理很多东西,比如:告警规则、屏蔽规则、订阅规则、自愈脚本、仪表盘,在创建这些东西的时候,都要先选择一个业务组,因为这些东西都要归属到某个业务组。还有机器也是,安装了 categraf 之后,categraf 就会自动向夜莺注册机器信息,此时这个机器会出现在未归组机器列表种,管理员需要把这个机器归到某个业务组下,业务组的人才能使用。

业务组在夜莺中使用频繁,本篇讲解夜莺监控中的业务组的概念,以及相关的设计初衷。

需求来源

夜莺中要管理很多东西,比如:告警规则、屏蔽规则、订阅规则、自愈脚本、机器等。如果各个东西都放在一个表格里让大家查看、管理,那就比较混乱了,需要有个机制来分门别类。

于是,我们引入了“业务组”的概念。业务组就是一个分组机制,比如 DBA 把 MySQL 的告警规则放到一个业务组里(组名姑且叫 DBA/MySQL),把 Postgres 的告警规则放到另一个业务组里(组名姑且叫 DBA/Postgres);比如 Kubernetes 运维人员,按照集群对 Kubernetes 的宿主机做了拆分,不同的集群的机器放到不同的业务组下,比如分成 K8S/集群AK8S/集群B 等等。

演进

早期版本的夜莺,业务组渲染为扁平的列表,后来发现,其实业务组需要层级结构,比如上面的四个业务组:

  • DBA/MySQL
  • DBA/Postgres
  • K8S/集群A
  • K8S/集群B

渲染为树形结构的话就更方便查看:

DBA
├── MySQL
└── Postgres
K8S
├── 集群A
└── 集群B

所以新版本的夜莺,为了兼容老版本,业务组存储到 DB 的时候,仍然是扁平的列表,但在前端展示的时候,可以根据名称里的分隔符渲染为树形结构。比如上面的例子,名称里的分隔符是 /,当然你也可以使用其他分隔符,比如 -_ 等等。在夜莺的菜单 系统配置-站点设置 里,可以设置业务组展示模式和分隔符。

🟢 推荐使用 / 作为分隔符。

问题

在夜莺里,业务组是全局共享的,既可以把规则挂到业务组上,也可以把机器挂到业务组上,这有个好处,就是方便复用业务组,即业务组创建一次之后,在多个地方都可以使用。

但是这样做也有一个问题,那就是不同的东西,其分组的颗粒度是不同的。比如我们对机器分组的话,可能会分的比较细,比如:

  • DBA/MySQL/Proxy/RegionA
  • DBA/MySQL/Proxy/RegionB

但当我们对告警规则、仪表盘这些东西分组的时候,可能就不会分的那么细了,比如 DBA 所有的仪表盘,可能全部放在 DBA 下面就好了。

这个问题目前不好解决,除非业务组不搞成全局复用的,机器有机器的分组,告警规则有告警规则的分组,仪表盘有仪表盘的分组,这样就会导致有些业务组要重复创建,在机器那创建完了还要在告警规则那再创建一次。鱼与熊掌不可兼得。

划分业务组的最佳实践

虽然业务组既可以用于各类规则的分类,也可以用于机器的分组,但是颗粒度不同,通常机器的分组颗粒度更细,而规则的分组颗粒度较粗。通常,先按照机器分组来规划业务组,然后各类规则、仪表盘等挂到中间层级的业务组上就差不多了。下面咱们先说机器的分组。

不知道读者是否听过“服务树”这个概念,业务组的划分和“服务树”是类似的,通常来讲,顶层是对组织结构的建模,即顶层节点是部门、业务、团队之类的这种信息,比如:

  • 基础架构/运维/容器云 是运维团队里的容器云团队
  • 基础架构/运维/数据库 是运维团队里的数据库运维团队
  • XBU/业务1/产品1 是某个 BU 下面的业务1下面的产品1团队
  • XBU/业务1/产品2 是某个 BU 下面的业务1下面的产品2团队

如果公司的组织架构比较扁平,这个信息的层级会少一些,如果公司组织架构的层级比较多,可以多加几层。

顶层是对组织结构的建模,中层是对系统服务建模,通常中层分两层,系统-模块,比如 Kubernetes 是一个系统,里边的 apiserver、etcd、scheduler 等是不同的模块。

最后说业务组的底层,底层通常是按照集群划分,比如量确实很大,集群上面还可以引入地域的概念,如果量没那么大,只需要按集群划分即可,如果只有一个集群,取消底层集群节点都是可以的。

于是,最终容器云平台的业务组可能是这么划分的:

  • 基础架构/运维/容器云/KubeUI/Webapi/华南集群
  • 基础架构/运维/容器云/KubeUI/Webapi/华北集群
  • 基础架构/运维/容器云/KubeUI/Report/华南集群
  • 基础架构/运维/容器云/KubeUI/Report/华北集群
  • 基础架构/运维/容器云/Kubernetes/etcd/华南集群
  • 基础架构/运维/容器云/Kubernetes/etcd/华北集群
  • 基础架构/运维/容器云/Kubernetes/apiserver/华南集群
  • 基础架构/运维/容器云/Kubernetes/apiserver/华北集群
  • 基础架构/运维/容器云/Kubernetes/scheduler/华南集群
  • 基础架构/运维/容器云/Kubernetes/scheduler/华北集群
  • 基础架构/运维/容器云/Kubernetes/node/华南集群
  • 基础架构/运维/容器云/Kubernetes/node/华北集群

业务组按照机器的颗粒度划分完了之后,规则之类的应该挂在上层,比如 Webapi 的告警规则,可以专门创建一个 基础架构/运维/容器云/KubeUI/Webapi-Rules 的业务组,然后把 Webapi 的告警规则挂到这个业务组上。

如果 Webapi 和 Report 的告警规则都很少,直接一并创建一个 基础架构/运维/容器云/KubeUI-Rules 的业务组,把 Webapi 和 Report 的告警规则都挂到这个业务组上,也是可以的。

仪表盘通常更少,直接创建一个 基础架构/运维/容器云-Dashboards 的业务组,容器云团队所有的仪表盘都挂到这个业务组上,就可以了。

当然,上面的划分逻辑只是一个思路参考,无法适合所有公司,比如有些企业主要用夜莺监控一堆设备(分散在不同地域、工厂),不是服务,那在业务组划分的时候,可以考虑按照地域、工厂等维度进行划分。

FAQ

找不到业务组操作入口

Question:V8 新版本,在人员组织下面怎么找不到业务组的菜单了,那如何对业务组增删改查?

Answer:业务组出现在很多个功能菜单下面,比如告警规则、屏蔽规则、仪表盘、自愈脚本等,可以直接在这些地方对业务组进行增删改查,不需要到一个单独的业务组菜单去操作了。鼠标挪到业务组上,会自动出现编辑 icon,点击编辑 icon 可以对业务组进行编辑、删除,业务组上面有个小加号的 icon,可以新增业务组。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat