写点什么

使用数据湖工厂(DLF)搭建数据中心实时告警平台

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

    阅读完需:约 8 分钟

使用数据湖工厂(DLF)搭建数据中心实时告警平台

场景

一个数据中心部署了很多应用,需要建立统一的运维系统,实时接收应用的告警信息,如果告警级别严重以上,给用户发送一条信息,同时每天出一个运维报表,统计各应用各个级别告警的数据。

实现方案

数据中心的告警数据通过 DIS 实时导入 CS 实时流处理,CS 对告警数据进行数据清洗和预处理,当告警级别超过一定级别时实时给用户发送短信。同时清洗过的数据进入 DIS 通道,DIS 根据导入时间将告警数据按日期目录存放到 OBS。



执行 DLI SQL 按天建 DLI 告警表分区,分区添加后统计告警记录到告警统计表。DLI SQL 执行完成后,通过 CDM 统一导出到 MYSQL 数据库。以上操作过程在 DLF 服务上完成。DLF 脚本开发中完成 DLI SQL 的开发。开发完成以后,DLI SQL 节点关联开发的 DLI SQL 脚本。DLI SQL 节点后连接 CDM 节点将数据导出到 MYSQL 数据库。最后配置 DLF 作业的调度周期为天,调度时间为凌晨 2 点。


实施步骤

1.创建 2 个 DIS 通道

①创建 2 个 OBS 目录,一个告警表目录 alarm_info,一个告警统计表目录 alarm_count_info。


②建立 2 个 DIS 通道,dis-alarm-input 和 dis-alarm-output。




③dis-alarm-output 通道配置转储


2.创建 SMN

①创建一个 SMN 主题 alarm_over



②添加订阅,在订阅终端输入要接收通知的手机号码


3.创建 CS 作业

创建一个 FLink SQL 作业,在 SQL 编辑器中输入如下:


CREATE SOURCE STREAM alarm_info (  alarm_id STRING,  alarm_type INT)WITH (  type = "dis",  region = "cn-north-1",  channel = "dis-alarm-input",  partition_count = "1",  encode = "csv",  field_delimiter = ",");CREATE SINK STREAM over_alarm (  alarm_over STRING /* over speed message */)WITH (  type = "smn",  region = "cn-north-1",  topic_urn = "urn:smn:cn-north-1:6f2bf33af5104f45ab85de31d7841f5a:alarm_over",  message_subject = "alarm",  message_column = "alarm_over");INSERT INTO over_alarmSELECT "your alarm over (" || CAST(alarm_type as CHAR(20)) || ") ."FROM alarm_infoWHERE alarm_type > 8;CREATE SINK STREAM alarm_info_output (  alarm_id STRING,  alarm_type INT)WITH (  type ="dis",  region = "cn-north-1",  channel = "dis-alarm-output",  PARTITION_KEY = "alarm_type",  encode = "csv",  field_delimiter = ",");INSERT INTO alarm_info_outputSELECT *FROM alarm_infoWHERE alarm_type > 0;
复制代码


提交购买,运行 CS 作业。


到这一步,使用 DIS 上传数据的工具上传数据,当告警超过级别可以收到短信,上传的全量告警数据在 OBS 上也看到了。OBS 上的转储目录为/alarm_info/2018/08/31/。

4.使用 DLF 创建周期调度任务

①新建 DLI 连接


点击数据管理,在数据连接管理页面创建数据连接,选择数据连接类型为 DLI。PS:已提前建好 DLI 集群。



②新建脚本


点击数据开发,新建脚本。输入脚本名称,脚本类型选择 SQL,数据连接类型选择 DLI。



在左侧选择 DLI 数据连接,资源队列,数据库。在 SQL 编辑框输入 alarm_info 的建表 SQL 语句。



执行脚本,刷新表列表,可以在表列表中看到新建的 alarm_info 表。


同样,新建脚本,执行 alarm_count_info 表建表语句。


alarm_info建表SQLcreate table  alarm_info(alarm_time string, alarm_id string, alarm_type int ) using csv options(path 's3a://obs-fubei/alarm_info')partitioned by(alarm_time)alarm_count_info建表SQLcreate table  alarm_info_count(alarm_time string, alarm_type int, alarm_count int)using csv options(path 's3a://obs-fubei/alarm_info_count')
复制代码


编写定时增加 alarm_info 表分区的 SQL。表分区的键值和 obs 路径目录根据加载日期来获取。DLF 脚本支持参数设置,在编写脚本的右侧点击参数设置,新增一个参数。输入 $联想出目前 DLF 支持的系统函数。



选择 getCurrentTime 函数,getCurrentTime 函数联想出参数:


$getCurrentTime(@@yyyyMMddHHmmss@@,-246060)。第一个参数是输出的格式,第二个参数是当前时间的偏移量,-246060 为当前时间的前一天,60*60 为当前时间加 1 小时。


一个小技巧,保存好的参数,可以直接在 SQL 编辑框,直接 select 参数名,查看执行结果是否为用户想要的值。比如设置 aa=$getCurrentTime(@@yyyyMMdd@@,-246060)



根据用户场景,DIS 实时导入告警数据到 OBS 按天分目录/alarm_info/2018/08/31/。


