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

本次分享的内容是监控报警系统搭建,以及基于开源组件的二次开发。自从接受了公司监控报警系统二期开发需求以来,我们完成了监控数据的补全完善、报警系统搭建调试和报警规则配置界面的开发。下图是监控报警系统的架构图,除了业务数据收集器外,其余全部基于原生开源组件或二次开发完成,整个系统采用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

来源:51CTO

时间: 2025-01-01 16:21:15

监控报警系统搭建及二次开发经验的相关文章

nagios监控环境搭建

    nagios监控环境搭建   1.目录 2. 相关环境 jk1 192.168.199.110 CentOS 6.5 x86_64 jk2 192.168.199.184 CentOS 6.5 x86_64  nagios 4.0.8  lnamp环境  3. 部署规划 Nagios主节点需要安装: nagios  nagios-plugin  nrpe  php  apache  Nagios从节点需要安装: nagios-plugin  nrpe  安装路径规划 项 值 nagios

hadoop +hbase +zookeeper 完全分布搭建 (版本二

这里有几个主要关系: 1.经过Map.Reduce运算后产生的结果看上去是被写入到HBase了,但是其实HBase中HLog和StoreFile中的文件在进行flush to disk操作时,这两个文件存储到了HDFS的DataNode中,HDFS才是永久存储. 2.ZooKeeper跟Hadoop Core.HBase有什么关系呢?ZooKeeper都提供了哪些服务呢?主要有:管理Hadoop集群中的NameNode,HBase中HBaseMaster的选举,Servers之间状态同步等.具体

【物联网】QCA4010开发环境搭建(二)(解决WIN10下不能驱动问题)

更多资料,请参考:中电港论坛 http://bbs.cecport.com/forum.php?mod=forumdisplay&fid=64&page=1 感谢中电港,低价QCA4010开发板入手,终于腾出时间来研究一下这个高大上的开发板 4010与4004一样,内部集成了Tensilica Xtensa处理器,主频可达130MHz.Xtensa处理器是Tensilica公司推出的一个可自由装组.可弹性扩张,并可以自动合成的处理器核心,它的指令集构架 (ISA) 拥有专利权,32位处理器

百城公积金年底联网监控 管理条例将二次修订

目前,住建部已经厘定<住房公积金管理条例>修订工作的时间表,要求在2013年6月前全部完成,并上报国务院法制办 .此外,为加强公积金的监管,住建部已经部署相关工作,力争在今年年底完成全国100个主要城市住房公积金账户的联网监控,从而打破住房公积金账户仅由属地政府监管的传统格局. 管理条例将二次修订 1999年4月3日,国务院颁布实施<住房公积金管理条例>. 2002年3月24日,根据国务院决定,条例进行了第一次修订.根据修订后的<住房公积金管理条例>,职工根据一些条件,

OpenRisc入门(8)基于or1200最小sopc系统搭建(二)

QuartuII工程及DE2平台下载 最近在弄openrisc,之前有人在弄,并且写了一篇master thesis,我已经上传了: http://download.csdn.net/detail/rill_zhen/5303401 下面的内容应该就是根据论文中的指导完成的,但是,不是我完成的,所以转载如下: 接上一篇(原创)基于or1200最小sopc系统搭建(一)--搭建及仿真(DE2,DE2-70) 现在构建QuartusII工程. 建个工程目录or1200_sopc_quartus.在其

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

Shinken 是一个用 Python 实现的开源的主机和网络监控框架,并与 Nagios like 兼容,它可以运行在所有支持 Python 程序的操作系统上,比如说 Linux.Unix 和 Windows.Shinken 是 Jean Gabes 为了验证一个新的 Nagios 架构思路而编写,但是这个想法被 Nagios 的作者拒绝后成为了一个独立的网络系统监视软件,并保持了与 Nagios 的兼容. 在这篇教程中,我将会描述如何从源代码编译安装 Shinken 和向监视系统中添加一台

Android高级篇-NDK(Native Development Kit)之坏境搭建【二】

本篇主讲在Windows下进行环境搭建 需要如下组件:       Java JDK       Apache ANT 构建系统       Android SDK       Cygwin       Android NDK       Eclipse IDE 后面会依次介绍组件安装方法. Java JDK组件安装: 这个不多说,会开发的这都必须要会,这里给出地址,大家自行下载安装即可,这个不会大家可以自行百度or Google,挺简单的. 地址:http://www.oracle.com/t

使用shell批量监控磁盘坏块(二)

之前分享了第一篇 使用shell批量监控磁盘坏块(一),今天来简单说说这个需求的实现内容 . 首先主要思路是通过中控的机器来发送监控的细节,然后返回结果. 首先就是我们需要有一个服务器列表,里面会有这些需要的元数据信息. 比如列表如下: 192.127.133.13   某某服务中心主库           jeanron   Primary Linux   Oracle  N    xxx 192.127.133.12   某某服务备库           jeanron  Standby L

小组开发环境搭建(二)

DHCP服务:为了更方便的管理在同一个局域网中开发者的IP地址和服务器的IP地址,最好将服务器安排在一定范围内的静态IP内(比如192.168.0.200以上),将(192.168.0.10-200)范围内为开发机客户端提供动态IP.假设我们的主服务器(192.168.0.200)和辅助开发服务器(192.168.0.201)使用静态IP,同时为网段内提供192.168.0.10-200动态IP分配服务.DHCP服务在2台服务器上都安装,一个做主DHCP服务,用于给子网IP池提供70%的IP,另