CN117539843A - 基于企业微信的交互式数据库告警与故障处理系统 - Google Patents

基于企业微信的交互式数据库告警与故障处理系统 Download PDF

Info

Publication number
CN117539843A
CN117539843A CN202311505557.6A CN202311505557A CN117539843A CN 117539843 A CN117539843 A CN 117539843A CN 202311505557 A CN202311505557 A CN 202311505557A CN 117539843 A CN117539843 A CN 117539843A
Authority
CN
China
Prior art keywords
database
module
command
alarm
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311505557.6A
Other languages
English (en)
Inventor
雷鹏
喻洪亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Saxo Financial Technology Co ltd
Original Assignee
Saxo Financial Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Saxo Financial Technology Co ltd filed Critical Saxo Financial Technology Co ltd
Priority to CN202311505557.6A priority Critical patent/CN117539843A/zh
Publication of CN117539843A publication Critical patent/CN117539843A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及数据库处理技术领域,尤其是基于企业微信的交互式数据库告警与故障处理系统。该交互式数据库告警与故障处理系统包括信息采集模块,告警通知模块,命令验证模块和命令执行模块。信息采集模块负责监控和采集数据库运行状况和服务器资源使用信息,告警通知模块接收信息并在数据库状态或系统资源使用超出阈值时向管理员发送告警。命令验证模块接收并验证管理员通过企业微信发送的命令,命令执行模块根据预设规则处理故障并将结果反馈给管理员。这种系统实现了对数据库的实时监控和故障的及时处理,支持管理员通过企业微信进行交互式故障处理,提高了故障处理效率,增强了管理员的控制力,使数据库运维更高效、灵活。

Description

