这一年一直在为公司开发一个全网的新闻舆情爬虫,随着开发的逐步推动,一个高效直观的监控系统便提上了日程,当时运维小姐姐使用Flask开发了一套监控系统,基于数据库中每时每刻保存的爬虫结果来展示监控的数据。每隔一段时间进行爬虫抓取数量的汇报。git
可是逐渐的这套监控的弊端展示了出来。github
首先,不够实时,我不能实时的知道程序是否发生了异常,是否爬虫调度出现问题。docker
其次,数据不够直观,几千个网站的抓取监控,在眼花缭乱的数据中,很难知道是否发生了异常。数据库
可是运维小姐姐还有不少更重要的任务,因而进一步监控的计划也就没有继续下去,这期间我一直是本身看日志来查找错误。后端
好在及时遇到了Grafana+Influxdb这一套高效酷炫,开箱即用的监控系统。bash
InfluxDB是一个由InfluxData开发的开源时序型数据库。它基于Golang开发,着力于高性能地查询与存储时序型数据。InfluxDB被普遍应用于存储系统的监控数据,IoT行业的实时数据等场景。服务器
Github: github.com/influxdata/…运维
官网: www.influxdata.com/products/in…函数
基本上InfluxDB的查询于其余的关系型数据库很相似,很是容易上手。工具
Github: github.com/grafana/gra…
固然安装部署也很是方便,直接按照文档我也没有遇到什么问题。
可是在这里我使用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中的设置和功能很是多,本篇文章只是一个简单的指导。若是你想要邮件提醒之类的功能,就本身研究吧,哈哈哈哈。
部署这个监控系统不久,立刻就派上了用场,就在写文章的时候。
立刻上线解决了问题。看来一个好用的监控系统实在是太有必要了。