解密 Grupo MasMovil 使用 ClickHouse 监控无线网络

news2024/11/17 0:32:07

图片

本文字数:4151;估计阅读时间:11 分钟

作者:Rodrigo Aguirregabiria Herrero, Grupo MasMovil

审校:庄晓东(魏庄)

本文在公众号【ClickHouseInc】首发

图片

我们很高兴与大家分享来自西班牙最大的电信运营商之一Grupo Masmovil的这篇客座文章。Masmovil的OSS & Tools Monitoring部门的高级监控工程师Rodrigo Aguirregabiria Herrero详细介绍了监控无线接入网络(RAN)所面临的挑战以及ClickHouse如何改变了他们的方法。

对于不熟悉无线接入网络(RAN)的人来说,它们是移动网络的第一个接入点。这些节点允许您的智能手机访问2G、3G、4G和5G网络。

这些网络庞大而复杂,需要部署成千上万个节点(或天线)。这样,当您远离一个节点时,您可以连接到另一个节点并保持互联网连接。

在MasMovil,我们决定从专用于电信的工具迁移到开源的大数据技术,其中之一就是ClickHouse,它让我们能够:

  • 改进我们的监控解决方案:

    • 拥有更可靠的解决方案

    • 加快处理速度

    • 保留更多数据

  • 在以下方面节省成本:

    • 软件许可证

    • 第三级支持

    • 硬件

让我们看看我们是如何做到的。

实际数据规模

那么,我们如何监控为数百万人提供互联网服务的数千个节点呢?

有几种方法可以做到这一点,但在这种情况下,我们将专注于直接来自这些节点的信息。

这些节点有许多指标,几乎可以监控它们的每一个性能方面,例如与其他节点的连接、通话数量、流量,以及每个节点字面上数以千计的计数器。

我们并不需要所有这些信息,因此我们对其进行了过滤。然而,我们仍然有数百个计数器和数千个节点,每个节点每15分钟发布一次数据。

数据以非结构化格式进入我们的服务器,存储在磁盘上的文件中。因此,它不是作为事件流发布的。这些文件的大小可以在200KB到40MB之间(这确实是一个很宽的范围),但是拥有40MB的节点只是一个很小的部分。最常见的情况是节点大小在2-5MB左右,想象一下我们只有大约1万个节点,那么我们每15分钟就要处理大约30GB的数据,每天将近3TB的数据。注意:1万个节点不足以为整个西班牙提供服务。

基本上,我们需要每小时处理数千个文件,但主要问题是快速读取磁盘上写入的文件。使用流式处理工具处理数据并不太复杂。然而,我们需要一个在磁盘使用方面最佳的数据库。

这就是ClickHouse的好处之一。加上查询速度非常快。

使用ClickHouse,您可以使用不同的编解码器和压缩算法,这在这种情况下非常有帮助,因为调整压缩会显着减少存储负担,这不仅更有效,而且更具成本效益。

让我们看看我们在其中一张表中使用ClickHouse实现的数据压缩:

rowsdisk_sizecompressed_sizeuncompressed_sizeratio
562426183351.84 GiB349.04 GiB1.31 TiB0.260

压缩效果相当不错,与实际数据大小相比,我们使用的磁盘要少得多,与之前的解决方案相比也是如此。

通过我们当前的解决方案,我们使用的磁盘使用量比之前减少了16倍,但最重要的是,我们保留了更多的数据。这是如何可能的呢?首先,我们需要了解一些关于公式、传统电信监控系统以及时间和物理聚合的知识。

公式、时间和空间聚合

在本文的前面部分,我们已经谈到了计数器;然而,在几乎所有情况下,单独的计数器并不提供太多有用的信息。有价值的信息来自我们的工程团队或节点供应商设计的公式。

这些公式生成可以使用一个或多个计数器的关键绩效指标(我指的是很多;我们有使用超过150个计数器的公式)。

因此,如果我们有数百个不太有用的计数器和数百个有用的KPI,为什么不只保留计算出的KPI呢?这可能是一个解决方案,但不是一个有效的解决方案,因为我们不仅监视节点和某个时间段,用户需要在不同的时间聚合和空间聚合中获取信息。

