本发明涉及计算机网络,尤其涉及一种动态获取nginx流媒体状态信息的方法。
背景技术:
1、在当前的互联网环境下,nginx作为一种高性能的web服务器和反向代理服务器,广泛用于流媒体服务。nginx服务器因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。除此之外,nginx服务器具备以下特点:占有内存少和并发能力强,nginx服务器的并发能力确实在同类型的网页服务器中表现较好。如何做到动态实时的对nginx服务器进行监控和如何实时的对nginx服务器的运行状态进行判断,就成为了业界亟待解决的课题。
2、然而,在传统的nginx配置和监控方法中,获取实时的流媒体状态信息相对困难。现有技术主要依赖于日志分析或第三方监控工具,这些方法存在延迟高、信息不够实时、无法灵活配置等问题。
技术实现思路
1、本发明的目的是为了解决上述现有技术中存在的缺点,而提供了一种动态获取nginx流媒体状态信息的方法,通过引入自定义模块,该模块能够动态获取关键指标,并将这些信息实时记录到状态页,从而实现动态获取nginx流媒体状态信息的目的,包括:
2、自定义实现http-ts协议的监控模块,所述监控模块实时解析协议通信数据,提取关键指标动态记录到状态页;
3、配置所述状态页,在nginx配置文件中设置一个uri,映射到所述监控模块记录的状态信息;
4、使用实时数据分析算法,即时处理拦截的协议数据转化为所述状态信息。
5、进一步地,首先设计所述自定义监控模块,所述监控模块包括状态信息访问模块ngx_http_live_stat_module和状态信息处理模块ngx_http_live_stat_handler;
6、所述状态信息访问模块ngx_http_live_stat_module对nginx服务器状态信息的访问,允许用户通过特定的uri查看这些状态信息;
7、所述状态信息处理模块ngx_http_live_stat_handler放在nginix rewrite阶段执行,不响应用户请求,所述ngx_http_live_stat_handler是一个nginx模块,用于实时监控http请求的状态。
8、其中,配置所述状态信息访问模块ngx_http_live_stat_module,具体包括:
9、在配置文件location里使用配置指令http_live_staton|off,配置开关所述监控模块的功能;
10、使用ngx_command_t及其相关函数解析所述配置指令,使用ngx_http_module_t定义功能函数,创建配置数据并初始化,使用ngx_module_t定义模块;
11、编写config脚本,用--add-module静态连接选项集成进nginx配置文件。
12、优选地,通过定义配置数据结构和管理函数来解析所述配置指令,具体包括:
13、在所述数据结构体里定义enable变量,类型是ngx_flag_t,把所述nginx配置文件内的开/关信息转换为1/0保存。
14、进一步地,通过所述gx_http_live_stat_handler实时解析协议通信数据,提取关键指标动态记录到状态页,具体包括:
15、s11:获取连接对象,通过recv读数据,创建请求对象,开始解析请求行;
16、s12:通过每个请求的ngx_http_request_t结构收集uri,所述uri对应的客户端数量、ip地址、带宽使用,将数据结构化存储在所述状态页中。
17、其中,在recv读数据前,先检查读事件是否超时,若超时,则直接结束该请求;
18、所述recv读数据若发生错误,则直接结束该请求;
19、若recv读不到数据,则加入epoll监控,等待下一次读事件。
20、进一步地,集成所述监控模块时,首先集成配置函数,包括:
21、create函数,在解析所述配置文件location时被调用,创建出配置结构,然后存储在所述配置文件location内存域里;
22、init函数,在所有配置指令解析完毕后被调用,修改ngx_http_core_moudule的阶段数组,注册处理函数;
23、在集成所述配置函数后,集成配置指令。
24、进一步地,所述关键指标包括请求次数、响应时间、错误率、宽带使用和流媒体特定指标,通过解析所述http-ts协议通信数据计算得出。
25、与现有技术相比,本发明的有益效果是:
26、(1)本发明通过http-ts协议监控模块开发,可以根据具体需求灵活配置需要监控的指标,使系统更加适应不同的应用场景;
27、(2)本发明通过在nginx配置文景中设置一个uri映射到协议监控模块,实时获取nginx流媒体服务器的状态信息,包括连接数、带宽使用等;
28、(3)本发明通过高效的实时数据分析算法,状态信息会动态地定期更新,确保用户获取的信息是最新的,提高信息的实时性。
1.一种动态获取nginx流媒体状态信息的方法,其特征在于,包括:
2.根据权利要求1所述的动态获取nginx流媒体状态信息的方法,其特征在于,在步骤s1中,首先设计所述自定义监控模块,所述监控模块包括状态信息访问模块ngx_http_live_stat_module和状态信息处理模块ngx_http_l ive_stat_handler;
3.根据权利要求2所述的动态获取nginx流媒体状态信息的方法,其特征在于,配置所述状态信息访问模块ngx_http_live_stat_module,具体包括:
4.根据权利要求3所述的动态获取nginx流媒体状态信息的方法,其特征在于,通过定义配置数据结构和管理函数来解析所述配置指令,具体包括:
5.根据权利要2所述的动态获取nginx流媒体状态信息的方法,其特征在于,每个请求到达时,通过所述gx_http_live_stat_handler实时解析协议通信数据,提取关键指标动态记录到状态页,具体包括:
6.根据权利要求5所述的动态获取nginx流媒体状态信息的方法,其特征在于,在recv读数据前,先检查读事件是否超时,若超时,则直接结束该请求;
7.根据权利要求2所述的动态获取nginx流媒体状态信息的方法,其特征在于,集成所述监控模块时,首先集成配置函数,包括:
8.根据权利要求1所述的动态获取nginx流媒体状态信息的方法,其特征在于,在步骤s1中,所述关键指标包括请求次数、响应时间、错误率、宽带使用和流媒体特定指标,通过解析所述http-ts协议通信数据计算得出。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一项所述的动态获取nginx流媒体状态信息的方法。
10.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-8中任一项所述的动态获取nginx流媒体状态信息的方法。