写点什么

使用数据湖工厂(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:441239

评论

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

生成式AI实现多模态信息检索新突破

qife122

信息检索 生成式AI

ArrayDeque双端队列--底层原理可视化

电子尖叫食人鱼

架构

小米开源声音理解模型 MiDashengLM-7B;Salient 融资 6000 万美元,专为消费贷款打造语音智能体丨日报

RTE开发者社区

MySQL是怎么保证数据不丢的?

量贩潮汐·WholesaleTide

MySQL 数据库

AWS VPC Transit Gateway 可观测最佳实践

观测云

AWS

如何把 Prometheus 告警规则导入夜莺

巴辉特

Prometheus 夜莺监控

涛思数据亮相可信数据库大会,揭秘 TDengine 时序数据库如何赋能核电数字化转型

TDengine

tdengine 时序数据库 国产时序数据库

爱测智能化软件测试平台

测试人

自定义策略检查助力自动化推理技术普及

qife122

AWS IAM 策略验证

【OceanBase Agent】告别繁琐手动分析,OceanBase Agent 助力轻松运维数据库!

老纪的技术唠嗑局

运维 agent 数据库 大数据

低代码 VS 全栈开发,2025年了,程序员到底该如何选择?

优秀

低代码 全栈开发

AI+工业安全,烟草企业在安全生产场景的最佳实践

中烟创新

无光不AI:AI算力,向光而逐

脑极体

AI

工作流智能体商用版:一款可自由搭建功能的 AI 系统

微擎应用市场

MySQL是怎么保证主备一致的?

不在线第一只蜗牛

MySQL 数据库

图分割算法荣获SC21时间检验奖

qife122

算法优化 图分割

DataWorks千万级任务调度与全链路集成开发治理赋能智能驾驶技术突破

阿里云大数据AI技术

人工智能 数据库 大数据 数据处理 智能驾驶

【苍狮技术团队】RAGFlow 0.20.0 发布:全面升级 Agentic Workflow,支持多智能体协同与MCP,新增10大模板,支持Docker离线安装

苍狮技术团队

碰碰贴加无人直播:助力商家高效经营的智能解决方案

微擎应用市场

ADManager Plus:实现从员工账户创建到审计的全生命周期管理

运维有小邓

AD域 AD域管理 AD域组管理

低能离子束芯片编辑技术实现高效设计

qife122

芯片设计 硬件优化

媒体曝光:联发科天玑 9500 GPU 光追可以开到 100 帧以上

科技范儿

HarmonyOS Next 高效开发模板与组件库(20250730更新)| 鸿蒙应用开发必备资源 Part1(含开发案例)

准时不早退的机器猫.

鸿蒙 HarmonyOS 模板 开发案例

搞懂这两个组件,Spring 配置问题少一半!

量贩潮汐·WholesaleTide

spring

人才求职招聘小程序:高效连接人才与企业的智能平台

微擎应用市场

基于语言模型架构的时间序列预测技术

qife122

机器学习 时间序列

赛博威与Dify强强联合,构建全方位企业级AI Agent

赛博威科技

AI 赛博威 dify

轻匠破产会议平台:微擎部署下的破产案件数字化解决方案

微擎应用市场

数据治理进入深水区:智能化与国产化驱动下的行业新变局

百分点科技技术团队

研发团队的投入策略:业务开发与效能度量的人力比例

思码逸研发效能

研发管理 研发效能 效能度量 研发效能管理 思码逸

昇腾赋能三维生成新突破!浙大团队实现跨模态可控3D CAD建模

极客天地

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