jjzjj

金融系统IT运维监控的探索与实践

LinkSLA 2024-03-26 原文

一、背景介绍

金融行业作为国内信息化发展最早、最成熟的行业之一,在数字化应用不断深入的情况下,传统运维面对微服务、容器、虚拟化等显得愈加力不从心,金融行业要建立与全新架构能力相匹配的运维体系,提升业务运营感知能力、基础架构运维掌控能力和敏捷业务支撑能力保障业务连续性和安全稳定运行。这种新的需求指向可观测性、数据分析处理和告警收敛准确度提升等方面。

二、现状阐述

1、在众多应用中逐渐失去平衡

由传统集中式架构向分布式架构转型,容器、微服务等云原生技术的底层架构云化升级,架构转型演进的过程带来的是IT单元部署数量的显著增多。过去,运维管理的IT设备和数据的比例是1:100,未来,这一比例正快速变成1:100n,运维人员面对的IT设备和数据规模呈几何级增长。

不仅如此,微服务化以及分布式的依赖关系导致服务调用错综复杂,容器下的环境动态性增强,这让运维排障变得更难。全新架构、系统众多、可见性更差,传统运维依赖人的技能和经验大打折扣,运维效率在“快”与“稳”中失去平衡。

2、在告警风暴中迷失

在云环境和混合异构环境之下,IT运维的复杂度在不断上升。金融业务系统本来就比较庞杂,前中后台的业务系统叠加不同的技术路线、不同的产品,包括开源、开源的二次开发、商业化产品的混合使用,让底层的IT基础设施也各有差异。IT运维在跨系统的环境中反复横跳,运维难度不断攀升,即使一个饱有经验的运维管理人员发现故障后,也要耗费大量时间检查每一个系统,进行例如状态数据分析、抓包分析才能定位故障。这种依赖人力的运维效率在系统复杂、工作量大的环境中就显得捉襟见肘。

不得不说,运维人员每天处理告警事件,时刻忙于“救火”的状态,其实非常被动。真正有效的工作应该是防患于未然,才能保障稳定、高效的业务运行。

3、缺乏数据分析处理能力

数据即资产。后台产生的数据通过有效分析,为运营决策的支撑。来自软硬件、应用系统、平台工具系统等产生的数据,包括监控指标数据、报警数据、日志数据、网络数据、链路关系数据、运维知识数据、CMDB、运维流程等多类数据。数据的有效分析可以实现运行感知、业务感知等涉及的IT风险控制,性能管理、终端感知等涉及的客户体验分析,运营效能、服务质量,是业务的宝贵资产。

三、服务方案

结合用户现状及需求,在保障系统稳定运行的前提下,提高运维各个环节的运行质量。

1、数据分析

通过AI机器学习算法,对监控对象及应用指标产生的数据,进行计算、分析、告警。通过趋势性的数据分析展示,提供业务所需的资源、容量需求等,避免资产盲目扩张造成的资源浪费,有效控制成本。

对具有周期性、趋势性、季节性的海量时序指标数据进行异常检测,极大提高了运维效率和告警准确性。监控指标异常检测,例如CPU、内存、业务系统黄金指标,延时、并发量、错误等监控指标;应用指标异常检测例如应用的活跃用户数、访问页面数、响应时间等业务指标。

2、可视化交互

将运维对象及关联关系、运维流程、运维活动、运维管理信息转换成数字化的图形或图像进行展示,部署多样化展示大屏,支持全链路监控功能,提供监控指标对象的dashbord直观呈现,提供业务系统的应用拓扑关系,提高根因排查与故障定位效率。

3、告警收敛合并

各种监控工具会产生海量告警信息,可能存在大量的冗余告警甚至形成告警风暴,对运维人员产生极大干扰,降低运维工作的效率。

告警收敛合并可针对短时、大量的、甚至是持续的冗余告警,通过文本相似度、链路相关性、时间相关性判断,对冗余告警进行合并降噪,为运维人员提供有效的告警信息,大大提高运维效率。

四、用户收益

 1、成本

提高资产、应用的利用率,稳定性能,降低软件、硬件资源投入。提供7*24时moc在线服务,降低运维人员压力和故障恢复成本。

2、质量

IT运维能够有效地保障业务系统稳定、持续,统一集中的全链路监控,可视化交互让过程可见、可控,提高各个运行环节的质量。提高故障定位及修复效率,实时巡检,多指标衡量,准确度和覆盖面大幅提升。

3、效益

变传统被动应答的故障处理方式为可观测的管理方式,便于快速发现、定位问题,节约用户告警处理的时间成本及专家技术成本,提供专业高效解决方案。

有关金融系统IT运维监控的探索与实践的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  3. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  4. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  5. ruby-on-rails - Rails 中同一个类的多个关联的最佳实践? - 2

    我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来

  6. ruby-on-rails - 向 Rails 3 添加 Ruby 扩展方法的最佳实践? - 2

    我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion

  7. ruby - 你会如何在 Ruby 中表达成语 "with this object, if it exists, do this"? - 2

    在Ruby(尤其是Rails)中,您经常需要检查某物是否存在,然后对其执行操作,例如:if@objects.any?puts"Wehavetheseobjects:"@objects.each{|o|puts"hello:#{o}"end这是最短的,一切都很好,但是如果你有@objects.some_association.something.hit_database.process而不是@objects呢?我将不得不在if表达式中重复两次,如果我不知道实现细节并且方法调用很昂贵怎么办?显而易见的选择是创建一个变量,然后测试它,然后处理它,但是你必须想出一个变量名(呃),它也会在内存中

  8. ruby - Chef : Read variable from file and use it in one converge - 2

    我有以下代码,它下载一个文件,然后将文件的内容读入一个变量。使用该变量,它执行一个命令。这个配方不会收敛,因为/root/foo在编译阶段不存在。我可以通过多个聚合和一个来解决这个问题ifFile.exist但我想用一个收敛来完成它。关于如何做到这一点有什么想法吗?execute'download_joiner'docommand"awss3cps3://bucket/foo/root/foo"not_if{::File.exist?('/root/foo')}endpassword=::File.read('/root/foo').chompexecute'join_domain'd

  9. Ruby 最佳实践 : working with classes - 2

    参见下面的示例,我想最好使用第二种方法,但第一种也可以。哪种方法最好,使用另一种的后果是什么?classTestdefstartp"started"endtest=Test.newtest.startendclassTest2defstartp"started"endendtest2=Test2.newtest2.start 最佳答案 我肯定会说第二种变体更有意义。第一个不会导致错误,但对象实例化完全过时且毫无意义。外部变量在类的范围内不可见:var="string"classAvar=A.newendputsvar#=>strin

  10. ruby - 存储外部 API 的密码 - 最佳实践 - 2

    如果我构建了一个应用程序来访问来自Gmail、Twitter和Facebook的一些数据,并且我希望用户只需输入一次他们的身份验证信息,并且在几天或几周后重置,那会怎样是在Ruby中动态执行此操作的最佳方法吗?我看到很多人只是拥有他们客户/用户凭证的配置文件,如下所示:gmail_account:username:myClientpassword:myClientsPassword这看起来a)非常不安全,b)如果我想为成千上万的用户存储此类信息,它就无法工作。推荐的方法是什么?我希望能够在这些服务之上构建一个界面,因此每次用户进行交易时都必须输入凭据是不可行的。

随机推荐