基于企业微信的交互式数据库告警与故障处理系统
技术领域
本发明涉及数据库处理技术领域,尤其是基于企业微信的交互式数据库告警与故障处理系统。
背景技术
随着计算机技术的不断发展和移动互联网的普及,数据库成为企业重要的信息存储和处理载体,承载着大量的业务数据和关键信息。数据库的安全性和可靠性对企业的正常运营和数据资产的保护至关重要。随着数据库规模的不断扩大和复杂性的增加,对数据库的告警技术提出了更高的要求。
目前,数据库告警主要采用的技术方案是:数据库管理员根据服务器资源和业务场景,设计数据库健康指标和告警阈值,当数据库健康指标不符合阈值时,告警程序通过多种方式向数据库管理员发送告警消息。数据库管理员收到告警信息后,登录到计算机系统,查询被告警数据库的详细信息,进行问题分析和故障处理。通过查看日志、分析查询语句、调整数据库参数等操作,解决数据库问题。
该数据库告警技术存在以下缺点:
1.信息量有限的告警通知:现有告警通知通常只能展示异常的监控指标值,无法及时采集现场信息,而某些问题可能会迅速发生和消失,导致问题根因难以准确分析。
2.故障响应延迟:现有告警通知方式通常是单向通知,接收人需要手动登录到计算机,再输入命令处理问题,存在无法成功登录到计算机的风险,可能导致问题响应的延迟,缺乏实时协作的能力。
3.故障处理延误与误操作风险:现有告警方案中,需要管理员手工输入命令处理数据库问题,特别是在出现严重故障需要尽快进行恢复时,繁琐复杂的操作命令更加耗时,难以符合快速恢复的要求,手工输入命令也存在误操作的风险。
发明内容
本发明的目的是提供基于企业微信的交互式数据库告警与故障处理系统及方法,提高提高故障处理效率。
本发明提供的基础方案:基于企业微信的交互式数据库告警与故障处理系统, 该系统包括: 信息采集模块,用于定期监控和采集数据库的运行状况信息以及服务器操作系统资源使用信息,并将这些信息存储到服务器磁盘;告警通知模块,用于接收来自信息采集模块的信息,当信息显示数据库状态或系统资源使用超出预定阈值时,通过企业微信的API将告警信息发送给数据库管理员;命令验证模块,接收并验证来自数据库管理员通过企业微信发送的命令,并将验证通过的命令发送给命令执行模块;命令执行模块,接收来自命令验证模块的命令,根据预设的处理规则进行故障处理,并将处理结果通过企业微信的API反馈给数据库管理员。
本发明的有益效果:该系统实现了对数据库运行状况和服务器资源使用的定期监控,并在检测到问题时,能立即通过企业微信向数据库管理员发送告警,从而实现对问题的实时发现和及时处理。同时,该系统支持管理员通过企业微信发送命令进行故障处理,以实现对故障的快速反应和处理。这种交互式的处理方式,不仅提高了问题处理的效率,也增强了管理员对故障处理过程的控制,使得数据库运维更为高效和灵活。
进一步,信息采集模块还包括:数据库信息采集子模块,用于定期采集数据库的运行状况信息;服务器资源信息采集子模块,用于定期采集服务器操作系统资源使用信息;信息存储子模块,将采集到的信息直接写入服务器磁盘的文本文件中,并对超过一定时间的信息文件进行打包压缩,并设置过期时间,到期后删除。
本方案的有益效果为:该方案实现了数据库信息和服务器资源信息的细致和有序采集,这种设计不仅提高了信息采集的准确性和效率,而且有助于问题的诊断和定位。通过以信息项名称加时间戳的格式将信息直接写入服务器磁盘的文本文件中,该设计实现了信息的有序存储和检索,同时,过期的信息文件的打包压缩和定期删除,有效管理了存储空间,保证了数据库和服务器的高效运行。这种设计不仅提升了系统的运行效率,也为数据库管理员提供了更加清晰、详细的信息,有助于更快速、准确地处理和解决问题。
进一步,所述告警通知模块采用企业微信自建应用:所述告警通知模块通过corpid与corpsecret获取access_token,然后使用access_token、agentid与touser组成的Webhook地址发送告警消息,实现将告警消息通过自建应用发送给数据库管理员;其中所述corpid为企业的ID,corpsecret为企业微信自建应用的凭证密钥,agentid为企业微信自建应用的ID,access_token为登录凭证,用来鉴别调用者身份,touser为数据库管理员的企业微信ID。
本方案的有益效果为:该方案通过企业微信自建应用的告警通知模块,实现了高效、安全、个性化且自动化的告警通知。它通过使用企业的ID和自建应用的凭证密钥获取访问令牌,然后结合自建应用的ID和数据库管理员的企业微信ID,向管理员发送实时告警消息。这一流程不仅保证了信息传输的安全性和实时性,还使得告警通知更加精确。
进一步,所述命令验证模块还包括:命令接收子模块:通过与企业微信的接口进行通信,获取管理员发送的命令;命令解析子模块:在接收到命令后,解析命令的内容,提取出命令的格式和目标数据库;格式验证子模块:验证命令是否符合预定义的格式,如果命令格式有误,命令验证模块会返回错误消息,提示管理员检查输入;状态验证子模块:用于检查目标数据库的状态;若目标数据库当前处于告警状态,则验证通过,若目标数据库未发生告警,则不执行任何操作;命令转发子模块:在命令通过格式验证和状态验证后,命令验证模块会将命令转发给命令执行模块进行进一步的处理。
本方案的有益效果为:该模块实现了对数据库指令的有效接收、解析、验证和转发,极大提高了数据库故障处理的自动化程度。这不仅可以节省管理员在故障处理过程中的时间和精力,也能提高故障处理的速度和准确性,从而增强数据库的稳定性和可靠性。此外,这个模块还为管理员提供了清晰的错误反馈,帮助他们更好地理解和解决问题。
进一步,信息采集模块还包括:采集频率管理子模块:通过配置文件,对不同业务设置不同的采集频率,并通过监控系统负载情况来动态调整采集频率。
本方案的有益效果为:通过采集频率管理子模块,实现了对信息采集频率的灵活管理和动态调整。通过配置文件,可以根据不同的业务需求设置不同的采集频率,以满足各种业务场景的需求。更重要的是,该模块还能够根据系统负载情况动态调整采集频率,当系统负载过高时,能自动降低采集频率,避免因采集过程带来的额外负载进一步影响系统性能。同时,当系统负载恢复正常时,又能自动恢复原有的采集频率,确保信息采集的及时性和准确性。这种设计既保证了系统的稳定性,又确保了信息采集的效率和准确性,为数据库故障的快速定位和处理提供了有力支持。
进一步,该系统还包括:告警系统备份与恢复模块,所述告警系统备份与恢复模块包含以下子模块:系统备份子模块:负责在两台独立的物理服务器上部署告警系统,创建主告警系统和备份告警系统,并使用keepalived软件监控其存活状态。系统恢复子模块:在主告警系统出现故障时,管理虚拟IP以将其转移到备份服务器,激活备份告警系统,并向管理员发出故障通知。
本方案的有益效果为:通过告警系统备份与恢复模块的设计,有效地提高了告警系统的可靠性和稳定性。系统备份子模块在两台独立的物理服务器上部署告警系统,创建主告警系统和备份告警系统,并使用keepalived软件监控其存活状态,保证了系统的持续可用性。当主告警系统出现故障时,系统恢复子模块能够将虚拟IP(VIP)漂移到备份服务器并激活备份告警系统,从而实现了系统的无缝切换。这种设计不仅减少了由于系统故障导致的服务中断时间,而且通过向管理员发出故障通知,使管理员能够及时了解系统状态并进行必要的故障处理,从而确保了数据库服务的稳定运行。
进一步,预定义的格式为:查询指令以字母R加数字表示,所述执行指令以字母X加数字表示。
本方案的有益效果为:通过预定义查询指令和执行指令的格式,简化了命令的输入和解析过程。这种格式规定,查询指令以字母R加数字表示,执行指令以字母X加数字表示,使得命令的解析和执行更加高效和准确。这种预定义的格式降低了输入错误的可能性,增加了命令处理的可靠性,从而提升了数据库故障处理的效率。
进一步,预设的处理规则包括:查询指令处理:如果命令是查询指令,命令执行模块会获取指定的现场信息;执行指令处理:如果命令是执行指令,命令执行模块会调用预定义的 shell 脚本来执行指定的操作;自定义指令处理:如果命令是自定义指令,命令执行模块会根据管理员输入的具体命令执行相应操作。
本方案的有益效果为:通过预设的处理规则,为查询、执行和自定义指令提供了清晰、精确的处理逻辑。查询指令可以实时获取数据库的现场信息,执行指令能够调用预定义的脚本执行特定操作,而自定义指令使管理员有能力根据实际需求执行特定操作。这种规则化的处理方式不仅提高了故障处理的效率和准确性,还增强了系统的灵活性和可定制性。
附图说明
图1为本发明的数据库告警处理流程图。
具体实施方式
下面通过具体实施方式进一步详细说明:
实施例一
本实施例中的交互式数据库告警与故障处理系统,包括以下技术和组件:
企业微信与自建应用:企业微信是微信团队开发的一种专为企业内部通信和协作设计的工具。在企业微信平台上,可以创建自定义的应用,这些应用能通过API与企业微信互动,实现消息的发送和接收。在本发明中,当数据库的某个指标超过或低于设定的阈值时,告警系统会利用自建应用的API向数据库管理员发送告警消息。当管理员收到告警后,他们可以通过回复自建应用的消息,实现数据库告警的自动处理。
Python与Flask:Python是一种被广泛用于Web开发、数据分析、人工智能等多个领域的高级编程语言。Flask是一个由Python编写的轻量级Web应用框架。在本发明中,Python被选为主要的编程语言,用于编写告警系统的所有逻辑和功能,而Flask则用于构建服务器,接收和处理请求。
Shell:Shell是一个命令行解释器,它提供了一个与操作系统交互的接口,使得用户能执行命令和脚本。在本发明中,Shell脚本被用于实现数据库监控、现场信息采集、告警消息发送,以及数据库故障处理等操作。例如,通过使用Linux的定时任务管理工具crontab,定期调用shell脚本来监控数据库,一旦数据库的健康指标不满足预设条件,就触发告警并发送告警消息。在处理告警时,数据库管理员可以通过自建应用发送指令到服务器,告警系统在接收到指令后,会进行逻辑判断,并根据指令执行相应的数据库故障处理操作。
总结来说,Python作为主要的编程语言,被用于开发整个系统的逻辑和功能。Flask框架提供了Web应用的基础设施,用于构建接收和处理请求的服务器端。自建应用负责与告警系统进行消息交互,实现告警信息的发送和接收。Shell作为命令行解释器,用于执行数据库监控、告警和故障处理等命令。通过这些技术和组件的紧密配合,本发明实现了一套基于企业微信的交互式数据库告警与故障处理系统。
本实施例中,基于企业微信的交互式数据库告警与故障处理系统,包括以下内容:
信息采集模块,用于定期监控和采集数据库的运行状况信息以及服务器操作系统资源使用信息,并将这些信息存储到服务器磁盘。信息采集模块还包括:数据库信息采集子模块,用于定期采集数据库的运行状况信息;服务器资源信息采集子模块,用于定期采集服务器操作系统资源使用信息;信息存储子模块,将采集到的信息以信息项名称加时间戳的格式直接写入服务器磁盘的文本文件中,并对超过一定时间的信息文件进行打包压缩,并设置过期时间,到期后删除。
该模块具体来说:信息采集模块在交互式数据库告警与故障处理系统中扮演着至关重要的角色。其负责定期监控和收集数据库的运行状况信息以及服务器操作系统资源使用信息。这些信息是告警系统是否能准确及时发起告警,以及数据库管理员是否能有效定位和处理故障的关键。
在这个模块中,数据库信息采集子模块定期收集数据库的运行状态信息,例如数据库错误日志、数据库连接分组统计信息、活跃会话信息、锁等待信息、慢查询语句信息等。这些信息是非常关键的,因为它们可以帮助数据库管理员定位和解决问题。例如,如果一个数据库的错误日志中出现了大量的锁等待警告,管理员可以通过这些信息找出问题的根源,可能是某个长时间运行的事务没有正常完成,从而导致其他事务无法获取到必要的锁。
与此同时,服务器资源信息采集子模块定期收集服务器操作系统的资源使用信息,例如CPU使用率、内存使用情况、磁盘空间使用情况等。这些信息同样重要,因为它们可以帮助管理员了解服务器的整体运行状况,及时发现可能影响数据库性能的问题。例如,如果服务器的CPU使用率持续高于90%,那么可能需要考虑优化应用程序,或者升级服务器硬件。
为了方便后续的分析和查询,信息存储子模块将收集到的信息以信息项名称+时间戳的格式直接写入到服务器磁盘的文本文件中。这种方法可以方便数据库管理员在必要时查阅历史信息。此外,对于超过一定时间的信息文件,系统会自动进行打包压缩,并设置过期时间,到期后自动删除,有效地管理了存储空间。
通过这些设计,信息采集模块为数据库管理员提供了一个全面、实时、易于管理的数据库和服务器运行信息,大大提高了数据库告警和故障处理的效率和准确性。
例如:假设数据库管理员A需要定期检查数据库和服务器的运行状况。
首先,数据库信息采集子模块会定期采集数据库的运行状况信息,包括数据库错误日志、数据库连接分组统计信息、活跃会话信息、锁等待信息、慢查询语句信息、主从数据同步信息、大事务信息和长事务信息等。这些信息都是管理员A判断数据库健康状况的关键数据。
同时,服务器资源信息采集子模块也会定期采集服务器操作系统资源使用信息,包括CPU使用情况、内存使用情况、磁盘空间使用情况和磁盘性能信息等。这些信息可以帮助管理员A了解服务器资源是否充足,是否需要进行调整。
这些采集到的信息会被信息存储子模块以信息项名称加时间戳的格式直接写入服务器磁盘的文本文件中。这种磁盘顺序写入的方式效率高,读取也很方便。比如说,当管理员A需要查看昨天下午五点的数据库连接分组统计信息时,他只需要找到对应的文本文件,就能轻松获取这个信息。
信息存储子模块还会对超过一定时间的信息文件进行打包压缩,并设置过期时间。比如说,系统设置了一个规则,每隔一个月就对过去的信息文件进行打包压缩,然后设置一个过期时间,比如说三个月。这样,三个月后的某一天,这个打包压缩的文件就会自动被删除,释放出磁盘空间。
当然,所有这些采集到的信息也会定期发送给告警通知模块。比如说,当信息采集模块检测到数据库的某个错误日志,或者服务器的磁盘空间使用情况超过了预设的阈值,就会立即发送一个告警通知给管理员A,让他能够及时处理这个问题。
该系统还包括告警通知模块,用于接收来自信息采集模块的信息,当信息显示数据库状态或系统资源使用超出预定阈值时,通过企业微信的API将告警信息发送给数据库管理员。所述告警通知模块采用企业微信自建应用:所述告警通知模块通过corpid与corpsecret获取access_token,然后使用access_token、agentid与touser组成的Webhook地址发送告警消息,实现将告警消息通过自建应用发送给数据库管理员;其中所述corpid为企业的ID,corpsecret为企业微信自建应用的凭证密钥,agentid为企业微信自建应用的ID,access_token为登录凭证,用来鉴别调用者身份,touser为数据库管理员的企业微信ID。
在企业微信管理后台创建自建应用,并查询获得企业微信的corpid,以及自建应用的corpsecret与agentid,通过corpid与corpsecret获取access_token,access_token是登录凭证,用来鉴权调用者身份,然后使用access_token、agentid与touser组成的Webhook地址发送告警消息,实现告警消息通过自建应用发送给数据库管理员,开启自建应用接收消息模式,填写自建应用的URL、Token、EncodingAESKey三个参数,接收到企业微信的消息后,对消息体进行签名校验,校验通过后再对消息密文解密,得到消息明文。
在交互式数据库告警与故障处理系统中,告警通知模块的主要职责是接收来自信息采集模块的信息,并根据这些信息的内容,判断是否需要发起告警。例如,如果信息显示数据库状态或者系统资源使用已经超出预定的阈值,告警通知模块就需要采取行动。
为了能够及时地将这些重要信息传达给数据库管理员,告警通知模块将利用企业微信的API,把告警信息发送出去。具体来说,在企业微信管理后台创建一款自建应用,并且查询并获得企业微信的corpid(即企业ID),以及自建应用的corpsecret(应用的凭证密钥)和agentid(应用ID)。这些信息是自建应用与企业微信进行通信的基础。
有了这些必要的信息,告警通知模块就可以开始发送告警信息。首先,它会通过corpid和corpsecret获取access_token,这是一种登录凭证,用来鉴权调用者身份。然后,它将使用access_token、agentid以及touser(接收者的企业微信ID)组成一个Webhook地址,然后通过这个地址发送告警消息。这样,告警消息就可以通过自建应用发送给数据库管理员。
当管理员收到告警信息后,他们可以通过企业微信发送处理命令。首先,开启自建应用接收消息模式,并填写自建应用的URL(接收企业微信推送请求的地址)、Token(用于生成签名)和EncodingAESKey(用于消息体的加密)三个参数。当它接收到企业微信的消息后,它会对消息体进行签名校验,以确保消息的完整性和安全性。校验通过后,它会对消息密文进行解密,得到消息明文,然后进行后续的处理。
例如:数据库管理员B需要通过企业微信接收数据库和服务器的告警通知,并通过企业微信发送处理指令。
在这个过程中,首先,会在企业微信管理后台创建一个自建应用,并查询获得企业微信的corpid、自建应用的corpsecret与agentid。这些信息是企业微信用来识别和管理自建应用的重要信息。
通过使用corpid与corpsecret获取access_token,access_token是登录凭证,用来鉴权调用者身份。然后,当信息采集模块检测到数据库状态或系统资源使用超出预定阈值时,使用access_token、agentid与管理员B的企业微信id(touser)组成的Webhook地址发送告警消息。这样,告警通知就可以通过自建应用发送给管理员B。
在管理员B收到告警通知后,他可能需要发送处理指令,比如说让系统自动优化数据库或者增加服务器资源。他可以直接通过企业微信向自建应用发送这个指令。
这时,自建应用接收消息模式,并填写了自建应用的URL、Token、EncodingAESKey三个参数。当它接收到管理员B发过来的消息后,会先对消息体进行签名校验。如果校验通过,说明消息是合法的,没有被篡改,然后就会对消息密文解密,得到管理员B发送的处理指令。
通过企业微信的API将告警信息发送给数据库管理员,并接收管理员发送的处理指令,实现了告警通知的实时性和管理员的交互处理。同时,通过消息体签名和内容加密技术,保证了Web服务器只接收管理员所发送的消息,并且消息是真实可靠的,中途没有被篡改。
该系统还包括命令验证模块,接收并验证来自数据库管理员通过企业微信发送的命令,并将验证通过的命令发送给命令执行模块。命令接收子模块:通过与企业微信的接口进行通信,获取管理员发送的命令;命令解析子模块:在接收到命令后,命令验证模块需要解析命令的内容,提取出命令的类型和目标数据库;格式验证子模块:验证命令是否符合预定义的格式,预定义的格式为:查询指令以字母R加数字表示,所述执行指令以字母X加数字表示;如果命令格式有误,命令验证模块会返回错误消息,提示管理员检查输入;状态验证子模块:用于检查目标数据库的状态;命令转发子模块:在命令通过格式验证和状态验证后,命令验证模块会将命令转发给命令执行模块进行进一步的处理。
本实施例中的预定义内容如表一所示。需要说明的是:该指令内容并非所有数据库命令,对于其他数据库系统,可以根据自身业务情况进行增加或删减。
表一:
该模块作为企业微信接口和命令执行模块之间的桥梁,对管理员发送的各种命令进行接收、解析、验证和转发。当数据库管理员在企业微信中发送命令,例如“X05”(代表某一执行指令)时,命令接收子模块会首先进行接收。
接下来,命令解析子模块会解析这个命令的内容,将“X”和“05”分别解析为命令的类型和目标数据库。然后,格式验证子模块将会验证这个命令是否符合预定义的格式,例如这里的“X05”明显符合“字母+数字”的规则,所以可以通过。但如果管理员错误地输入了“Y05”这样的指令,那么格式验证子模块会返回错误消息,提示管理员重新输入。
在确认命令格式无误后,状态验证子模块会进一步检查目标数据库的状态。在这个例子中,"05" 表示具体要执行的操作是中断大事务的会话,那么,状态验证子模块会检查相关数据库的状态,判断是否存在需要中断的大事务会话。如果这个数据库当前状态正常,并无任何告警信息,那么状态验证子模块就会返回结果“该数据库当前状态正常,无需执行相关操作”,并停止后续的处理流程。
只有当目标数据库真正存在告警时,命令验证模块才会将命令转发给命令执行模块进行进一步处理。在这里,“X05”会被解释为一个具体的操作,即中断大事务的会话。这个操作会由命令执行模块执行,它可能会调用shell脚本,或者直接通过数据库客户端执行。
该系统还包括命令执行模块,接收来自命令验证模块的命令,根据预设的处理规则进行故障处理,并将处理结果通过企业微信的API反馈给数据库管理员。该模块中预设的处理规则包括:查询指令处理:如果命令是查询指令,命令执行模块会获取指定的现场信息;执行指令处理:如果命令是执行指令,命令执行模块会调用预定义的 shell 脚本来执行指定的操作;自定义指令处理:如果命令是自定义指令,命令执行模块会根据管理员输入的具体命令执行相应操作。执行完命令后,命令执行模块会将处理结果返回给告警通知模块。告警通知模块会将这些信息发送给管理员。
例如:当数据库由于一个大型事务导致性能下降,告警系统会检测到这个问题并触发一个告警。在接收到告警通知后,数据库管理员希望获取关于问题的更多详细信息。他们通过企业微信发送一个查询指令 "R01",以获取数据库的错误日志。
告警系统的命令执行模块首先接收到这个 "R01" 查询指令。该子模块负责解析和验证接收到的指令。在验证 "R01" 是一个有效的查询指令后,这个指令会被传递给命令执行模块。命令执行模块会根据预设的处理规则,识别出 "R01" 是一个查询指令,然后开始获取数据库的错误日志。
当错误日志被成功获取后,命令执行模块将这些信息返回给告警通知模块。告警通知模块接收到这个消息后,会通过企业微信将其发送给数据库管理员。
接下来,假设数据库管理员根据错误日志分析出问题的原因是一个大型事务。他们决定发送一个执行指令 "X05",以中断这个大型事务。这个指令同样会被命令执行模块接收和验证,然后被传递给命令执行模块。命令执行模块会根据预设的处理规则,识别出 "X05" 是一个执行指令,并调用预定义的 Shell 脚本来执行中断大型事务的操作。
操作完成后,命令执行模块会将操作结果传递给处理结果反馈给数据库管理员,管理员可以通过这个消息知道他们的指令是否成功执行,以及数据库的当前状态。
在特殊的情况下,如果预设的查询指令和执行指令不能满足管理员的需求,他们可以发送一个自定义指令。这个自定义指令会以同样的方式被命令执行模块接收和验证,然后被传递给命令执行模块。命令执行模块会根据自定义指令执行相应的操作,并将操作结果返回给管理员。
实施例二
本实施例与实施例一的区别在于,本实施例信息采集模块还包括:采集频率管理子模块,通过配置文件,对不同业务设置不同的采集频率,并通过监控系统负载情况(如CPU使用率、内存交换分区和磁盘IO使用率)来动态调整采集频率,当系统负载超过任何阈值时,降低采集频率;当系统负载恢复正常时,恢复原有的采集频率。
信息采集本身会消耗系统资源,采集频率过高会占用过多的系统资源,对系统造成压力。如果采集频率过低,则无法及时获取系统运行状况信息,可能会延误问题的发现和处理。因此系统通过配置文件,对不同的业务设置不同的采集频率,对于关键业务设置较高的采集频率,而对于不太关键的业务设置较低的采集频率。同时,系统通过监控系统负载情况来动态调整采集频率,保持系统资源的平衡。根据CPU使用率、内存交换分区与磁盘IO使用率三项指标,分别设置负载阈值,当系统负载超过任意某项阈值时,降低采集频率;当系统负载恢复正常时,恢复原有的采集频率,保证采集数据的及时性。
在具体实现上,采集频率管理子模块通过读取配置文件,为不同的业务设置不同的信息采集频率。例如,一些高优先级或者复杂度较高的业务,可能需要更频繁地采集信息以保证系统的稳定性和性能。而对一些低优先级或者复杂度较低的业务,可能就不需要那么频繁地采集信息,这样可以节省系统资源。
然而,仅仅根据业务的类型来设定采集频率可能还不够灵活,因为系统的负载情况可能会随着时间和使用情况的变化而变化。因此,采集频率管理子模块还需要能够根据系统的负载情况来动态调整采集频率。具体来说,它会监控一些关键的系统负载指标,例如CPU使用率、内存交换分区和磁盘IO使用率。当任何一个这些指标超过了设定的阈值,说明系统负载过高,那么它就会降低信息采集的频率,以减轻对系统的压力。相反,当系统负载回到正常范围时,它则会恢复原有的采集频率,以保证系统的性能和响应速度。
例如,假设该系统负责处理一个在线电商网站的数据库,这个数据库包含了大量的商品信息和用户交易记录。在正常情况下,可能每分钟采集一次数据库的状态信息。然而,当进入到年终大促的时候,用户的访问量和交易量可能会大幅度增加,这时系统的CPU使用率和磁盘IO使用率可能会显著提高。为了避免过度的信息采集影响到系统的正常运行,采集频率管理子模块就会根据这些系统负载指标,自动降低信息采集的频率,例如每5分钟采集一次。当年终大促结束,系统负载恢复正常后,它又会自动恢复到每分钟采集一次的频率。这样,不仅保证了系统在高负载时的稳定运行,也保证了在正常情况下能够及时地检测到任何可能的问题。
实施例三
本实施例与实施例二的区别在于,本实施例还包括:告警系统备份与恢复模块。告警系统备份与恢复模块包含以下子模块:系统备份子模块:负责在两台独立的物理服务器上部署告警系统,创建主告警系统和备份告警系统,并使用keepalived软件监控其存活状态。系统恢复子模块:在主告警系统出现故障时,管理虚拟IP(VIP)以将其漂移到备份服务器,激活备份告警系统,并向管理员发出故障通知。
告警系统承载着数据库监控与告警的任务,但其本身也有出现故障的风险,一旦告警系统出现故障,则会造成监控告警的中断,因此,有必要构建高可用告警系统集群,确保告警系统持续稳定提供服务。
本实施例将告警系统分别部署在两台独立的物理服务器中,使用keepalived软件监控两套系统的存活状态。部署在主服务器上的告警系统简称主告警系统,备服务器上的告警系统简称备告警系统。正常情况下,虚拟IP(VIP)绑定在主服务器,主告警系统正常运行,提供各项功能,备告警系统处于随时待命(standby)的状态。当备告警系统出现故障,keepalived 健康检查失败时,主告警系统向管理员发出“备告警系统出现故障”的通知;当主告警系统出现故障,keepalived健康检查失败时,备告警系统向管理员发出“主告警系统出现故障”的通知,同时VIP漂移到备服务器,备告警系统接管主告警系统的所有功能,包括采集各类信息,发送告警通知,接收处理指令。
首先,系统备份子模块负责在两台独立的物理服务器上部署告警系统,创建主告警系统和备份告警系统。这样做的目的是为了保证当主告警系统出现问题时,备份告警系统可以立即接替,保证告警系统的连续性。为了监控两个系统的运行状态,系统备份子模块会使用keepalived软件。keepalived是一个用于检测和故障转移的软件,可以实时监控主告警系统的运行状态。
接着,系统恢复子模块在主告警系统出现故障时,会启动备份告警系统,并将虚拟IP(VIP)从主服务器漂移到备份服务器。在网络中,VIP是一个可以在多台服务器之间漂移的IP地址,它通常会被分配给正在运行的主服务器。当主服务器出现故障时,VIP会被移动到备份服务器,这样,所有发送到VIP的请求都会被转发到备份服务器,实现无缝的故障转移。同时,系统恢复子模块还会向管理员发出故障通知,让管理员知道主告警系统已经出现故障,并已经切换到备份告警系统。
以一个具体的应用场景来说明,假设在一个电商平台的数据库告警系统中,主告警系统和备份告警系统分别部署在两台物理服务器上。在正常情况下,主告警系统负责处理所有的告警任务,而备份告警系统则待命。如果由于硬件故障或者其他原因,主告警系统突然停止运行,keepalived软件会立即检测到这个情况,并启动系统恢复子模块。系统恢复子模块首先会将VIP从主服务器移动到备份服务器,然后启动备份告警系统,并向管理员发送故障通知。这样,尽管主告警系统出现了故障,但是由于备份告警系统的存在,整个数据库告警系统仍能正常运行,不会影响到电商平台的正常运营。
实施例四
本实施例与实施例一的区别在于,本实施例还包括:执行锁定模块。
执行锁定模块的主要职责是用于管理和控制对同一数据库告警的并发访问。它将对每个数据库的告警维护一个状态标识,该标识将在一名管理员开始处理告警时设置,并在处理完成后清除。该模块的工作流程如下:
数据库管理员发送执行指令:当数据库管理员发送执行指令或自定义指令后,该指令首先被命令执行模块接收。
命令执行模块解析并验证指令:命令执行模块将解析并验证接收到的指令,确认其有效性。
检查执行锁定模块的状态标识:如果指令通过验证,命令执行模块将检查执行锁定模块的状态标识。如果标识表明该数据库的告警正在被处理,命令执行模块将直接返回一个反馈消息"该数据库告警正在处理中,请勿重复执行"。
指令传递给命令执行模块:如果状态标识没有被设置(即,没有其他管理员正在处理该告警),执行锁定模块将设置该标识,并允许命令执行模块将指令传递给命令执行模块。
命令执行模块执行指令:命令执行模块将根据接收到的指令执行相应的操作。
清除状态标识:操作完成后,执行锁定模块将清除对应的状态标识,允许其他管理员处理该数据库的告警。
本实施例中的基于企业微信的交互式数据库告警与故障处理系统的告警处理流程如图1所示。
当接收到指令消息时,执行以下步骤来处理:
指令格式判定:首先,对收到的指令进行格式判定。若指令格式有误,则不执行任何操作,仅返回结果:"指令格式有误,请检查指令输入格式"。
数据库状态判定:若指令格式正确,进行下一步的数据库状态判定。如果数据库未发生告警,则不执行任何操作,仅返回结果:"该数据库当前状态正常,无需执行相关操作"。
告警状态判定:若数据库处于告警状态,继续下一步判定;否则,结束处理。
操作对象限定: 此阶段确认只有告警状态的数据库可被操作,以防止误操作影响正常数据库。
操作执行:
对于查询指令:根据指令的处理策略,获取数据库的特定现场信息。这些信息是根据之前所述的定期信息采集机制获取的,包括运行状况和资源使用信息。然后将这些信息返回给企业微信。
对于执行指令:根据指令的处理策略,调用相应的 shell 脚本来执行特定的处理操作。执行完成后,将执行结果返回。
对于自定义指令:根据指令的处理策略,获取具体的命令,并调用数据库客户端执行该命令。执行完成后,将执行结果返回。
若指令无对应的处理策略,且不属于自定义执行,不进行任何操作,仅返回结果:"未找到所需执行的操作,请检查输入的指令"。
并发操作限制:针对执行指令和自定义指令,考虑数据库管理员的并发操作。只允许一名数据库管理员处理同一套数据库的告警。当某数据库管理员已发送执行命令后,其他管理员无法再执行"执行"操作。若告警系统接收到其他管理员对同一套数据库发出的执行命令,不执行任何操作,仅返回结果:"该数据库告警正在处理中,请勿重复执行"。
告警解除通知:当数据库指标恢复正常后,告警系统发送告警解除的通知,通知数据库管理员已解除告警状态,恢复正常。
例如:假设数据库管理员A收到了一个告警,提示某个数据库的CPU使用率过高。管理员A决定查询操作系统的CPU使用情况,以确定是不是整个系统的资源都在紧张使用。他在企业微信中输入了一个查询指令:R09。
告警系统接收到这个指令后,首先进行指令格式判定。由于指令格式正确,系统进一步对数据库状态进行判定。系统确认这个数据库存在告警,于是对告警状态进行判定,并且确认只有处于告警状态的数据库可被操作。然后,系统根据管理员A的查询指令,获取操作系统的CPU使用情况,然后将这些信息返回给管理员A。
在查看了操作系统的CPU使用情况后,管理员A发现整个系统的资源并不紧张,问题可能出在数据库的某些长时间未活动的连接上。因此,管理员A决定中断这些连接以释放资源。他在企业微信中输入了一个执行指令:X02。
告警系统接收到这个指令后,同样会先做指令格式判定和数据库状态判定。由于指令格式正确且数据库处于告警状态,系统根据管理员A的执行指令,调用一个预先定义好的脚本来中断长时间未活动的连接。这个过程可能会持续几分钟,期间告警系统会向管理员A返回进度信息,让他知道处理过程正在进行中。
与此同时,另一个数据库管理员B也注意到了这个告警。他想要发送同样的执行指令来处理这个问题。但是告警系统已经接收到了管理员A的指令并正在处理中,所以当管理员B的指令发送过来时,告警系统并不会执行管理员B的指令,而是向他返回一个信息,提示“该数据库告警正在处理中,请勿重复执行”。
几分钟后,管理员A完成了中断长时间未活动连接的操作,数据库的CPU使用率成功下降到了正常的阈值范围内。告警系统检测到这个改变,然后向所有的管理员,包括管理员A和管理员B,发送告警已解除的通知。这个时候,管理员A和管理员B都知道这个问题已经被成功处理,数据库恢复了正常运行。
这个具体的场景展示了如何根据上述的流程以及具体的指令来处理一个实际的数据库告警。这个流程旨在确保同一时间只有一名管理员能处理同一套数据库的告警,避免了因多人同时处理同一问题而可能产生的混乱。同时,它也提供了一种系统化的方式来处理数据库告警,确保了数据库的正常运行。
为进一步增强了数据库告警处理流程的协同性和效率,尤其是在多个管理员共同响应同一告警的场景下。本实施例还提供了以下解决方案,即当系统检测到多个用户试图处理同一个警告时,系统会自动将他们拉到一个讨论组中。特别是当第二位管理员的处理方式与第一位管理员的处理方式不相同时。当系统检测到第二位管理员的处理方式与第一位管理员的处理方式不同时,将自动中止第一位管理员的操作,防止因为处理方式的冲突导致的错误或重复操作。如果处理方式相同,则忽略第二位管理员的处理。
然后,创建一个新的讨论组,并自动将与处理该警告相关的管理员拉入这个讨论组(本实施例中的第一位管理员与第二位管理员)。这样,管理员们就可以在这个平台上进行讨论,协商出对该警告的最佳处理方式。
待管理员们在讨论组中协商确定了最佳的处理方案后,系统将重新启动被中止的操作,并按照新的处理方案执行。这种方式既保证了处理的准确性,又提高了处理的效率,避免了因为处理方式不一致导致的混乱和冲突。
以上的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。

