我们银行的文档支持系统在不断发展和扩展,而对速度和容错性的要求却在不断增加。 在某些时候,在没有有效的集中监控的情况下对LMS进行维修已变得过于冒险。 为了确保VTB上的业务流程安全并简化管理员的工作,我们已基于一系列开放技术实施了一种解决方案。 有了它,我们可以主动响应事件,防止潜在的问题。 切入点-一个有关我们使用免费软件监视大型业务系统的经验的故事。

为什么要监控工作流程系统
自2005年以来,VTB银行的文档系统已由CompanyMedia系统“管理”。 SDO雇用6万多名用户,每月创建超过一百万个新文档。 我们的服务器必须一天24小时不间断运行:几乎在任何时候,系统中都有2500-3000人从彼得罗巴甫洛夫斯克-堪察加到加里宁格勒,遍布全国。 LMS的每秒钟操作都会更改10-15次。
为了使系统清楚地完成分配给它的任务,我们使用代理服务器,查询平衡,信息保护,全文搜索,集成路由和备份来部署容错基础架构。 需要大量资源来支持和管理这一规模的项目。 管理员全天候监视有关服务器操作,RAM的加载,处理器时间,I / O子系统等的基本信息。 但是,除此之外,还需要更精细的分析:
- 计算执行业务场景所花费的时间;
- 跟踪系统性能的动态和负载;
- 搜索系统组件与批准的非功能性要求之间的偏差。
LMS推出11年后,对各种错误做出积极响应的问题就特别突出。 银行管理层意识到,在没有监视器和控制台的情况下进行工作会很火:这种级别的业务系统中最轻微的故障都充满了数百万的损失。
2016年,我们开始引入工具,用于快速识别LMS功能中的问题,包括监测我们感兴趣的实时参数。 以前,应用程序监视系统是在InterTrust公司基础结构的框架内部署和测试的。
一切如何开始
如今,基于开源软件的VTB SDO集中式应用程序监视系统可帮助防止与文档管理相关的大多数错误,快速,准确地对问题进行分类,并快速响应任何事件。 它包括两个子系统:
- 用于监视系统服务的IT基础架构;
- 监视LMS工作中错误的发生。
这一切始于唯一的免费监控应用程序。 经过多种选择之后,我们选择了Zabbix-免费软件,该软件最初是为银行服务和设备编写的。 这个基于PHP Web的系统可以将数据存储在MySQL,PostgreSQL,SQLite或Oracle数据库中,完全符合我们的需求。
Zabbix在每台服务器上运行其代理,并在单个数据库中实时收集有关关注指标的信息。 使用该应用程序,可以方便地收集有关处理器和RAM的负载,网络和其他组件的使用情况的数据,检查标准服务(SMTP或HTTP)的可用性和反应,执行外部程序以及通过SNMP支持监视。
通过部署Zabbix,我们建立了标准的硬件指标,一开始就足够了。 但是VTB SDO在不断发展和壮大:2016年,服务器数量显着增加,迁移过程出现了,莫斯科银行,VTB Capital,VTB24连接到系统。 标准指标较少,我们教会Zabbix跟踪有关连接到服务器的每个卷上队列是否存在的信息(从Zabbix框中仅反映常规磁盘队列),以及有关处理特定过程所花费的时间的信息。

此外,我们为系统配备了多个触发器-在这种情况下,将通知发送给管理员(通过电报发送消息,通过短信发送到电话号码或电子邮件)。 触发器可针对任何参数集进行定制。 例如,您可以指定一定百分比的可用磁盘空间,并且当达到指定的阈值时,系统将通知管理员,或者通知任何后台过程是否需要比平常更长的时间。
Java连接性和数据可视化
我们极大地扩展了分析数据的范围,但是很快这还不足以进行有效的监视。 利用CompanyMedia DLS是Java应用程序这一事实,我们通过JMX接口连接到Java虚拟机,并且能够直接获取Java指标。 而且,不仅标准的Java重要功能(例如GC或Heap的强度),而且还有与应用程序的可执行代码直接相关的特定示例。

在引入监控系统大约一年后的2017年,很明显,对于使用Zabbix中收集的庞大数据阵列的正常工作而言,没有足够的可视化效果-复杂的屏幕。 最好的解决方案还是免费软件-Grafana,它是一种方便的指标仪表板,使您可以在一个屏幕上汇总所有数据。

Grafana的交互式界面让人联想到OLAP系统。 子系统在单个屏幕上显示Zabbix接收的数据,以便于分析的图形和图表的形式显示信息。 管理员可以轻松自定义所需的切片。

LMS系统中的监视和预防性故障排除
过滤和分析在监视过程中收到的信息有助于ELK开源软件平台。 该开源产品由三个用于收集,存储和分析数据的强大工具组成:Elasticsearch,Logstash和Kibana。 该子系统的实现尤其允许实时查看系统中发生了多少错误,在哪些服务器上以及是否重复了这些错误。

现在,管理员甚至可以在用户遇到问题之前及早发现问题。 此类主动监视可通过及时消除错误来帮助防止系统故障。 此外,我们可以了解更新后系统行为的变化,并在出现新问题时进行检测。

业务运营监控
除了监视资源消耗的基本功能外,该系统还具有分析和控制业务运营的能力。

监视业务运营的总时间可以使您识别新因素并了解它们对系统的影响。

在每个业务服务的上下文中监视请求的执行时间可以检测与规范有偏差的操作。

上面的屏幕截图显示了一个监视后台任务是否偏离规范的示例。

根据特定服务器上活动的监视任务列表,您可以识别所有服务器上的错误-包括重复执行任务。

它还监视后台过程执行时间的趋势。
该系统可以发展,发展并有助于解决问题。
通过所描述的系统的实现,对DLS服务器操作的监视已大大简化。 但是,会定期出现各种冲突,这些冲突会影响工作流程的速度并引起用户投诉。 因此,我们意识到有必要控制应用程序本身的行为,而不仅仅是服务器。
为了解决此问题,通过API将平衡器连接到监视系统,该API与一组应用程序服务器一起工作。 因此,管理员可以看到服务器负责每个用户请求的时间。
服务器响应时间的数据可用于分析,这使得将LMS的速度下降与服务器上发生的进程相关联成为可能。 揭示了一个有趣的情况,尤其是:服务器速度很慢,尽管此时服务器尚未加载。 通过分析异常,我们发现Garbage Collector Java的操作存在偏差。 最后,事实证明,正是这种服务的错误操作导致了这种情况。 控制Garbage Collector Java,我们已完全解决了该问题。
这就是免费软件如何帮助开发和发展银行业文档管理系统的方式。 我们仅涉及有关VTB LMS监视系统的主要问题。 如果您对这些细节感兴趣-在评论中提问,我们将很乐意与您分享我们的经验。