文档章节

监控报警系统搭建及二次开发经验

luoxiaojun1992
 luoxiaojun1992
发布于 2016/12/11 22:59
字数 1221
阅读 1283
收藏 47

本次分享的内容是监控报警系统搭建,以及基于开源组件的二次开发。自从接受了公司监控报警系统二期开发需求以来,我们完成了监控数据的补全完善、报警系统搭建调试和报警规则配置界面的开发。下图是监控报警系统的架构图,除了业务数据收集器外,其余全部基于原生开源组件或二次开发完成,整个系统采用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开源架构上,结合我们自身业务特点和需求,研发了一整套包含数据采集格式化、可视化监控、自动化报警功能的监控报警系统,今后还将不断调整优化,更好地为公司业务发展和技术研发团队服务。

© 著作权归作者所有

共有 人打赏支持
luoxiaojun1992
粉丝 10
博文 12
码字总数 7835
作品 0
后端工程师
私信 提问
加载中

评论(2)

kbooler
kbooler
关于监控二次开发项目,可否进一步聊?私信留联系方式给我。
如何基于GPS定位系统平台来快速做一些定制二次开发,实现更多位置行业的应用呢

二次开发 主要是节省时间和精力,避免重复造轮子的状况!大家做过二次开发的工程师都知道,一套专为二次开发而设计的系统是很难得,因为需要考虑更多的通用性,共通性,很好的解耦性!模块和...

太阳北斗
08/27
0
0
京东MySQL监控之Zabbix优化、自动化

随着京东业务的飞速发展, MySQL数据库的使用更加普及、服务器量级飞速增长,这对京东MySQL DBA团队的要求也越来越高。监控系统为数据库管理和维护提供了精确的数据依据,是数据库运维人员的...

lover007
2016/08/02
0
0
七年磨一剑:如何像MIUI一样做Zabbix二次开发?

本文根据DBAplus社群第132期线上分享整理而成。 主题大纲: 1、为什么选择Zabbix? 2、Zabbix二次开发有什么意义? 3、我们是怎么做的? 4、我们还利用Zabbix解决了什么问题? 5、我们将来要...

丁振兴
01/11
0
0
组态软件在电动汽车充电站监控系统中的应用

一、概述 电动汽车充电站是电动汽车使用过程的一个支撑部分,也是电动汽车商业化、产业化过程中的重要环节。充电站工作的性能直接影响动力电池的使用寿命和安全性,建立一套充电站监控系统,...

yidongkaifa
2015/08/31
69
0
四维一体组态软件

QTouch2.2通用版软件集成了:设备通信、图形显示、数据转换、逻辑处理等功能,提供二次开发的自动化软件。其功能强大,协议丰富,简单易用。 该产品主要应用在开关站后台监控系统、智能变电站...

gao_sitc
2017/02/03
254
0

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
3分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
5分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
5分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
9分钟前
1
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部