前言
这一年一直在为公司开发一个全网的新闻舆情爬虫,随着开发的逐步推进,一个高效直观的监控系统便提上了日程,当时运维小姐姐使用Flask开发了一套监控系统,基于数据库中每时每刻保存的爬虫结果来展现监控的数据。每隔一段时间进行爬虫抓取数量的汇报。
但是逐渐的这套监控的弊端展现了出来。
首先,不够实时,我不能实时的知道程序是否发生了异常,是否爬虫调度出现问题。
其次,数据不够直观,几千个网站的抓取监控,在眼花缭乱的数据中,很难知道是否发生了异常。
但是运维小姐姐还有很多更重要的任务,于是进一步监控的计划也就没有继续下去,这期间我一直是自己看日志来查找错误。
好在及时遇到了Grafana+Influxdb这一套高效酷炫,开箱即用的监控系统。
InfluxDB
InfluxDB是一个由InfluxData开发的开源时序型数据库。它基于Golang开发,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
Github: github.com/influxdata/…
官网: www.influxdata.com/products/in…
基本上InfluxDB的查询于其他的关系型数据库很类似,非常容易上手。
Grafana

Github: github.com/grafana/gra…
快速部署Grafana+InfluxDB
当然安装部署也非常方便,直接按照文档我也没有遇到什么问题。
但是在这里我使用Docker来部署这样一套监控系统。
我在Github上找到一个非常不错的repo,镜像中作者还加入了Telegraf,这样我们也可以同时监控我们服务器的各种资源与负载了。
如果你的服务器上已经安装了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端口就可以了。


左上角加号新建Dashboard

点击Add Query


可以在图标上拉大显示范围,也可以通过右上角的时间范围来设置显示的时间范围。

如果想要监控自己的数据,就需要在InfluxDB创建自己的数据库来储存数据了。InfluxDB非常方便的提供HTTP接口来插入数据创建数据库等等等,又有很多Client支持。


在setting中的Data Source中添加新的InfluxDB数据库,然后依然是新建Dashboard。

同样InfluxDB支持很多的数据聚合和函数,包括平均值,最大值,最小值,平均值,还有求和,功能非常多。
在这样一番配置之后,很快你就会拥有一个简单易用酷炫的监控系统了。

Grafana中的设置和功能非常多,本篇文章只是一个简单的指导。如果你想要邮件提醒之类的功能,就自己研究吧,哈哈哈哈。
部署这个监控系统不久,马上就派上了用场,就在写文章的时候。

马上上线解决了问题。看来一个好用的监控系统实在是太有必要了。