【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

华为云 AOM 立体运维系列 -- 云上 CMDB 设计与应用全景可视化运维

  • 2020-03-30
  • 本文字数:3456 字

    阅读完需:约 11 分钟

华为云AOM立体运维系列--云上CMDB设计与应用全景可视化运维

上一期分享了华为云 AOM 立体运维的架构与设计目标,接下来从各子模块的角度,持续的解析下立体运维的特性。本篇从应用运维可视化的出发,分享一下 AOM 的服务自动发现功能以及基于云应用特点的 CMDB 的设计思想。

一、立体运维可视化之应用全景视图

通常情况下,企业在云上可以部署多个应用,站在运维管理员的视角,需要能够快速判断整体资源的运行情况,基于这个诉求,AOM 推出了一个涵盖了企业全部应用资源运行状态的分层全景视图,我们称为应用全景图。在应用全景中,您可以选中任意一段时间来查看历史资源的快照及最新资源的运行状态。通过双击任意一个资源标识,可以快速查看关联资源状态及各种指标,这个场景对于快速分析故障影响的资源范围非常有用,可以快速缩短定位时间。


如下为应用全景的截图,可以看到界面上分层展示了资源的列表及蜂巢图表示的资源运行状态。



通过双击异常节点,快速关联出受影响的资源,如下所示,通过双击异常服务,关联出当前异常涉及到的实例异常,但实例所在主机并无异常,因此可以进一步通过实例的指标来进行分析



通过单击实例节点上的详情图标(如下)



打开资源指标详情界面,查看实例的各类指标是否正常,这里发现指标已经没有了,因此可以跳转到这个实例的详细监控界面去查看对应的日志及告警和阈值等信息。另外在这个界面,可以将用户常用的指标创建为一个视图模板保存起来以便下次分析,还可以直接加入到仪表盘中进行日常运维。



实例监控详情界面示意,可以同时查看实例的告警,日志及指标数据:



以上应用全景图将用户的云应用分为了应用、服务、实例、主机及云服务五层,这五层称为 AOM 的业务模型,通过将用户的容器实例或者 VM 进程按逻辑分组,分别对应到这五层中去运维。


因为应用全景中有大量的资源,如果不能自动将应用发现并匹配到对应的业务模型中去,对用户使用来说这个将是巨大的障碍。所以在这个功能的背后,有两个问题需要解决:


1)服务自动发现


2)存量资源(CMDB)管理及模型匹配

二、为什么需要服务自动发现

容器技术正在快速改变着公司和用户创建,发布,运行分布式应用的方式。容器技术改变了开发者的能力,对于公司来说,投入产出比大大提高。华为提供的云容器引擎服务(CCE)正越来越快的向各种领域提供支持,如游戏、视频,电商及汽车等领域,已经大规模的应用容器技术。但是,基于容器技术(docker)支持的服务通常监控起来更加复杂,首先容器比传统的虚拟机应用相比,相同配置主机可以运行更多容器,其次对于管理容器的 Kubernetes,Mesos 和 ECS 等编排系统,用户只需要按规则部署,甚至可能不知道容器在任何给定时刻的运行位置(参考下图中所示的副本管理机制),因此当容器出现问题时,如果不能获取容器当时的快照,对于问题分析或者定位都造成一定程度的困难。这种场景下,传统的手动监控配置很难满足需求。



一个 Kubernetes 按副本数管理容器的示例


另外,当我们构建面向容器监控的服务发现能力时,虚拟机上的普通服务也应当被考虑到,需要支持用户按同样的业务模型去运维应用,基于以上背景,我们设计了服务自动发现的功能。

三、服务自动发现的功能设计

服务发现的功能被设计为一个运行于采集器之中的插件,通过执行服务端下发的规则进行动态的扫描,以匹配哪些容器或者进程满足被监控的条件,部署示意图如下:



要动态执行服务发现规则,首先要解决的就是规则下发问题。采集器不能一直请求服务端来获取最新规则,而是以如下方式去获取。采集器会以管理员权限运行,在与服务端保持心跳的过程中,通过服务端返回的状态码来判断是否需要更新插件或者某些配置,如果发现有服务端有新的服务发现规则,就会在心跳返回后,再发起一次请求来获取当前主机需要执行的最新的服务发现规则列表。


下发通道打通后,接下来通过对服务发现规则进行抽象建模,设计规则本身的模型。见下图:


