当前通过微信公众号开展气象服务是一种非常重要的方式。微信除了作为全民社交APP之外,还有订阅号、服务号、小程序等多种媒体传播方式,公众气象服务已经越来越多的借助微信平台进行二次开发并对外提供服务。今天给大家分享一个针对微信公众号后台数据监控的气象业务系统,该系统功能是实时对微信端展示的气象数据、产品以及服务器进行监控和报警,通过为运维管理员及时发送报警短信的方式,快速定位数据缺失种类并采取及时有效措施,从而解决微信前端数据不正常或者更新不及时问题。
设计方案
1、 设计目标
对气象北京的微信公众号相关数据流程进行监控,确定从数据分发、接收、处理、接口调用等各个环节的数据状态和程序状态,提供关于数据状态和程序状态的显示,对异常状态进行报警。从而快速发现、定位和解决流程中的问题。
2、 设计原则
标准化:本系统采用的技术架构均遵循网络协议和传输标准的要求,相关开源及原创技术均符合国际技术组织条款规范。
可扩展性:由于数据的种类会不断发展,使用人数将也将扩大,只要横向扩展增加服务器台数,不用添加其它附加设备,以保证用户的原投资被利用。
可用性和可靠性:选用NGIX作为负载均衡器,采用了Tomcat作为Web应用容器,操作系统采用CenOS7.5,从而减少了其它因素造成的故障。
易用性:该系统使用界面良好,用户无需安装客户端软件,只需通过浏览器就可进行实时操作,同时系统架构设计优良,可以很方便进行系统升级。
实时性:该系统支持负载均衡技术,及时响应多人实时并发操作。
高效性:采用消息中间件等技术,实时监控能快速显示。
正确性:数据的处理状态等能正确的采集、显示。
功能设计
气象北京微信后台数据的监控系统分为两部分功能:第一是各个系统日志的采集和存取;第二是各种异常情况的判断,以及对监控结果的展示和通知。如图所示:
流程设计
(1)通过采集程序获取日志文件的更新内容,将日志存储在influxdb中。
(2)客户端通过Web应用服务器,查询来自于influexdb中的日志信息,判断出问题的时间。
日志采集与处理
在微信服务器后台部署日志采集程序,按照RESTful方式采集数据接口日志,采用FTP方式传输的文件直接采集FTP的日志文件。通过日志搜索以及返回值类型判断数据总量并定位数据状态,再通过前端显示和报警短信发送完成监控操作。RESTful方式示例:
请求地址:
操作 | Request |
协议 | HTTP |
方式 | RESTtFul |
URL全路径(将数据存入ElastSearch) |
请求参数:
请求方式 | 必选 | 数据类型 | 长度 | 备注 |
json | Y | JSONObject | ∞ | Body请求 |
返回数据:
序号 | 返回值 | 中文名 | 备注 |
1 | status | 请求状态码 | 0请求成功,1 请求失败 |
2 | Msg | 信息 | success 请求成功,lose 请求失败 |
搜索日志操作
请求地址:
操作 | Request |
协议 | HTTP |
方式 | Post |
URL全路径(查询该时间段内的所有日志) | http://10.0.0.1:8888/es/queryEsFileNameTrue?startTime=YYYY-MM-ddHH:mm&endTime=YYYY-MM-dd HH:mm |
URL全路径(查询该时间段内该系统的所有日志) | http://10.0.0.1:8888/es/queryEsFileNameTrue?startTime=YYYY-MM-ddHH:mm&endTime=YYYY-MM-dd HH:mm&types=XXXXXX |
URL全路径(查询该时间段内该系统内该资料类型下的所有日志) | http://10.0.0.1:8888/es/queryEsFileNameTrue?startTime=YYYY-MM-ddHH:mm&endTime=YYYY-MM-dd HH:mm&types=XXXXXX&dataType=XXXXXX |
请求参数:
序号 | 参数名 | 中文名称 | 必选 | 数据类型 | 长度 | 备注 |
1 | startTime | 第一个参数 | Y | String | 15 | YYYY-MM-dd HH:mm |
2 | endTime | 第二个参数 | Y | String | 15 | YYYY-MM-dd HH:mm |
3 | types | 第三个参数 | N | String | 系统标识 | |
4 | dataType | 第四个参数 | N | String | 资料编码 |
返回数据:
序号 | 返回值 | 中文名 | 备注 |
1 | status | 请求状态码 | 0请求成功,1 请求失败 |
2 | Msg | 信息 | success 请求成功,lose 请求失败 |
3 | Data | 数据 | Json |
请求示例(查询该时间段内的类型总数):
http://10.0.0.1:8888/es/queryEsFileNameTrue?startTime=2017-12-0500:00&endTime=2018-12-05 23:59
请求示例(查询该时间段内该系统的类型总数):
Http://10.0.0.1:8888/es/queryEsFileNameTrue?types=CCCC.SYSTEM.DATA.DATAFLOW&startTime=2017-12-0500:00&endTime=2018-12-05 23:59
请求示例(查询该时间段内该系统内该资料类型下的类型总数):
Http://10.224.96.133:8888/es/queryEsFileNameTrue?types=CCCC.SYSTEM.DATA.DATAFLOW&dataType=E.0015.0001.S002&startTime=2017-12-05 00:00&endTime=2018-12-05 23:59
监控展示页面设计与实现
报警短信设计与实现
结语
目前该系统已上线一年的时间,运行平稳,报警及时,当数据缺失或者没有及时更新时会发送报警短信,运维保障人员接收到短信后第一时间进行处理,从而保证气象服务质量,同时也让微信端的监控实现自动化,节省了人力成本。