摘" 要:为更好地自动化监测黔西南州气象局至省局以及黔西南州气象局至州内各县(市)局网络实时通信状态,在对比传统网络监测方法基础上,基于局域网采用网络通断监测命令,利用Python语言和相关工具包设计开发了黔西南州气象网络监测报警一体化系统。实验结果表明,该系统可自动实时监测州局至省局以及州局至各县(市)局网络通信状态,并将网络通信状态保存至该地,以便查阅;当网络通信有故障时,系统自动将报警信息以微信方式发送至工作群及分管领导,以便业务人员及时进行运维,可有力保障气象数据传输,为气象服务提供有力支撑,助力气象高质量发展。
关键词:通信状态;Python语言;实时监测;运维
中图分类号:TP311.5;TP274 文献标识码:A 文章编号:2096-4706(2024)19-0057-05
Research on Integrated Monitoring and Alarm of Meteorological Networks in Qianxinan Prefecture
LYU Jing, ZHANG Hui, KONG Dexuan, YANG Li, ZHANG Xiaobo
(Meteorological Bureau of Qianxinan Buyi and Miao Autonomous Prefecture in Guizhou Province, Xingyi" 562400, China)
Abstract: In order to better automatically monitor the real-time network communication status from the meteorological bureau of Qianxinan Prefecture to the provincial bureau and from the meteorological bureau of Qianxinan Prefecture to the bureaus of each county (city) in the prefecture, based on the comparison of traditional network monitoring methods, this paper uses network on/off monitoring commands based on LAN, and uses Python language and related toolkits to design and develop meteorological network monitoring and alarm integrated system in Qianxinan Prefecture. The experimental results show that the system can automatically monitor the network communication status from the prefecture bureau to the provincial bureau and from the prefecture bureau to each county (city) bureau in real time, and save the network communication status locally for easy reference. When there is a network communication failure, the system automatically sends alarm information to the work group and responsible leaders through WeChat, so that business personnel can carry out timely operation and maintenance, effectively ensuring the transmission of meteorological data, providing strong support for meteorological services, and promoting high-quality development of meteorology.
Keywords: communication status; Python language; real-time monitoring; operation and maintenance
0" 引" 言
网络拥堵、网络延迟、病毒攻击和设备故障等因素对网络通信构成潜在威胁,及时发现和解决网络通信故障,提升气象部门数据传输的稳定性和可靠性显得尤为重要[1]。当前,监测网络传输通断的方法主要可以分为两大类:物理层面的监测和软件层面的监测。
物理层面的监测主要包括使用专业的网络测试设备,如网络测试仪、寻线仪等。这些设备可以直接测试网线的物理连接状态,判断网线是否接通[2]。物理层面的监测虽然可以直观地测试网络连接状态,但其监测依赖专业设备,且无法进行实时监控,对于需要实时监控的网络环境,物理层面的监测则无法满足需求。
软件层面的监测则主要通过各种网络命令和网络工具来实现。Traceroute命令可以跟踪数据包在网络中的路径,监测数据包在途中是否遇到问题,从而判断网络的连通性和稳定性。ethtool工具可以用来监测网络接口的连接状态、连接速度等信息,从而判断网络接口的连通性[3]。此外,Zabbix、Nagios等网络工具可以提供带宽、时延、丢包率等更为详细的网络性能和连通性信息[4]。然而,软件层面的监测方法需要一定的网络知识和技术,用户需要了解各种网络命令和工具的使用方法,且依赖手工测试,不能对故障网络进行实时反馈。
气象部门是关乎国计民生的重要部门,气象预报准确性影响人们的生产生活[5]。根据《贵州气象高质量发展三年规划(2023—2025年)》文件精神,为提升气象服务质量,贵州省气象局将构建日传输数据量2 TB、省市宽带500M、市县宽带50M的气象数据传输链路[6],如何提供更安全可靠的数据传输网络成为各级气象部门的重要工作。
为了监视黔西南州气象局至省局及各县(市)局网络实时通信状态,本文采用软件层面的ping命令方法,并设计自动报警策略,开发微信自动报警系统,确保网络实时传输的稳定性和可靠性[7]。
1" 设计思路
1.1" 资料选取
目前,黔西南州气象局与省局和州内8个县(市)局分别建有联通和电信两条专线,州局与省局、州局与各县(市)局气象数据通过专线进行传输;网络通信正常时,默认业务数据通过联通专线传输,会商数据通过电信专线传输;当其中一条专线网络通信故障时,联通、电信专线互为备份关系,业务数据和会商数据均可通过同一专线进行传输;当两条专线网络通信均故障时,网络中断,气象数据停止传输[8]。
文章设计的气象网络监测报警一体化系统通过报文应答请求周期性监测州局与省局以及州局与各县(市)的网关通信状态,自动查找掉线线路,从而达到对内部网络连接状态进行实时监控的目的。
1.2" 文件及文件夹创建
本地自动创建“排查记录表”文件夹。程序首次执行后,在本地自动创建“排查记录表”文件夹,用于保存排查记录表格文件;当监测到“排查记录表”文件夹被删除时,系统再次自动创建“排查记录表”文件夹,实现文档创建归档的统一管理,方便用户对排查记录进行查找。
本地自动创建以“当前年月+排查记录表”命名的.xlsx表格。为了记录州局与省局以及州局与各县(市)局网络通信实时状态,系统获取当前年月信息,将排查记录以月份为单位创建排查记录表格,排查记录表格包含“时间”“网关”“状态”“归属地”和“专线”四列。当月份更新时,系统自动创建以新月份命名的排查记录表格。以“当前年月+排查记录表”命名的排查记录表格创建代码如下:
now=datetime.datetime.now()
date_format=%Y-%m
date_value=now.strftime(date_format)
path_xlsx=f./排查记录表/{date_value} 排查记录表.xlsx
check_info_file=path_xlsx
time_point=str(path_xlsx)[8:15]
if not os.path.exists(path_xlsx):
print(f\n表格:{time_point} 排查记录表.xlsx 创建中...)
wb=Workbook()
wb.save(path_xlsx)
ws=wb.active
ws.append([时 间, 网 关, 状 态, 归属地, 专 线])
else:
wb=openpyxl.load_workbook(check_info_file)
ws=wb.active
此外,利用相关代码对表格列宽、字体、加粗、对齐方式等进行设计,不仅改善了排查记录的可视化效果,同时也大大提升了表格的可读性,从而让用户对排查记录更容易理解和分析[9]。
1.3" 监测策略
ping命令工作在TCP/IP网络体系结构中的应用层,用于检查本地主机与远程主机之间的网络连接质量,通过将ICMP(Internet Control Message Protocol)回显请求消息发送到远程主机并等待回显应答来工作。回显请求消息是一个简单的数据包,要求远程主机应答[10]。如果远程主机能够解析并响应ping命令,则说明本地主机与该主机之间的网络连接正常;否则,网络连接中断。
程序执行后,系统周期识别表1中的网关地址,并根据网关地址提取出网关对应的归属地和网关专线,采用ping命令在州局本地向省局和各县(市)局网关发送回显请求消息,每次发送两个请求数据包。执行函数如下:
def ping_gateway(gateway):
response=os.system(fping {gateway} -n 2)
if response== 0:
return True
else:
return False
系统解析响应包含本地主机请求数据包、远程主机接收数据包、丢失率和响应时间等信息。以兴义市局的网关:10.x.x.x为例(已进行加密处理),解析响应如下:
Pinging 10.x.x.x with 32 bytes of data:
Reply from 10.x.x.x: bytes=32 time=5ms TTL=255
Reply from 10.x.x.x: bytes=32 timelt;1ms TTL=255
Ping statistics for 10.x.x.x:
Packets: Sent=2, Received=2, Lost=0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum=0ms, Maximum=5ms, Average=2ms
系统根据省局和各县(市)局能解析并响应回显请求判断州局至省局和州局至各县(市)局的网络连接情况。同时,系统将连接状态保存在本地的排查记录表格中的“时间”“网关”“状态”“归属地”和“专线”对应列中。当省局和各县(市)局不能解析并响应回显请求时,该条网络专线连接故障,系统执行故障报警策略。
1.4" 故障报警策略
从成本角度考虑,系统设计两种报警策略提醒值班员和分管领导,以提醒值班员和领导及时发现并处理故障网络。
策略一:当系统监测到网络连接故障时,将当前连接状态保存在本地记录表格中。为了便于对故障记录进行查找和区分,将该行背景色标红,提高排查和处理故障的效率。同时,将故障记录保存到本地表格中还可以方便后续对故障原因进行分析和总结,以避免类似故障再次发生。故障记录执行程序如下:
def fault_patternFill():
wb=openpyxl.load_workbook(check_info_file)
ws=wb.active
for row in ws.iter_rows():
for cell in row:
if cell.value== 故障:
for c in row:
c.fill=PatternFill(start_color=FF0000, end_color=FF0000, fill_type=solid)
wb.save(check_info_file)
策略二:考虑到实用性和便捷性,系统设计了微信报警小程序。当系统监测到网络连接故障时,系统自动将故障网关地址、网关归属地和网关专线发送至微信工作群和分管领导,并附以时间戳,确保值班员和分管领导能够准确掌握故障发生时间以及网络故障的详细信息,从而迅速采取修复措施,确保网络正常稳定运行。执行程序如下:
def Send_Wechat_Fault_Information(current_time,Wechat_Name, gateway, place, railwayline):
wx=WeChat()
wx.GetSessionList()
msg=f{current_time} {place} {railwayline}专线:{gateway} 处于故障状态!请立即排查!
who=Wechat_Name
wx.ChatWith(who)
wx.SendMsg(msg)
wx.SendMsg(msg)
wx.SendMsg(msg)
Send_Wechat_Fault_Information(current_time, 分管领导, gateway, place, railwayline)
Send_Wechat_Fault_Information(current_time, 工作群, gateway, place, railwayline)
1.5" 终端显示设计
利用pyinstaller将系统程序及其依赖库打包成“气象网络监测报警一体化系统.exe”可执行程序,在使用过程中无须用户安装Python或相关依赖库,这不仅可以提高程序的安全性,还可以简化用户的使用流程,提高使用便利性[11]。程序可执行图如图1所示。
为了让用户更直观了解当前监测信息,根据当前排查进度做出决策部署,系统将排查记文件夹和排查记录表格的检索及创建过程、排查记录写入过程、状态测试过程及报警信息发送过程显示在终端可执行程序中。部分执行代码如下:
print(f \n {place} {railwayline}专线: {gateway} 处于{status}状态!)
print(f {place} {railwayline}专线: {gateway} {status}状态写入记录表...)
save_fault_info(current_time, gateway, status, str(place), str(railwayline))
print(f {place} {railwayline}专线: {gateway} {status}状态写入成功!)
print(f {place} {railwayline}专线: {gateway} {status}状态发送微信...)
Send_Wechat_Fault_Information(current_time, 测试微信, gateway, place, railwayline)
Send_Wechat_Fault_Information(current_time, 测试群, gateway, place, railwayline)
print(f {place} {railwayline}专线: {gateway} {status}状态发送微信成功!)
1.6" 总体设计
系统充分考虑气象网络监测报警一体化系统的有效性和实用性。在文档归档时,以当前月份区分不同的记录表格,并归档在一个文件夹中;在州局本地向省局和各县(市)局发送回显请求命令判断州局至上、下级网络连接情况,网络中断时,系统自动发送报警信息提醒值班员和分管领导;最后,利用pyinstaller将程序打包成EXE可执行程序,并设计显示终端,显示当前监测信息,便于值班员根据当前监测信息做出决策。系统设计网络监测周期为30秒,在保证监测有效性的同时减小内存占用率。系统总体设计框图如图2所示。
2" 实验及测试
2.1" 实验环境
实验环境由硬件环境和软件环境组成。系统测试采用的硬件环境如表1所示。
2.2" 实验过程
2.2.1" 文件及文件夹的创建
程序执行后,系统自动获取当前时间,并在本地自动创建“排查记录表”文件夹和以当前年月命名的排查记录表格。文件和文件夹的检索和创建过程如图3所示。
更改当前系统月份至5月,系统自动创建新月份的排查记录表格。最终,表格“2024-05排查记录表.xlsx”创建在本地“排查记录文件夹”中,用于保存2024年5月份的气象内部网络排查记录。且保留已创建的排查记录表格,如图4所示。
2.2.2" 网络故障测试
为了模拟网络故障,选取1.2.3.4为网络故障测试网关,如图5所示,该网关在Windows的命令窗口检验为故障网关,故可将1.2.3.4设置为故障测试网关。
如表3所示,将故障网关的归属地设置为“故障测试”、专线备注设置为“测试”,并将该网关的信息添加至网关列表。
1.2.3.4 故障测试 测试
将系统时间更改至当前时间。程序执行后,系统自动监测州局至省局、各县(市)局及故障网关的网络连接情况,并将当前监测信息实时显示在EXE窗口。当监测到网关故障时,如图6所示,系统自动将故障信息保存在“2024-04排查记录表.xlsx”表格中,并且将故障所在行的背景色标红,用以区分正常的排查记录。
将故障信息保存后,系统及时发送报警信息至微信工作群和分管领导。其中,故障信息发送过程至微信工作群如图7所示。
经多次测试实验,系统可自动监测州局至省局和各县(市)局的网络情况,并将监测记录自动保存在排查记录表格中;当监测到网络故障时,系统自动发送报警信息至工作群和分管领导。考虑台站业务机系统为Windows 7的情况,将程序在Windows 7环境下进行测试,系统运行稳定,可以放心部署和使用。
3" 结" 论
加强网络的稳定性和可靠性是气象部门的重要工作之一。文章设计的气象网络监测报警一体化系统,可有效监控黔西南州气象局至省局和各县(市)局网络连接状况。当监测到网络故障时,系统将故障记录自动保至本地,并自动启动报警策略将报警信息发送至微信工作群和分管领导,以便及时对故障网络进行处理和维护,从而保障了气象数据的正常传输。目前,该系统已在黔西南州气象局投入运行,成为黔西南州气象部门自动化网络监控支撑系统,助力该州气象高质量发展。
参考文献:
[1] 周琰,马强.欺骗诱捕技术在气象网络安全攻防对抗场景下的应用 [J].气象科技,2023,51(2):208-214.
[2] 杨航,郭乔进,吴其华,等.OpenStack平台拓扑网络流量监控方法研究 [J].信息化研究,2021,47(5):35-40.
[3] 苟亮.低轨卫星在5G网络中的应用 [J].信息化研究,2022,48(4):1-9.
[4] 陈雪,周子腾.基于生成对抗网络的非重复性CT几何伪影去除算法可行性研究 [J].信息化研究,2022,48(6):33-37.
[5] 刘然,王涛,何恒宏.气象宽带网络自动化天地互备系统设计与实现 [J].计算机技术与发展,2022,32(11):88-94.
[6] 袁三明,黄林峰,向淑君,等.贵州省生态环境和交通发展耦合协调研究 [J].中低纬山地气象,2023,47(1):90-95.
[7] 冯慧,李松奎,崇伟,等.气象计量信息编码及数据格式研究与应用 [J].陕西气象,2023(4):51-55.
[8] 郭安红,李森,何亮,等.近十年国家级农业气象灾害预报评估业务技术进展 [J].气象,2021,47(6):693-702.
[9] 彭华明,陶玉棠.用户体验导向下的APP个性化界面设计研究 [J].现代电子技术,2022,45(4):73-77.
[10] 戴杕.论规范性文件实体合法性的司法审查框架 [J].华东政法大学学报,2022,25(1):138-149.
[11] 白永祥,何林,陈逸怀.基于Python的RSA密码算法的设计与实现 [J].电子设计工程,2021,29(16):120-125+130.
作者简介:吕敬(1996—),男,汉族,贵州兴义人,助理工程师,硕士,研究方向:气象信息技术、气象装备保障。
基金项目:黔西南州气象局2024年自立课题(QXNZLKT-2024-007)