服务发现规则由发现规则与命名规则两部分组成,分别完成不同阶段的不同功能。



规则被定义后,接着分析规则的执行流程



通过以上分析,我们抽象出的服务发现规则的模型如下(JSON 格式):


一个完整的服务发现规则,包括应用类型的定义,进程发现规则的定义,进程属性的抽取,命名规则的定义。



完成以上模型设计后,针对服务自动发现还要解决以下问题:


  1. 0 配置发现容器应用

  2. 通过插件监控 docker 的 unix socket 接口curl --unix-socket /var/run/docker.sock

  3. 来监控是否有容器变更的事件,通过具体的容器详情接口,获取容器编排的属性,如 Kubernetes 属性。

  4. 支持容器的自定义指标及日志采集

  5. 当前仅支持对于 Kubernetes 编排的容器,通过 POD 属性中的 annotation 标签获取自定义指标的采集 Endpoint。


配置方法示例:


annotations:metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"prometheus","path":"/metrics","port":"9121","names":[" redis_used_cpu_user "," redis_used_cpu_user_children "]}]'
复制代码


通过 POD 中定义的 logploicy 来获取自定义日志的采集路径


配置方法示例:



3.免配置或少配置支持非容器的普通 VM 进程发现


对于常见语言开发的应用,如 java, go, python 提供默认发现规则,通过运行时容器或者二进制中的版本信息来决定匹配哪种技术栈,然后执行对应的默认发现规则,通过常见的方法如 jar 包名称或者 main 方法名称来命名发现的服务,然后支持别名和改名的操作。也给非容器用户开箱即用的良好体验。


4.支持发现范围配置


对于某些规则来讲,可能不需要在全局生效,用户可以指定在某些主机上去执行,通过发现规则中的 scope 及 hostID 配置,使主机在收到规则时可以检测规则的支持范围,如果不支持则不再执行。


5.支持发现规则优先级管理


配置多条服务发现规则后,可能由于不同规则的匹配规则发生交叉,将影响匹配到的结果,因此对于多条规则的执行顺序,要能通过优先级进行排序,执行流程参考上述的执行流图。通过在规则中增加 priority 来设置优先级。

四、如何使用服务发现功能

AOM 提供了向导式的配置功能,通过 4 步完成服务发现的设置功能。


第一步:如下图所示,首先通过一个预探测的节点来为后续规则提供验证环境



第二步:通过在这个主机上执行定义好的发现规则来发现进程(这一步同时可以关联到进程默认打开的日志文件,用户可以在这里决定是否采集日志文件进行分析)



第三步:通过命名规则来为每一个实例生成一个服务名称,以便发现后在对应的业务模型下去监控用户的进程



第四步:通过设置优先和探测范围来管理这一条规则



基于以上四步即可完成一个规则的配置及最终效果的预览

五、存量资源的管理(CMDB)

服务被发现后,服务的详细信息将被发送到 AOM 的管理面,在上一篇文章的介绍中,AOM 中有一个 INV 的存量服务用于管理这些信息,这个服务也称为 AOM 的 CMDB,这个服务需要实现以下功能:


  • 分离业务模型与存量资源模型

  • 存量模型能表述不同的云服务下的不同云资源

  • 支持对云服务内云资源建立映射关系

  • 支持对跨云服务的资源建立映射关系

  • 支持云资源标签管理(打标签,同步标签,按标签查询)

  • 支持历史资源快照


下面通过几张图描述下 AOM 的 CMDB 是如何支撑这个功能的


1、存量模型与业务模型的概念


首先,我们认为各种应用及不同的编排系统都有其各自的模型(我们称为存量模型),因此在资源的配置 config 里我们提供了一种弹性的 schema,用来描述每个资源的不同的模型,因此,后端的数据库选用了 ES,在 schema 中通过 alias 标记的范围的 kv 字段来实现打标签的功能。


业务模型在第一节已经有所界面,当前在 AOM 中分为五层模型,但是这个模型不是固定不变的,随着业务发展可能出现新增模型的场景,所以在设计中,对于业务模型也要求支持扩展。


下图所示为一个存量模型与业务模型的映射关系。



因此,对于不同资源,我们可以通过设置映射规则来将存量模型与业务模型匹配到一起。


大量的资源的匹配,对于检索来讲会相当复杂,如何能在最快的时间内通过 ES 将各种关联资源检索出来成为下一个要解决的问题,这里我们采用了图数据库的思想,将上述的存量模型按以下规则存储