用户以15分钟、每小时、每天等批次中找到有用的数据。这些信息不能预先计算,因为这会导致在更大的时间聚合中出现错误的KPI。

一个快速的例子是节点中的呼叫成功率,公式是:

100 x (成功呼叫数/呼叫尝试数)

一个小时内的一个节点:

TimeSuccessful CallsCall AttemptsSuccess Call Rate
9:0011100%
9:1522100%
9:3010030033,33%
9:459810098%

如果我们只有最终的KPI,我们就无法得到小时的真实值,因为让我们看看如果我们得到平均值 -> (100 + 100 + 33,33 + 98)/4 = 82,83

但是那个值完全被歪曲了。它没有考虑到在某些时间戳下呼叫数量是更大的。

真正的KPI将计算为:


100 * ((1+2+100+98)/(1+2+300+100)) = 49,88

这几乎是平均值的一半。这意味着我们需要所有计数器的信息,而不是最终的KPI。

这种计算在SQL中相当容易,只需将时间转换为前几个小时,并对计数器进行求和,例如:


toStartOfHour(Time), 100 * SUM(Successful Calls)/SUM(Call Attempts)

相当简单!而且最好的是我们不需要计算出的KPI。

我们的遗留系统的问题在于它需要计算出的KPI和原始计数器,因此结果是我们消耗了更多的磁盘空间。

我们已经谈到了时间聚合,但也有空间聚合。我们只提到了对节点的监控,但在这些节点内部有单元,而在它们上面,还有关于城市、地区的拓扑信息,以及全国某些KPI的值,这些对我们的工程团队至关重要。

在空间聚合方面,我们将会有:

图片

节点包含一组小区,而节点属于城市、地区等。用户需要能够进行所有必要的深入分析。

问题在于,传统系统需要对所有空间和时间聚合都同时使用原始计数器和计算得到的关键绩效指标。

实际数据的图像如下所示:

图片

但我们还没有考虑时间聚合,所以我们将有一个第三维,一个立方体。在数据中,立方体听起来很像OLAP立方体,对吗?

图片

我们正在指数级地增加数据的大小。在传统系统中,我们有复杂的方法来创建这些公式和聚合,同时为KPI和网络拓扑创建内部清单。

但请考虑这一点,如果我们有一个高速的OLAP数据库,我们只需要为标记了单元格的原始计数器(添加列)与其他拓扑的部分合并,就像这样:

图片

这就是我们使用ClickHouse的主要原因。在ClickHouse中,实时查询非常快,因此我们不再需要复杂的系统来计算不同类型的聚合的公式。目前,一旦我们有了单元格数据,并且拓扑已经丰富,我们就拥有了所有相关信息,不需要后台进行更多数据处理。

此外,传统系统需要将大量数据存储在磁盘上,不能存储最小时间聚合的大量数据。例如,对于15分钟的数据,我们只有15天的数据,对于每小时的数据,我们有30天的数据,对于15分钟的数据,我们有一年的数据。

现在,我们有1年的15分钟数据。再多也是没有必要的,对于更大的聚合,我们将它们保存在单独的表中。最终,我们拥有了一个更丰富的数据集,并且我们使用的磁盘空间少了16倍。

SQL,查询的力量

另一个重要方面是公式。它们之间差异很大,有些简单,有些使用数百个计数器,有些需要前一时间相同KPI的值,有些计数器是数组,等等。

这给一些公式增加了很多复杂性。如果你需要一个能提供这些功能的系统,你将需要一个复杂的系统,它可以持续改进,如果出现新的KPI类型。这些系统不仅需要一个强大的数据库,还需要一个强大的后端。随着所有这些复杂性,另一个问题出现了,即指标发布的延迟,我们的传统系统可能会有3小时的数据发布延迟。

但是使用SQL和ClickHouse带来的附加功能,我们可以复制所有不同的KPI,自己或与ClickHouse支持团队的帮助下创建它们是很有趣的,后者对于特殊和奇怪的KPI帮助了我们很多。

通过SQL,我们可以为所有类型的聚合使用相同的公式,在我们的情况下,我们使用Grafana来表示它。使用变量和查询,我们使用户能够轻松地在时间和空间聚合之间切换,一切都是动态的。

因此,ClickHouse同时结合了我们的后端和数据库。

