50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

跨境电商爆单秘诀:达人带货与内容种草的结合

Wolink

跨境贸易 出海企业 海外推广 沃链Wolink 达人营销

项目进度管理系统 PJMan:以可视化驱动技术项目的透明化与高效协作

Tecjt_锦图科技

项目管理 项目管理工具 项目进度管理系统

浏览器下载,一定要开启这个隐藏功能!

Immerse

3分钟理清QPS、TPS、RT 以及它们之间的关系

伤感汤姆布利柏

数据迁移至YashanDB数据库的实用步骤

数据库砖家

多模态和语音 AI 年度收官大会,把握 2026 技术风向标!

声网

小型人力资源企业平凯数据库(TiDB 企业版)敏捷模式测评报告

TiDB 社区干货传送门

AI智能化MES如何重塑电线电缆与漆包线行业

万界星空科技

mes 制造业数字化 漆包线mes 电线电缆mes 数字化转型‘’

数据库设计中的YashanDB数据库最佳实践

数据库砖家

共促数据中心高质量建设 智赢AI时代

极客天地

低代码 “我的已办” 避坑指南,看完直接用起来

引迈信息

前端class类常用修饰符

秃头小帅oi

开放签企业版电子签章系统正式开源!

开放签开源电子签章

电子合同 #开源 电子签章 电子签合同系统

性能提升 10 倍 +,成本节省 35%!威锐达用 TiDB 解锁风电运维新效能

TiDB 社区干货传送门

大数据-101 Spark Streaming 有状态转换详解:窗口操作与状态跟踪实战 附多案例代码

武子康

Java 大数据 flink spark 分布式

阿里巴巴商品列表API技术解析与应用指南

tbapi

阿里巴巴API 阿里巴巴商品数据采集 阿里巴巴商品列表接口 阿里巴巴商品数据分析

深入分析京东工业商品列表API,用python代码实现

tbapi

京东工业平台接口 京东工业API 京东工业商品数据采集 京东工业商品列表接口

react 实现插槽slot功能

互联网工科生

谙流 ASK 技术解析(三):冷热数据自治分层

AscentStream

消息队列

数据连接:YashanDB数据库与外部系统集成

数据库砖家

快手提出端到端生成式搜索框架OneSearch,让搜索“一步到位”!

快手技术

大模型 快手 生成式强化学习 onesearch

AI开发+低代码,才是软件厂商的最佳组合

星云低代码中间件

AI 低代码 企业系统

如何从零开发一款 OneAgent

乘云数字DataBuff

运维 AIAgent

一文解码百度地图ETA

百度Geek说

百度地图

商超企业线上线下全渠道业务的平凯数据库敏捷模式使用体验

TiDB 社区干货传送门

社区活动 敏捷模式

袋鼠云跻身榜单2025中国Data+AI创新企业榜Top15,入选“2025中国隐形独角兽500强”榜单等多项荣誉

袋鼠云数栈

Account Kit(华为账号服务)再进化,开发者接入效率飙升!

HarmonyOS SDK

HarmonyOS SDK应用服务

从零开始:平凯数据库敏捷模式(单节点)及 MySQL 安装部署全流程指南

TiDB 社区干货传送门

版本测评 7.x 实践 TEM 试用 MySQL 数据同步 TiDB 7.x

使用JDBC driver查询INFORMATION_SCHEMA.COLUMNS的优化之路

TiDB 社区干货传送门

工具与生态

谙流 ASK 技术解析(四):负载均衡引擎

AscentStream

消息队列

鸿蒙应用开发——AppStorageV2和PersistenceV2的使用

高心星

鸿蒙 HarmonyOS5.0 AppstorageV2 PersistenceV2

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