1)通过两张表分别来存储存量类型,业务类型并编号,再通过一张表来保存映射关系


2)通过将资源视为点,关系视为边,构建一个图数据库模型



3)在边的关系生成时,通过存量模型 ID 与业务模型 ID 分别放置在 Long 的高低位上的设计,来使查询请求能按规则生成出 edgeType 的值,从而直接根据边去找点,快速查询出关联资源。



通过上述几个关键的设计点,我们实现了第一小节您所看到应用全景的视图展示与关联查询。更多的功能也在设计中。


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/EcD9oWwXkp6YJGiK-xR3wg


2020-03-30 10:461995

评论

发布
暂无评论
发现更多内容

货拉拉基于 Flink 计算引擎的应用与优化实践

Apache Flink

大数据 flink 实时计算

从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建、医药知识图谱的自动问答等

汀丶人工智能

人工智能 知识图谱 智能问答

Flink 最佳实践:TDSQL Connector 的使用(上)

腾讯云大数据

flink 流计算 Oceanus

拆解雪花算法生成规则 | 京东物流技术团队

京东科技开发者

算法 雪花算法 企业号 7 月 PK 榜

iOS MachineLearning 系列(21)——CoreML模型的更多训练模板

珲少

AIIA杭州大会|李京梅:基于孟子GPT生成式大模型的技术与行业应用实践

澜舟孟子开源社区

antv-x6使用及总结 | 京东物流技术团队

京东科技开发者

数据可视化 可视化开发 企业号 7 月 PK 榜 antv-x6

GitHub上有哪些好项目?GeaFlow图计算快速上手之SSSP算法

TuGraphAnalytics

图算法 图论 GeaFlow tugraph 单源最短路径

网络安全(黑客)自学

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

在Java中的空指针异常怎么避免?

java易二三

指针 java‘ #编程

图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index

NebulaGraph

图数据库 知识图谱 LLM

大数据实时链路备战——数据双流高保真压测 | 京东云技术团队

京东科技开发者

大数据 压测 企业号 7 月 PK 榜 双流 数据双流

改变人力资源业务战略,释放变革性技术力量

智达方通

全面预算管理 企业人力资源 智达方通EPM系统

一文带你全面了解openGemini

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

中企出海,数智人力构建全球化组织的驱动力!

用友BIP

中企出海 数智人力

低代码治好了CIO们的 “精神内耗”

高端章鱼哥

软件开发 低代码 数字化 软件交付 降低成本

澜舟科技成立两周年|“孟子GPT”大模型开启邀测

澜舟孟子开源社区

FTP文件传输工具:简单、高效、实用的数据传输方式

镭速

快速文件传输 FTP文件传输工具

金融领域:产业链知识图谱包括上市公司、行业和产品共3类实体,构建并形成了一个节点10w+,关系边16w的十万级别产业链图谱

汀丶人工智能

自然语言处理 知识图谱

低代码是开发者的未来吗?浅谈低代码平台

互联网工科生

云原生 低代码 数字化 系统开发

uni-app开发小程序:项目架构以及经验分享

陇锦

小程序 uni-app 前端

Ubuntu 18.04系统编译安装Tomcat教程。

百度搜索:蓝易云

云计算 tomcat Linux ubuntu 运维

频繁FullGC的原因竟然是“开源代码”? | 京东云技术团队

京东科技开发者

JVM GC 企业号 7 月 PK 榜 Full GC

AI新场景 安全新边界技术高峰会定档8月9日

权说安全

【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(备份+恢复篇)

洛神灬殇

MySQL 数据恢复 数据备份 技术分析

你还在用命令式编程?Python函数式编程让你的代码更优雅!

高端章鱼哥

Python 函数式编程

Hybrid App 技术解析:热更新的原理

Onegun

混合应用开发 native 热更新 Hybrid

2023 年 10 大前端发展趋势

互联网工科生

前端 发展趋势

Ubuntu 18.04系统编译安装Docker教程。

百度搜索:蓝易云

Docker 云计算 Linux ubuntu 运维

AI驱动税务智能,开启智慧税务新纪元

用友BIP

AI 税务管理

低代码:“提效降本”是如何炼成的

这我可不懂

软件开发 低代码 降本增效

华为云AOM立体运维系列--云上CMDB设计与应用全景可视化运维_语言 & 开发_华为云产品与解决方案_InfoQ精选文章