监控系统杂谈
最近需要做一个监控项目,最终要达到的目的是实现对公司整个业务系统健康状况的实时监控。在出现问题的时候,通过这套系统可以快速准确的定位到问题的所在并通知到相关人员去解决问题。同时需要给领导有一个简洁直观的显示见面好让他掌控全局…在此记录一下整个调研过程。
开源监控系统
首先想到的当然是看看有没有现成的开源的(:。这里有一篇文章讲的很好,著名的开源监控“五大郎”。现在公司已经在用的监控系统,但是目前自己的定制化做的不太好,所以想基于现有的zabbix的数据以及一些自己push的业务数据,用小米的open-falcon框架以及一些前端控件来做。
Zabbix
.NET使用Zabbix Api,Zabbix.NET。其实很简单,用到了.NET提供的动态类型ExpandoObject。需要注意的是,对于加了basic认证的Zabbix server如果用于basic认证的用户名密码和使用Zabbix Api的用户名密码不一样的情况,Zabbix.NET的作者没有考虑到…可以自行下载代码加一个构造函数就好了.12345678public Zabbix(string user, string password, string zabbixURL, bool basicAuth, string basicAuthUser, string basicAuthPassword){this.user = user;this.password = password;this.zabbixURL = zabbixURL;basicAuth) this.basicAuth = System.Convert.ToBase64String(System .Encoding.GetEncoding("ISO-8859-1").GetBytes(basicAuthUser + ":" + basicAuthPassword));(auth = null;}open-falcon
Push数据的接口比较简单,直接组装它需要的json数据Post过去就好。
涉及到的一些技术
- Redis
这个就不用说了,自行百度吧。 - Elastic Search
主要用来做应用配置等数据的存储搜索以及快速查询。 - RabbitMqQueue
RabbitMQ是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由、缓存、持久化消息。 - JSON-RPC
- Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB(open-falcon)作为数据源。 - jTopo
jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系、拓扑图形化界面开发工具包。 - d3.js
D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象,说简单一点,其实就是一个 JavaScript 的函数库,使用它主要是用来做数据可视化的。如果你不知道什么是 JavaScript ,请先学习一点 JavaScript 的基础知识。 - Lepus 天兔
开源的、高效的企业级生产数据库监控系统。 - Kafka
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 对于kafka的监控目前网上有很多方案,个人觉得可定制化比较高的方式是用jmxtrans。
目前项目还处于初步开发阶段,就先记录到这吧。