关于我们的ClickHouse环境

我们在运行ESX的虚拟机中使用Docker部署了ClickHouse。

我们从几个内核和8GB的RAM开始,根据需要添加更多资源。

大多数时候,它只消耗几个内核,但为了尽快为用户提供结果,它可以占用所有内核。

结果和结论

在实施了这种新的RAN网络监控方式的一年半后,这些是我们的成果:

  • 我们保留更多数据,使用的空间减少了16倍。

    • 用户可以查看旧数据,没有丢失的信息。

  • 结果发布的延迟大大减少(15分钟对比传统系统的3小时)。主要延迟在数据文件的提取上。

  • 我们使用的资源(CPU和内存)减少了10倍。

  • KPI的公式对用户是透明的,不再隐藏在用户后端。

  • 支持多种可视化工具

    • Superset

    • Grafana

    • 自定义前端开发

  • 稳定性。我们的ClickHouse部署从未出现故障,也没有停机,而传统系统通常存在间隙,需要不断重启。

更多详情

  • ClickHouse插件 for Grafana | Grafana Labs 【https://grafana.com/grafana/plugins/grafana-clickhouse-datasource/】

  • 将Superset连接到ClickHouse | ClickHouse文档 【https://clickhouse.com/docs/en/integrations/superset】

征稿启示

面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com

图片

​​联系我们

手机号:13910395701

邮箱:Tracy.Wang@clickhouse.com

满足您所有的在线分析列式数据库管理需求

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟裤裤一起探索结构体的奥秘!

目录 1.结构体类型的声明 2.结构体变量的创建和初始化 2.1结构体成员的直接访问 2.2结构体成员的间接访问 2.3结构体变量的创建和初始化 3.结构的自引用 4.结构体内存对齐 4.1对齐规则 ​4.2为什么存在内存对齐? 4.3修改默认对齐数 5.结构体传参 6.结构…

GUI测试首推!TestComplete 帮助有效缩短 40-50% 测试时长!

