快速搭建高效酷炫的监控系统
前言
这一年一直在为公司开发一个全网的新闻舆情爬虫,随着开发的逐步推进,一个高效直观的监控系统便提上了日程,当时运维小姐姐使用Flask开发了一套监控系统,基于数据库中每时每刻保存的爬虫结果来展现监控的数据。每隔一段时间进行爬虫抓取数量的汇报。
但是逐渐的这套监控的弊端展现了出来。
首先,不够实时,我不能实时的知道程序是否发生了异常,是否爬虫调度出现问题。
其次,数据不够直观,几千个网站的抓取监控,在眼花缭乱的数据中,很难知道是否发生了异常。
但是运维小姐姐还有很多更重要的任务,于是进一步监控的计划也就没有继续下去,这期间我一直是自己看日志来查找错误。
好在及时遇到了Grafana+Influxdb这一套高效酷炫,开箱即用的监控系统。
InfluxDB
InfluxDB是一个由InfluxData开发的开源时序型数据库。它基于Golang开发,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
Github: github.com/influxdata/…
官网: www.influxdata.com/products/in…
基本上InfluxDB的查询于其他的关系型数据库很类似,非常容易上手。
Grafana
Grafana 是一个开源的可视化工具,后端也是基于Golang开发,支持非常多的数据源,还有非常多的第三方插件。
文档: grafana.com/docs/
Github: github.com/grafana/gra…
快速部署Grafana+InfluxDB
当然安装部署也非常方便,直接按照文档我也没有遇到什么问题。
但是在这里我使用Docker来部署这样一套监控系统。
我在Github上找到一个非常不错的repo,镜像中作者还加入了Telegraf,这样我们也可以同时监控我们服务器的各种资源与负载了。
github.com/samuelebist…
如果你的服务器上已经安装了Docker,那么直接运行
docker run --ulimit nofile=66000:66000 \
-d \
--name docker-statsd-influxdb-grafana \
-p 3003:3003 \
-p 3004:8888 \
-p 8086:8086 \
-p 8125:8125/udp \
samuelebistoletti/docker-statsd-influxdb-grafana:latest
复制代码
这样你就直接部署好了Grafana+InfluxDB了。
当然你可以直接clone下来,根据Grafana InfluxDB Telegraf的配置来自己build容器。
接着访问对应IP的 3003端口就可以了。
这个镜像中已经创建了使用Telegraf的监控,这里就使用Telegraf的监控数据来作为例子。
左上角加号新建Dashboard
点击Add Query
这里基本上数据可视化的SQL编写,选择cpu的数据,usage_user数据。这时上面的图表就会有图像出现了。
可以在图标上拉大显示范围,也可以通过右上角的时间范围来设置显示的时间范围。
如果想要监控自己的数据,就需要在InfluxDB创建自己的数据库来储存数据了。InfluxDB非常方便的提供HTTP接口来插入数据创建数据库等等等,又有很多Client支持。
在setting中的Data Source中添加新的InfluxDB数据库,然后依然是新建Dashboard。
同样InfluxDB支持很多的数据聚合和函数,包括平均值,最大值,最小值,平均值,还有求和,功能非常多。
在这样一番配置之后,很快你就会拥有一个简单易用酷炫的监控系统了。
Grafana中的设置和功能非常多,本篇文章只是一个简单的指导。如果你想要邮件提醒之类的功能,就自己研究吧,哈哈哈哈。
部署这个监控系统不久,马上就派上了用场,就在写文章的时候。
马上上线解决了问题。看来一个好用的监控系统实在是太有必要了。
转载于//juejin.im/post/5d5f79a45188250dd37b60df
还没有评论,来说两句吧...