草庐IT

让运维智能高效,轻松搞定运维管理平台

露亚 2023-03-28 原文

​什么是任务运维中心

先从一段不太正经的推理开始:

根据某百科的官方解释,运维主要目的是确保网站、软件服务的安全和稳定运行。

那么“任务运维”就是确保任务的安全、稳定运行。

那么”任务运维中心“就是辅助任务运维人员进行离线任务管理和实例运维的工作,帮助运维人员提高运维效率,及时发现问题并提供诊断建议,确保任务的安全、稳定运行。

2.任务运维中心能干什么

2.1 发送报警

什么时候会需要运维人员出马?

  • 任务出错的时候
  • 任务运行变慢的时候
  • 任务应该运行却没有运行的时候……
但是运维人员又不能一天到晚盯着任务看,所以任务运维中心就提供“报警”功能,在出现异常的时候,及时的把告警信息发送给运维人员,喊他们来处理异常。

2.1.1 值班组

与报警功能相关的第一个问题,就是报警发送给谁?

任务运维中心支持设置值班组,创建值班组后,可以添加值班人员,并设置值班规则,指定主值班人与备值班人以及连续值班天数和值班时间。

2.1.2 基线运维

与报警功能相关的第二个问题,就是什么时候发送报警?

  • 任务出错的时候
  • 任务运行变慢的时候
  • 任务应该运行却没有运行的时候
针对第二个问题,我们提出“基线运维”模块,先来介绍一下基线是什么,以及与之密切关联的“关键路径”又是什么。

基线:即时间线,在基线运维场景中,通过设定几条时间线(即基线),并将线上任务关联到这些时间线上,当这些任务的实例或上游实例运行失败,或者这些实例的预计产出时间超过对应的时间线时,系统会触发报警通知给值班人员。

预警时间:如果系统计算出基线上最晚产出实例的完成时间超过预警时间时,会触发基线报警。

破线时间:指基线任务中所有实例都必须在该时刻前运行成功,是挂载在该基线上的任务的实例产出时间的承诺时间。建议预警时间设置比破线时间早半小时,相当于留给运维人员一个处理的时间,破线时间相当于是底线。

关键路径:关于关键路径,可以用下图来说明。此例子中,基线根据数仓分层进行设置,任务A-E分别是挂载在2点基线上的任务。

所以我们可以看到,基线的作用其实就是批量监督任务,把一批任务挂在一根基线上,那么基线就会不断去计算基线上这些任务的预计完成时间,一旦计算到预计完成时间超过预期的时间,就会向值班人员发出基线报警。

值班人员在收到报警信息后,就要去排查到底是哪个任务延迟了,这时候就需要查看关键路径,向上溯源,最终精准找出问题的源头。

任务运维中心支持基线运维,通过权限授权,运维人员可以在运维配置中创建与管理基线。将相关任务与基线关联后,在基线运维模块,就可以查看任务的执行时间情况,例如下图中就是“数仓3点基线”上挂载任务的相关实例运行情况。不同颜色表示实例不同状态,运维人员可以直观高效地查看任务执行情况,并对异常实例进行相关操作。

2.2 定位问题

现在我们已经收到了报警,并且知道是哪个任务出了问题,那么接下来就要想办法知道任务究竟出了什么问题,是因为代码错误,还是资源不足,还是DQC异常,抑或是平台bug呢。

2.2.1 智能诊断

为了能够帮助运维人员快速定位问题,我们推出了“智能诊断”功能。如果你想快速体验这一功能,可以前往周期实例列表,选择状态为失败的实例,就能看到一个放大镜的图标,点击即可进入智能诊断页面。

智能诊断的详情页面展示异常节点,以及异常处理建议。例如下图,就是针对数据同步节点运行失败所提供的诊断结果与处理建议。

2.3 解决方案

2.3.1 重跑

当我们发现任务出了问题,并且定位到了失败原因,通过修改代码、重新发布上线后,还需要将原先运行失败的问题进行重跑操作。如果实例状态是失败、终止,则支持实例重跑/批量重跑。

重跑的操作步骤包括:

选择需要重跑的节点,系统支持自动勾选失败、终止及撤销节点;

进行重跑设置,包括通知设置、运行设置等,支持重跑成功或失败时消息通知用户

重跑完成后,周期实例列表会更新实例ID,并支持查看重跑记录。

2.3.2 补数据

补数据的场景主要有:

当任务新建后希望对历史数据进行加工,可通过补数据功能选择历史某个时间段来执行任务;

当任务某个时间段内数据有问题或者任务异常,可通过补数据对历史异常的数据或任务进行重新生成实例并执行,达到修复历史数据的目的。

补数据的步骤包括:

选择源头任务需要补数据的节点

选择下游任务需要补数据的节点

进行补数据运行设置

这里用gl_ods_user_info任务为例,这个任务首次执行时间是2022年7月份的某一天,我想要补这个任务以及他的下游任务2022年6月份的数据,我就可以使用补数据功能。

第一步:选择源头任务要补数据的节点

第二步:选择下游任务要补数据的节点,这里任务有点多,我可以根据实际需要来勾选要补数据的任务节点

第三步:配置补数据设置,我可以设置要补数据的时间范围,计划执行时间、执行队列等参数

第四步:前往补数据任务运维列表,查看补数据实例执行情况

3.总结

下图是从用户日常运维视角来看的产品闭环图。任务运维中心的本质就是为用户打造从发现问题、定位问题再到解决问题的完整、高效的运维链路。尤其是现在企业用户数据爆发增长,数据任务往往具有任务量庞大、调度类型复杂、业务影响范围广等特点,任务运维人员往往肩负巨大压力,一个智能高效的运维平台能够帮助运维人员提高工作效率、最大化减少因故障处理不及时而产生的损失,保障数据任务健康运行。

通过提供强大的基线运维、灵活的告警规则配置、自动化的任务管理和监视等功能,致力于打造一个运维人员轻松从容、运维工作高效敏捷的智能化运维工具。​

有关让运维智能高效,轻松搞定运维管理平台的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  3. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  4. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  5. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  6. ruby-on-rails - 在 Rails 中更高效地查找或创建多条记录 - 2

    我有一个应用需要发送用户事件邀请。当用户邀请friend(用户)参加事件时,如果尚不存在将用户连接到该事件的新记录,则会创建该记录。我的模型由用户、事件和events_user组成。classEventdefinvite(user_id,*args)user_id.eachdo|u|e=EventsUser.find_or_create_by_event_id_and_user_id(self.id,u)e.save!endendend用法Event.first.invite([1,2,3])我不认为以上是完成我的任务的最有效方法。我设想了一种方法,例如Model.find_or_cr

  7. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

  8. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  9. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  10. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

随机推荐