社区编辑申请
注册/登录
监控报警系统搭建及二次开发经验
开发 前端
本次分享的内容是监控报警系统搭建,以及基于开源组件的二次开发。自从接受了公司监控报警系统二期开发需求以来,我们完成了监控数据的补全完善、报警系统搭建调试和报警规则配置界面的开发。

本次分享的内容是监控报警系统搭建,以及基于开源组件的二次开发。自从接受了公司监控报警系统二期开发需求以来,我们完成了监控数据的补全完善、报警系统搭建调试和报警规则配置界面的开发。下图是监控报警系统的架构图,除了业务数据收集器外,其余全部基于原生开源组件或二次开发完成,整个系统采用TICK(telegraf + influxdb + chronograf + kapacitor)架构,使用go语言实现。

输入图片说明

  • influxdb时间序列数据库

influxdb数据库是一个时间序列数据库,他会为每行数据打上时间戳,即使数据被并发写入,也会按照时间先后顺序存储。同时它也是一个关系型数据库,可以通过sql语言进行增删改查,学习成本低。官方提供了一个简单实用的web界面,非常地人性化。在工程实践中,我们发现了它的一个坑,在大数据量查询时会crash,重启后才能恢复,这个问题仍待研究。不必担心的是,因为监控系统中不存在特别大数据量的查询,生产环境下influxdb的性能表现十分良好。

  • telegraf数据收集器

telegraf是一个数据收集器,负责收集所有的原始数据,格式化后存入influxdb。telegraf内置了大量的数据输入、输出和分析插件,能够收集php-fpm、nginx、access log、mysql、redis等组件的监控数据。telegraf的扩展性很强,开源社区也十分活跃,来自世界各地的开发者们会源源不断地贡献新的插件。我们基于它的插件架构开发了redis queue input plugin和access log parser plugin,用于收集和分析Laravel框架队列和access log数据。

  • collector业务数据收集器

collector是整个系统中唯一自研的组件。由于业务监控数据查询规则复杂多变,我们开发了这个组件,用于从MySQL中查询业务数据,支持配置sql语句、收集频率、时间延迟等,并且按照influxdb的格式发送给telegraf数据收集器。

  • kapacitor报警器

kapacitor是一个可以按照预先编写好的规则,实时地订阅influxdb数据或者批量查询数据,并进行报警(邮件、短信、日志、exec等方式)的工具。官方为它设计了一个tickscript语言,可以方便地编写规则脚本。我们的主要工作是tickscript的学习调试、报警规则的设计、报警周期(every字段)的调整和数据窗口(period字段)的调整。我们将报警脚本的修改重启、报警脚本运行状态的查询和influxdb数据订阅状态的查询等命令编写成了shell脚本,便于后期维护和自动化。

  • grafana数据可视化界面

输入图片说明

grafana是一个数据可视化的组件,类似著名ELK架构中的kibana组件,支持多种数据源(influxdb、zabbix、elasticsearch等),还有很多插件可供安装,在***版本中加入了简单的alert、电视模式等新功能。特别需要分享的是某些监控数据是随时间不断累加的,在展示时要应用聚合函数(difference、max、min等)进行处理。同时还可以为单个图表配置超链接,增强交互性和可用性。还有很多有趣的功能,留待大家研究发现。

  • chronograf可视化界面

输入图片说明

chronograf是influxdata官方提供的一个数据可视化组件,可视化功能不如grafana强大,亮点是附带了kapacitor组件的web界面,可以方便地配置报警规则,自动生成并启用tickscript,还可以查询报警历史。我们对它进行了修改,美化了报警邮件的模板,增加了报警周期(every字段)和报警时间段的配置,让邮件内容更加友好,并且可以自由调整报警周期。

综上,我们在TICK开源架构上,结合我们自身业务特点和需求,研发了一整套包含数据采集格式化、可视化监控、自动化报警功能的监控报警系统,今后还将不断调整优化,更好地为公司业务发展和技术研发团队服务。

责任编辑:张燕妮 来源: 开源中国社区
相关推荐

2022-04-11 11:38:44

Python代码游戏

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

2022-04-14 10:10:59

Nginx开源Linux

2022-05-11 15:08:52

驱动开发系统移植

2022-03-30 13:56:05

前端监控搭建

2022-04-20 20:28:40

HDF 驱动框架鸿蒙操作系统

2022-05-17 14:03:42

勒索软件远程工作

2022-05-16 10:36:08

GitHub开源项目

2022-04-26 23:42:08

Windows 10微软升级

2022-04-01 15:18:04

HarmonyHDF 驱动鸿蒙

2022-04-06 13:55:22

DockerLinux

2022-04-26 07:49:23

Nagios开源监控

2022-04-20 22:04:58

物联网安全勒索软件网络攻击

2022-04-15 08:00:00

FUSE开发Android

2022-04-07 15:28:16

HarmonyOS鸿蒙操作系统

2022-04-15 09:23:29

Kubernetes面试题

2022-05-11 08:23:54

自动化测试软件测试

2022-05-17 11:46:48

高并发服务数据库

2022-04-02 14:43:59

Promethues监控

2022-05-10 14:11:55

人工智能金融科技机器学习

同话题下的热门内容

有人问,如何找到适合的Python库?提升Java字符串编码解码性能的技巧前端性能优化实战把反射用到出神入化JavaScript 代码越来越难读了 ...JavaScript 中 Fetch 是如何工作的ThreadLocal夺命11连问API类型和集成规范指南

编辑推荐

太厉害了,终于有人能把TCP/IP协议讲的明明白白了!牛人5次面试腾讯不成功的经验HBase原理–所有Region切分的细节都在这里了Javascript如何监听页面刷新和关闭事件如何搭建一个HTTPS服务端
我收藏的内容
点赞
收藏

51CTO技术栈公众号