写一个合适的监控运维系统-02-技术方案

前端解决方案

直接采用我已经用了很久的模板, 模板使用angularjs, 通过数据绑定, 可以轻易的通过修改数据, 直接修改到展示的UI.

### 前后端通信WebSocket
为了保证数据的实时性, 我们直接使用websocket, 因为这是内部系统, 我们不需要考虑浏览器的兼容问题。

后端框架tornado

首先tornado直接支持websocket,完全满足了我对通信的需求, tornado使用的是事件驱动模型, 并且暴露了ioloop消息循环, 我们可以自由监听handler, 然后获取handler的消息, 并回调。tornado用的是epoll的消息机制, 效率非常高.(我们用了zmq, 可以直接监听zmq的handler, 这点给我们写异步代码, 带来了很大的便利)

技术架构

后端使用多线程的架构, 主要分为三个模块, 对用户的websocket, 服务器检测的zabbix, 应用检测的zlogger模块.
1. websocket 实时连接用户浏览器, 推送最新数据
2. zabbix 第三方的服务器检测程序, 我们通过api调用, 以轮询的方式获取最新的数据
3. zlogger 我们的日志收集平台, 各个应用会实时上报当前运行状态, 我们通过log的分析, 监测服务的运行状态.

架构图

每个模块一个线程, 线程与线程之间通过zmq进行通讯

总结

监控模块, 使用的这个方案基本上能解决需要监控的数据点.

欢迎大家订阅雀观代码, 我将给你讲述, 中小企业程序员, 淘金路上的故事.



发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注