数据库基于Slack Bot的实时监控和预警平台

2017-03-24 11:30罗青
电脑知识与技术 2017年1期
关键词:实时监控预警数据库

罗青

摘要:为了能够有效的监控和预警生产环境中数据库的运行状态,及时的解决因为数据库无法响应或者数据库硬件损坏导致的损失,基于数据库的实时预警系统尤为重要。传统的监控和预警平台通常采用的是自动化脚本+邮件和短信提醒的方式,虽然解决了预警的及时性问题,但是并不能支持可配置性和实时查询。因此有必要搭建一套实时的数据库监控和预警系统来保证线上数据库的正常运行。该文采用了最近逐渐开始流行的Slack作为消息推送平台,通过研究Slack实时消息API,并且与Jira,LDAP等企业管理工具的集成,实现了一套部署在生产环境数据库之上的基于Slack Bot的实时监控和预警系统。最后通过比较评估了实际效果。

关键词:预警; Slack; 实时监控; bot; 数据库

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)01-0003-03

1 引言

数据库是按照数据结构来组织,存储和管理数据的仓库。起源于上世纪60年代,随着计算机科学技术的发展,越来越多的数据由纸质的文档存储方式转为数据库存储。在环保节能的同时,也方便了数据的维护和检索[1]。数据库本身的发展也随着应用需求的增加而迅速的發展。从Oracle,DB2,Access再到服务于大数据平台的Aster,MongoDB,Hbase。数据库也逐渐从单一节点发展成为多个节点集群的分布式环境。与此同时,随着数据库的飞速发展,在存储容量和存储效率大大提高的同时,数据库的稳定性和可用性是摆在企业面前的一大难题。虽然现在所有的数据库都有相当成熟的容灾机制,并且通过多备份,Master-Slave的机制来使得数据库在部分节点发生故障的同时能够正常的使用。即使如此,数据库在发生意外之后,仍然会导致部分数据丢失,或者应用相应缓慢的问题,造成使用数据库的应用服务器任务挤压,最终导致业务数据的丢失或者应用服务器的无法响应。所以如果能够在问题发生之前就能够预测到问题发生的可能性,防患于未然,并且及时的通知到正确的责任人,给责任人提供一个方便的交流问题的环境就尤为重要。

2 基于Slack Bot的数据库实时监控和预警平台

在介绍了数据库预警和监控系统的背景之后,本节将介绍数据库预警系统的目标和所要解决的问题,并基于研究目标,确定与研究可行的方案。

2.1 研究目标

对一个实时数据库系统而言,进行系统运行状态的监视是非常必要的,建立一套数据库实时自动的监控系统,不但能减轻值班员的工作压力,提高管理水平,同时也增强了系统的稳定性[2]。传统的数据库预警和监控系统,通常采用定时脚本来获取数据库系统当前状态,或者通过大数据平台的提供的预警接口来实现,并且与企业内的邮箱服务器和外部的短信服务器实施预警数据的推送[3]。采用邮件作为推送介质可以发挥邮件本身的诸多优点,可以将所有的责任人抄送在一起,通过邮件的方式来讨论问题的原因和解决方案。但是邮件的回复不同于传统的社交软件,通常会产生邮件回复顺序错乱以及交流不方便的问题,并且企业中员工每天都会受到上百封邮件,往往不在工作时间员工可能会忽略邮件,导致无法及时的通知到位的缺点。采用短信服务器的优点在于可以再没有网络的前提下接受到预警信息,弥补了邮件方式不能及时响应的问题。但是却丧失了交流平台的能力。所以说传统的数据库预警和监控系统并不具备交互能力和实时查询的能力,也不具备方便的交流平台。需要一个新的解决方案来实现一个既方便好用,又及时可靠的数据库预警和监控平台。所以新的预警平台需要符合以下几个目标。

(1)实现能够及时可靠的预警发送平台

预警的准确快速的发送是预警平台的首要任务,所以正确及时地将预警发送到需要接收的责任人当仁不让的成为新平台搭建的首要目标。

(2)提供责任人互相讨论的平台空间

提供手机/电脑端社交平台,对于每一个预警创建一个聊天房间,并且允许责任人添加更多的相关人员进入房间,在聊天平台中发表各自的意见和经验,并且将聊天记录保存,方便日后的查找。

(3)能够和企业内部的故障管理平台对接,实时记录问题状态

通常企业内部有着自己的故障管理平台,将故障管理平台和预警平台对接,实现预警推送的时候生成新的故障单,并且与之关联。并且可以再预警平台的聊天窗口中实现故障单的更新和关闭。此外,在预警发生的同时,将过去与之相似的故障单找出发送给相关责任人,使得责任人能够更快的定位问题和解决问题。