新建一个周期调度脚本,每天凌晨 2 点在 DIS 导出到 OBS 目录上新建 DLI 分区。分区新增后,按照告警分区时间和告警类别进行统计,将统计结果插入 alarm_info_count 表。


新建两个参数,一个为 alarm_info 表分区值,一个为 OBS 分区目录路径。脚本参数和脚本内容如下:


dayParam:$getCurrentTime(@@yyyyMMdd@@,-24*60*60)obsPathYear:$getCurrentTime(@@yyyy/MM/dd@@,-24*60*60)ALTER TABLE alarm_info  ADD PARTITION (alarm_time = ${dayParam})LOCATION 's3a://obs-fubei/alarm_info/${obsPathYear}';insert into alarm_info_countselect alarm_time,alarm_type,count(alarm_type) from alarm_info where alarm_time = ${dayParam} group by alarm_time,alarm_type;
复制代码


③新建 CDM 作业


在 CDM 集群中新建 CDM 作业从将 OBS 数据迁移到 MYSQL。



④新建 DLF 作业


拖拉一个 DLI SQL 节点,选择要执行的 DLI SQL 脚本。再拖拉一个 CDM 节点,选择要执行的 CDM 作业。



将 DLI SQL 和 CDM 节点连接起来,执行完 DLI SQL 执行 CDM 作业。



配置作业的调度周期,每天凌晨 2 点执行一次。



保存启动调度。


⑤调度启动后,在运维调度的作业监控中可以看到作业正在运行中。



运行成功的作业可以在运行历史记录中看到。



运行失败的作业可以重跑那天的批次作业,查看日志分析失败原因。



一个简易的实时告警分析平台就构建完成了。


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


原文链接:https://mp.weixin.qq.com/s/Qw_UGDc7P2FVSvJPkWHZQQ


2020-03-30 10:441125

评论

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

大模型技术跃迁,容联七陌开启智能客服新纪元

人称T客

信创BeeWorks-国产化企业级im即时通讯软件

BeeWorks

即时通讯 IM

小支同学华为鲲鹏微认证——鲲鹏软件迁移实践、鲲鹏软件性能调优实践

巴库一郎

鸿蒙 HarmonyOS 鲲鹏 DevKit harmoyos 实践分享

什么是基于知识图谱的多模态推理?

测试人

人工智能

大模型辅助科研编程实录分享:效率飙升!“分分钟搞定”,智能体编排如何加速工作流

ModelWhale

CST软件如何将Altium的PCB板子导入CST

思茂信息

cst仿真软件 CST软件 CST Studio Suite

信息化、数字化、数智化之间的区别和联系

积木链小链

数字化 信息化 智能制造

大型跨国企业搭建企业网络需要注意哪些方面?

Ogcloud

企业组网 企业网络 跨国网络 跨国企业组网

工单智能化应用有哪些,工单管理系统选型推荐

云智慧AIOps社区

中国主场!“世亚人工智能展·世亚智博会”重塑科技版图

AIOTE智博会

智博会 人工智能展 世亚智博会

Web3应用的上线流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章

合合技术团队

人工智能 算法 #大数据

迭代器失效:99%的C++程序员都会踩的坑 !

秃头小帅oi

财务合同MCP实践

京东科技开发者

EI与MCP的故事

京东科技开发者

LangChain4j如何自定义文档转换器实现数据清洗?

王磊

以细节诠释专业,用成长定义价值——对话@孟同学 |得物技术

得物技术

创新

HyperWorks分析模型的建立与边界条件施加

智造软件

CAE 仿真软件 Hypermesh

KET口语陪练APP的功能

北京木奇移动技术有限公司

软件外包公司 AI口语APP KET考试

如何查看系统完整性:全面指南与实用工具推荐

运维有小邓

日志管理 日志审计系统 IT运维服务 文件完整性

为Java虚拟机分配堆内存大于机器物理内存会怎么样?

电子尖叫食人鱼

Java

用小猫的视角看世界——关于「小猫相机」的一点浪漫构想

花十君

小猫相机 浪漫视角 柔软镜头 猫咪视角

AI智能体:大模型之后的下个技术革命?

测试人

人工智能

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS 集成 AQC 网卡驱动定制版

sysin

esxi

互联网人离职空窗,我该怎么回答HR最认可?

测试人

面试

用户旅程图用什么软件做?4个用户体验地图工具盘点!

职场工具箱

人工智能 产品经理 AIGC 绘图软件 用户旅程图

交易所开发-如何开发一个交易所

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

AI编程新时代,CodeBuddy 带你来体验

六月的雨在InfoQ

AI编程 CodeBuddy CodeBuddy首席试玩官 AI 代码助手

什么是数据集市(Data Mart)?

镜舟科技

数据仓库 OLAP 数据集市 多维数据模型 在线分析处理

2025链游爆款方法论:从Axie到AI跨链的破局路径

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 代币开发公链开发

ITSM运营:降低变更风险的自动化与流程优化实践

嘉为蓝鲸

ITSM 智能运维

使用数据湖工厂(DLF)搭建数据中心实时告警平台_数据库_华为云产品与解决方案_InfoQ精选文章