Claims (9)

1.基于企业微信的交互式数据库告警与故障处理系统,其特征在于,该系统包括:
信息采集模块,用于定期监控和采集数据库的运行状况信息以及服务器操作系统资源使用信息,并将这些信息存储到服务器磁盘;
告警通知模块,用于接收来自信息采集模块的信息,当信息显示数据库状态或系统资源使用超出预定阈值时,通过企业微信的API将告警信息发送给数据库管理员;
命令验证模块,接收并验证来自数据库管理员通过企业微信发送的命令,并将验证通过的命令发送给命令执行模块;
命令执行模块,接收来自命令验证模块的命令,根据预设的处理规则进行故障处理,并将处理结果通过企业微信的API反馈给数据库管理员。
2.根据权利要求1所述的交互式数据库告警与故障处理系统,其特征在于,所述信息采集模块还包括:
数据库信息采集子模块,用于定期采集数据库的运行状况信息;
服务器资源信息采集子模块,用于定期采集服务器操作系统资源使用信息;
信息存储子模块,将采集到的信息直接写入服务器磁盘的文本文件中,并对超过一定时间的信息文件进行打包压缩,并设置过期时间,到期后删除。
3.根据权利要求1所述的交互式数据库告警与故障处理系统,其特征在于,所述告警通知模块采用企业微信自建应用:
所述告警通知模块通过corpid与corpsecret获取access_token,然后使用access_token、agentid与touser组成的Webhook地址发送告警消息,实现将告警消息通过自建应用发送给数据库管理员;
其中所述corpid为企业的ID,corpsecret为企业微信自建应用的凭证密钥,agentid为企业微信自建应用的ID,access_token为登录凭证,用来鉴别调用者身份,touser为数据库管理员的企业微信ID。
4.根据权利要求1所述的交互式数据库告警与故障处理系统,其特征在于,所述命令验证模块还包括:
命令接收子模块:通过与企业微信的接口进行通信,获取管理员发送的命令;
命令解析子模块:在接收到命令后,解析命令的内容,提取出命令的格式和目标数据库;
格式验证子模块:验证命令是否符合预定义的格式,如果命令格式有误,命令验证模块会返回错误消息,提示管理员检查输入;
状态验证子模块:用于检查目标数据库的状态;若目标数据库当前处于告警状态,则验证通过,若目标数据库未发生告警,则不执行任何操作;
命令转发子模块:在命令通过格式验证和状态验证后,命令验证模块会将命令转发给命令执行模块进行进一步的处理。
5.根据权利要求2所述的交互式数据库告警与故障处理系统,其特征在于,所述信息采集模块还包括:
采集频率管理子模块:通过配置文件,对不同业务设置不同的采集频率,并通过监控系统负载情况来动态调整采集频率。
6.根据权利要求1所述的交互式数据库告警与故障处理系统,其特征在于,该系统还包括:告警系统备份与恢复模块,所述告警系统备份与恢复模块包含以下子模块:
系统备份子模块:负责在两台独立的物理服务器上部署告警系统,创建主告警系统和备份告警系统,并使用keepalived软件监控其存活状态;
系统恢复子模块:在主告警系统出现故障时,管理虚拟IP以将其转移到备份服务器,激活备份告警系统,并向管理员发出故障通知。
7.根据权利要求4所述的交互式数据库告警与故障处理系统,其特征在于,所述预定义的格式为:查询指令以字母R加数字表示,所述执行指令以字母X加数字表示。
8.根据权利要求5所述的交互式数据库告警与故障处理系统,其特征在于,所述预设的处理规则包括:
查询指令处理:如果命令是查询指令,命令执行模块会获取指定的现场信息;
执行指令处理:如果命令是执行指令,命令执行模块会调用预定义的 shell 脚本来执行指定的操作;
自定义指令处理:如果命令是自定义指令,命令执行模块会根据管理员输入的具体命令执行相应操作。
9.根据权利要求1所述的交互式数据库告警与故障处理系统,其特征在于,该系统还包括执行锁定模块,所述执行锁定模块用于管理和控制对同一数据库告警的并发访问。
CN202311505557.6A 2023-11-13 2023-11-13 基于企业微信的交互式数据库告警与故障处理系统 Pending CN117539843A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311505557.6A CN117539843A (zh) 2023-11-13 2023-11-13 基于企业微信的交互式数据库告警与故障处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311505557.6A CN117539843A (zh) 2023-11-13 2023-11-13 基于企业微信的交互式数据库告警与故障处理系统