(4)提供可配置的预警服务能力

在制作预警平台的时候,如果解决过度预警的问题,也十分重要。就像狼来的故事一样,当一些简单预警过度频繁的推送,会导致真正需要关心的预警不能被及时解决,并且话费了大量的人力物力去修复那些并不是很重要的预警。所以如何将真正的预警发送到真正关心的人手中就十分的重要。新的预警系统需要提供简单的配置能力,供使用者过滤预警和设置自己专属的预警。

2.2 Slack平台

Slack平台能够提供群组聊天,大规模工具集成,文件整合和统一搜索的能力。并且已经能够整合电子邮件、短信、Google、Jira、Twitter等工具,可以把各种碎片化的企业工具沟通和协作集中在一起。Slack平台成立于2013年,在成立之后迅速的发展,每天的在线用户突破了60万。成为诸多企业首选的企业内部社交软件。Slack平台提供了一系列的集成接口,比如Slack实时消息接口,可以使用户自己搭建机器人程序,实现实时的消息的监听和消息的推送。并且Slack支持富文本的推送,可以在聊天中通过命令行的输入创建按钮,表单等结构,方便在聊天窗口中实现小应用的使用。

以上这些Slack平台的优点是我们选择其成为预警平台的原因。方便地和企业内部程序的集成,使得员工不需要在多个系统中完成冗余繁琐的操作,实时的消息推送和接收接口,可以满足预警信息的推送和预警可配置,Slack本身作为一个社交平台,提供了交流的平台,使得责任人可以在聊天窗口中发送相关图片,文档,谈论解决方案。

2.3 基于Slack Bot的数据库实时监控和预警平台实现

本节介绍了基于Slack Bot的数据库实时监控和预警平台的架构搭建方法和实际部署平台搭建。

2.3.1 架构搭建

从架构图1中可见,监控和预警平台总共由3个部分所组成,数据库定时脚本模块,JMS消息队列和机器人集群。

预警数据的获取主要由两个方面的数据所构成,首先是针对于大数据平台Hbase等自己拥有管理平台的集群,采用监听其预警消息接口,比如集群内服务器的故障和网络故障等,通过数据库主动推送的方式接收数据库预警信息。针对于传统的面向对象数据库以及大数据平台不具备的数据预警,比如数据库的容量预警,数据库长脚本执行预警等。需要由数据库运维人员自己制作脚本来定时运行。所以定时脚本模块就实现了运行运维人员自定义定时脚本的功能。通过每隔一段时间像数据库轮询当前状态来发送预警信息,并且将信息保存到JMS中。

新系统采用了JMS作为消息总线,利用JMS数据的可靠性和高可用性来确保每一条预警消息能够准确地发送到Slack机器人。JMS为分布式系统中创建、发送、接收消息提供了一套可靠、通用的方法,它屏蔽了不同操作系统和网络协议的具体细节,减少了开发跨平台和网络协议软件的复杂性[4]。同时JMS将作为Slack机器人集群的负载均衡平台。对于一些需要用户交互的请求,机器人程序并不直接处理请求,而是会将接收的数据直接推送到JMS上,并且由空闲的机器人从JMS上读取消息,并且执行。这样当某台Slack机器人工作繁忙的时候,不会造成消息的积压,并且支持當某一台机器人无法正常工作的前提下,由其他机器人来消费消息完成用户交互。新系统采用了发布订阅者模型,通过对于topic的订阅来实现消息负载均衡的传递[5]。

机器人程序作为Slack的客户端,和传统的Slack客户端具有相同的消息发送,接收,图片发送等功能。可以实现将预警消息推送到责任人,并且监听和处理交互信息。与此同时,机器人程序会与企业内部的故障管理程序Jira集成,实现历史相似故障的搜索以及当前故障的生命周期管理。

2.3.2 Slack实时消息接口调用

Slack作为当下流行的社交平台提供了实时的消息接口,可以通过注册机器人账号,通过验证token的方式进行登录验证。Slack提供了实时的数据推送接口,可以通过发送Json字符串和token的方式实现数据的推送。同时Slack提供了基于Event的数据监听接口,可以监听用户发送的数据和命令。从而实现了用户交互。此外,Slack提供了更具交互性的带有按钮的消息模块,可以将如下消息发送给用户使得用户完成交互操作

2.3.3 自定义预警

在新的数据库监控和预警平台,用户可以回复反斜杠+CA来实现自定义预警。在用户输入了自定义预警命令之后,机器人程序会自动返回自动预警的表单,用户可以从下拉框中选择预警的内容和所对应的阈值,保存并且实时生效。用户也可以输入反斜杠+CAL来查看自定义的预警列表,以及输入反斜杠+DCA+预警编号来删除自定义预警。如果用户经常介绍到不属于自己的预警,可以通过输入反斜杠+AL来查询自己的预警列表,并且通过输入反斜杠+MA+预警编号来实现预警的屏蔽。这样就可以避免由于过度打扰带来的预警失效。

2.3.4 实际部署

本文所搭建的环境都是以虚拟机组成:

2.3.5 消息审计

消息审计模块是预警系统重要的模块。虽然消息审计模块对于预警系统没有功能上的增强,但是却是不可或缺的一环。在企业内部客户的数据十分的重要,如何保护客户数据的安全则至关重要。并且信息审计具有预防、控制和实现价值增值的三大功能[6]。Slack本身并不属于企业内部的平台,并且Slack平台作为企业内部和外部客户端打通的工具,需要严格的对发送的预警和监控信息进行消息审计和消息记录,避免用户的数据外泄。本系统采用了三种方式来防止消息泄露。

首先基于Episode距离的快速多模式相似串匹配算法,该算法把模式串集合转换为多个有限自动机,然后利用模式串集合建立一个状态驱动器.依次用待匹配串的字符驱动状态驱动器,由状态驱动器驱动各个有限自动机,实现了中英文混合的允许插入错误的相似多模式匹配[7]。从而查看数据中是否包含需要加密的客户数据,如客户地址,客户名称等。

其次通过对于Oracle脚本执行记录的分析,查看执行脚本中是否涉及读取涉密信息[8]。最后将发送的审计信息同步保存到Hdfs上,为了日后的详细升级提供依据。

2.3.6 效果比较

前文通过一系列的基于Slack平台设计和开发,提出并且实现了一套完整的数据库监控和预警平台解决方案。相比于传统的数据库监控和预警方案,基于Slack Bot的数据库监控和预警平台有以下优势:

(1)提供交流的平台来解决问题

Slack作为一款社交软件,能够很好支持线上语音,视频,文字交流的需求。这有助于在问题发生时能够更快的联系到各方的代表,共同解决当前的问题。并且有效地解决了邮件系统回复顺序混乱的问题。并且聊天的记录也会保存下来,供以后所使用。

(2)能够和企业内部的平台集成

Slack最大的亮点就是能够和诸多企业内部的工具相集成。比如说JIRA,GitHub,邮箱服务,LDAP等等。这样只需要通过简单的配置既可以实现将企业内部碎片化的管理工具整合。在问题发生时可以减少很多人工的冗余步骤,并且可以从历史相似的案例中找到解决方案。

(3)能够在手机端配置新的预警

Slack支持的富文本编辑可以提供自定义的表单消息,用户可以在表单中配置自己需要的预警。这样就可以在外网完成配置操作。而不需要通过VPN的方式连接公司内网,然后在网页上实现预警配置,提高了用户的使用体验

(4)能够搜索历史消息记录来帮助分析问题

Slack作为一款社交平台,支持对于历史消息记录的搜索,能够通过关键字很快的检索到以前的问题修复方案和讨论内容。从而不需要像以前一样从每天上百封的邮件中去搜索内容。并且由于slack的信息是保存于服务器端,不存在个人账户的数据大小的限制。

3 结论

文章提出了数据库监控和预警的重要性,并且通过对于传统数据库监控和预警的调研,指出其不足。并且研究和选择了Slack平台作为预警监控平台的基础平台,设计和实现了一个能够实现准确实时预警,又能够和企业内部工具集成,并且基于社交平台的数据库监控预警的解决方案。

参考文献:

[1] 向海华.数据库技术发展综述[J].现代情报.2003(12):31-33.

[2] 高峰.数据库实时监控系统的设计与实现[J].气象,2005,31(3):81-84.

[3] 王娜,宿红毅,白琳,等.数据库性能监控分析系统的设计与实现[J].计算机工程,2005(24):105-107.

[4] 姚刚.基于JMS的消息中间件的研究与设计[D].长沙理工大学,2008.

[5] 苏洋.分布式应用对象间JMS消息服务原理与消息处理过程[J].微型机与应用,2002(8):9-12.

[6] 王知津,卞丹,王文爽.电子商务环境下企业信息审计研究[J].情报探索.2010(9):3-6.

[7] 高鹏,张德运,孙钦东,等.网络信息审计系统中的多模式相似匹配算法[J].软件学报,2014,15(7):1074-1080.

[8] 陈晨,陈怀楚,高国柱,等.基于Oracle数据库的数据审计系统的设计与实现[J].实验技术与管理,2005(12):76-79.

猜你喜欢
实时监控预警数据库
法国发布高温预警 严阵以待备战“史上最热周”
园林有害生物预警与可持续控制
智能投料过程动态监控系统研发及应用
机载预警雷达对IFF 的干扰分析