TestComplete 是一款自动化UI测试工具,这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎,可以自动记录和回放用户的操作,方便用户进行UI(用户界面&…

Pyside6:多行按钮点击判断序号

在Pyside开发过程中会遇到这么个问题:当多个按钮在很多行中,需要在点击槽函数中确认按钮的行。 普通的按钮点击信号如下: clicked() 该信号并未有任何参数,无法得到有效的信息,那么如何完成点击哪个确定是哪个按钮呢…

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测 目录 分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.RIME-BP霜冰优化BP神经网络多特征分类预测(Matlab实现完整源码和数据&a…

Linux SDIO-WiFi 协议栈

Linux SDIO-WiFi 协议栈 1. 简介2. BCMDHD2.1 WiFi模组2.2 驱动初始化(dhd_module_init) 3. Broadcom fullmac WLAN 1. 简介 2. BCMDHD BCMDHD:Broadcom Dongle Host DriverSIP:System In Package 2.1 WiFi模组 2.2 驱动初始化…

条件生成对抗网络(cGAN)在AI去衣技术中的应用探索

随着深度学习技术的飞速发展,生成对抗网络(GAN)作为其中的一个重要分支,在图像生成、图像修复等领域展现出了强大的能力。其中,条件生成对抗网络(cGAN)通过引入条件变量来控制生成模型的输出&am…

互联网大厂ssp面经,数据结构part3

1. 哈希表的原理是什么?如何解决哈希碰撞问题? a. 原理:通过哈希函数将每个键映射到一个唯一的索引位置,然后将值存储在对应索引位置的存储桶中。 b. 关键:将不同的键映射到不同的索引位置,以实现快速的插…

Spring Boot 集成 EasyExcel 3.x

Spring Boot 集成 EasyExcel 3.x Spring Boot 集成 EasyExcel 3.x 本章节将介绍 Spring Boot 集成 EasyExcel(优雅实现Excel导入导出)。 🤖 Spring Boot 2.x 实践案例(代码仓库) 介绍 EasyExcel 是一个基于 Java 的、…

社交的神奇好处你都知道吗?

聊天交友软件是人们日常生活中不可或缺的一部分,有些需要花费大量金钱才能享受完整的功能,但也有一些不需要花费金钱的聊天交友软件,如微信、QQ等。这些软件提供了多种交流方式,让用户可以方便地结识新朋友、扩大社交圈子&#xf…

基于SpringBoot的合家云社区物业管理平台 - 项目介绍

合家云社区物业管理平台 2.合家云需求&设计 2.1 项目概述 2.1.1 项目介绍 合家云社区物业管理平台是一个全新的 ”智慧物业解决方案“,是一款互联网的专业社区物业管理系统。平台通过社区资产管理、小区管理、访客管理、在线报修、意见投诉等多种功能模块&a…

游戏陪玩系统app

游戏陪玩系统APP为用户提供了一个便捷的平台,让他们能够轻松找到合适的陪玩者,一同享受游戏的乐趣。以下是对您提到的功能的详细解释: 游戏约玩: 在陪玩APP上,用户可以浏览陪玩者的信息,包括他们的游戏技能…

YOLOv8 训练自己的数据集(20240423)

环境搭建请参考:Win10 搭建 YOLOv8 运行环境(20240423)-CSDN博客 环境测试请参考:本地运行测试 YOLOv8(20240423)-CSDN博客 一、使用 YOLOv8 的 coco128 数据集熟悉一下如何训练和预测 1.1、在项目根目录…

新的ChatGPTPlus(GPT4)支付渠道?怎么付费充值?

GPT4多少钱一个月 GPT4一个20美元。作为最优秀的语言模型之一,GPT-4为您带来无与伦比的生产力体验。 除了出色的自然语言处理能力,GPT-4还引入了创新的代码解释器功能和强大的插件扩展,进一步提升了您的工作效率和创造力。 代码解释器功能&…

excel一列同乘同一个数

excel一列同乘同一个数 第一种方法(excel本身功能) 在空白区域输入要乘以的数,比如0.5 右键选择复制 选中需要乘以的单元格,选择性粘贴 点击乘,选择确定 删除0.5后也不会改变值 第二种方法(方方格子…

LLama的激活函数SwiGLU 解释

目录 Swish激活函数 1. Swish函数公式 LLaMA模型中的激活函数 1. SwiGLU激活函数 2. SwiGLU激活函数的表达式 3. SwiGLU激活函数的优势 Swish激活函数 Swish是一种激活函数,其计算公式如下: 1. Swish函数公式 Swish(x) x * sigmoid(x) 其中&am…

开源协议的对比和商业上的安全使用

开源协议的对比和商业上的安全使用 开源组件是:“任何人都可以自由使用、更改和共享(以修改或未修改的形式)的软件”。当今企业依靠开源来加速开发、降低成本和推动创新。对开放源码的糟糕管理可能会使组织面临安全、法律和操作风险。 使用…

【Python】爬虫-基础入门

目录 一、什么是爬虫 二、爬虫的主要用途 三、学会爬虫需要掌握的技能 四、爬虫使用的语言 五、编写爬虫需要的库,以python为例 六、爬虫示例-python 示例一 示例二 示例三 一、什么是爬虫 爬虫,又称网络爬虫或网页爬虫,是一种用来自…

解读DreamFusion:一个引人注目的AI生成内容领域的项目

什么是DreamFusion? DreamFusion使用2D扩散模型来实现文本到3D生成的任务。这项技术在ICLR 2023上获得了杰出论文奖,并成为了许多科研工作的基准。 简而言之,DreamFusion的目标是在没有3D数据监督的情况下,利用已有的2D生成模型根…

11 JavaScript学习:事件

Html事件 HTML 中有很多事件可以用来与用户交互&#xff0c;以下是一些常见的 HTML 事件及其详细解释和举例&#xff1a; click 事件&#xff1a;当用户点击元素时触发。 <button onclick"myFunction()">点击我</button>dblclick 事件&#xff1a;当用…

【二】ECharts----【异步加载数据】

目录 零.前言 一.异步加载数据 1.1简介 1.1.1一个使用$.get()获取json数据并加载的例子 1.2数据的动态更新【重要】 1.2.1一个使用random随机生成的动态更新 完整代码如下&#xff1a; 二.加载中动画 零.前言 【一】ECharts----【基本概念、基本实例】-CSDN博客 一.…