Publications (1)

Publication Number Publication Date
CN117539843A true CN117539843A (zh) 2024-02-09

Family

ID=89781879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311505557.6A Pending CN117539843A (zh) 2023-11-13 2023-11-13 基于企业微信的交互式数据库告警与故障处理系统

Country Status (1)

Country Link
CN (1) CN117539843A (zh)

Similar Documents

Publication Publication Date Title
US11611537B1 (en) Autonomous agent messaging
CN116302719B (zh) 用于启用高可用性受管理故障转移服务的系统和方法
CN109495308B (zh) 一种基于管理信息系统的自动化运维系统
US8799906B2 (en) Processing a batched unit of work
CN108600029A (zh) 一种配置文件更新方法、装置、终端设备及存储介质
CN108076098A (zh) 一种业务处理方法及系统
US20030212738A1 (en) Remote services system message system to support redundancy of data flow
US11741075B2 (en) Methods and system of tracking transactions for distributed ledger
US10505881B2 (en) Generating message envelopes for heterogeneous events
CN111698126B (zh) 信息监控方法、系统及计算机可读存储介质
KR101416280B1 (ko) 이벤트 처리 시스템 및 방법
CN115118705B (zh) 一种基于微服务的工业边缘管控平台
CN111338893A (zh) 进程日志处理方法、装置、计算机设备以及存储介质
CN111858007A (zh) 一种基于消息中间件的任务调度方法方法和装置
WO2014152076A1 (en) Retry and snapshot enabled cross-platform synchronized communication queue
CN108521342B (zh) 一种集群的管理方法及装置
CN113672452A (zh) 一种数据采集任务的运行监控方法、系统
CN117294763A (zh) 基于代理服务的终端请求信息转发的云桌面终端管理方法
KR101301447B1 (ko) 독립적인 메시지 저장소 및 메시지 전송 에이전트
CN111427704A (zh) 配置指令的远程监控方法、装置、设备及存储介质
CN117539843A (zh) 基于企业微信的交互式数据库告警与故障处理系统
CN113778709B (zh) 接口调用方法、装置、服务器及存储介质
CN103457771B (zh) 一种ha的虚拟机集群的管理方法和设备
US11582345B2 (en) Context data management interface for contact center
CN112866359B (zh) 数据上链方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination