17

爬虫管理平台 Crawlab 专业版新功能介绍: 性能监控

 3 years ago
source link: https://studygolang.com/articles/29592
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

Crawlab 是基于 Golang 的分布式爬虫管理平台,旨在解决大量不同种类的爬虫管理困难的问题。Crawlab 的目标是轻松管理一切爬虫,让爬虫管理变得更简单(Easy Crawling)。自去年(2019年)3月份上线以来,Crawlab 经历了大量的迭代和优化,受到爬虫爱好者们和开发者们的好评。如今在 Github 上已经有 6.4k Star,总用户数接近 7k,成为了 最受欢迎的爬虫管理平台 。经过近数月的迭代,我们陆续上线了定时任务、数据分析、可配置爬虫、SDK、消息通知、Scrapy 支持、Git 同步等功能,将 Crawlab 打造得更加实用,更加全面,能够真正帮助用户解决爬虫管理困难的问题。

Crawlab 专业版

Crawlab 专业版 (Crawlab Pro) 是 针对专业用户以及企业量身打造的 。它的稳定性更高,相较于 Crawlab 社区版功能更强大。专业版在底层特别是数据库层面做了 大量的优化 ,保证爬虫任务能够稳定而高效的运行并抓取数据。此外,专业版相较于社区版有很多 强大的专属功能 ,例如节点、数据库监控功能,SQL 数据库 (MySQL、Postgres) 集成等等。近期我们将上线 Kafka、ElasticSearch 集成的功能,以帮助 Crawlab 用户更好的集成自己的数据系统 (例如数据仓库)。在未来,我们将支持更加高级的可配置爬虫。

为什么会开发专业版产品?其实,最开始我们只是打算商业化来收取一些费用来负担服务器的费用。但是,后来我们突然发现,专业版用户(或企业用户)的反馈意见比社区版用户提出的问题要有价值得多,特别是在企业使用 Crawlab 方面,让我们意识到很多需要解决的真实问题。于是,我们相信收费是一个产品改进的最好途径,因为很少有人会对一个免费产品各种挑剔。 只有付了钱或上了生产环境,用户才会占在提出真正的反馈意见,而且往往都是非常实用而且我们意识不到的问题 。因此,我们会坚持开发 Crawlab 的商业版本,并根据付费用户的反馈意见不断完善产品,让所有人都能轻松管理一切爬虫。

下面,我们将详细介绍 Crawlab 专业版的一个强大而实用的专属功能:性能监控。

性能监控

对于企业级应用来说,特别是分布式应用服务,经常需要监控各个服务器或数据库的性能指标,例如 CPU、内存、磁盘空间以及网络资源。 爬虫管理平台同样不例外,也是需要了解爬虫所在节点的性能状况,以便更合理的分配资源、及时扩容等等 。否则,可能会出现一些意料不到的状况。例如,当分布式爬虫抓取的数据量非常大,占满了磁盘空间,这将导致服务器上的应用崩溃;同样的,如果服务器的 CPU 或内存被占满,将导致服务器无法登录、操作或运行应用等问题。这通常都将是灾难性的,如果数据量比较大、应用服务较多,恢复起来也是个很头疼的问题。

为了解决这个问题,我们在 Crawlab 专业版中加入了节点/数据库性能监控功能,以 帮助用户更方便的时刻掌握自己分布式节点的性能状况,预测好性能瓶颈,好随时扩容或合理分配资源

Crawlab 专业版的监控功能主要包括两个:

  • 监控概览
  • 监控时序图

监控概览

在 Crawlab 专业版首页,我们可以看到 MongoDB 数据库、Redis 数据库、主节点、工作节点的性能数据概览。这些都是及时获取的数据,反应的是当前各个节点数据库的性能状况(如下图)。

5551e7d57e0e5f49f57555e455714647.html

从这个图我们看到,其实主节点(Master)和工作节点(Worker)的负载,例如内存,都已经比较高了,工作节点的 CPU 负载甚至达到了 100%。这时,为了扩展业务,我们可以考虑增加一台服务器来部署 Crawlab 工作节点。

每次登录 Crawlab 专业版,节点数据库性能指标是我们第一个看到的数据,这能帮助我们 时刻了解分布式集群的健康状况,从而避免因资源不够而导致的抓取流程中断

监控时序图

在 “监控” 页面,我们可以看到各个节点、数据库的性能指标时序图(如下图)。监控时序图能帮助我们 了解过去的性能演化情况,通过增长速率预测未来的性能瓶颈,并帮助我们随时采取相应的措施

5551e7d57e0e5f49f57555e455714647.html

从这张图我们看到,节点磁盘空间的增长速度大概是 0.4% 每小时,也就是 9.6% 每天。这是一个非常高的增长速度。也就是说,如果我们不采取任何措施的话,5 天内磁盘空间就会触顶,这将导致节点磁盘空间不足,从而发生宕机的风险。因此,我检查了一下磁盘空间上升的原因,发现 Docker 日志无限制增长导致的。知道了原因就很简单了,我后续限制了 Docker 容器日志大小为 500MB,防止其无限制增长导致磁盘空间占满。

客户案例

我们有一位企业客户,在成功部署了我们的 Crawlab 专业版之后,开始使用很顺利,都能够顺利抓取数据。当时,在这台服务器上部署有:Crawlab 主节点、MongoDB、Redis。后来通过性能监控发现 MongoDB 的数据增长速度很快,内存迅速到达瓶颈。于是,客户决定扩容,我们帮其在新服务器上部署了 Crawlab 工作节点,并通过内网连接到原 MongoDB 和 Redis,成功加入集群。随着客户业务量的增大,同时运行的爬虫数量越来越多,消耗的 CPU、内存、网络带宽资源又逐渐达到瓶颈。我们建议将主节点迁移出来,保证数据与服务隔离,同时空出更多的资源给爬虫。我们接着又帮助客户在新采购的两台服务器上部署了 Crawlab 专业版,将原先的主节点迁移到一台新服务器,在另一台新服务器上部署工作节点。这样调整以后, 各个资源的负载更加均衡了,抓取稳定性也更好了

整个架构的演进过程如下图。

5551e7d57e0e5f49f57555e455714647.html

可以看到,性能监控功能帮助客户及时掌握自己的爬虫管理平台健康状况,保证能够在业务量增大的时候处变不惊。 这就跟我们开车一样,需要一个实时的仪表盘,能够看到速度、引擎转速、发动机温度等指标,协助我们安全驾车

总结

Crawlab 专业版的性能监控功能是一个非常实用的功能,能够帮助用户全方位的随时掌握节点动态,及时调整资源分配或扩容。如果没有性能监控,就像飞行员靠肉眼开飞机一样危险。因此,我们 推荐每一个希望应用 Crawlab 在企业生产环境的用户,都使用 Crawlab 专业版

我知道很多企业都有部署 Zabbix、Prometheus+Grafana 来监控节点性能。当然,这些都是很棒的工具,我并不反对使用它们。只是 Crawlab 专业版内置了这些功能,让我们随时都能在一个一体化平台中看到相关性能指标,而不是打开新的页面来查看,这样要来得更方便一些;另外,Zabbix、Prometheus 同样需要专门部署,而 Crawlab 专业版是内置的,不需要专门部署安装,非常方便。有了专业版之后,其实完全可以不用其他的性能监控工具了。

参考

欢迎关注我们的微信公众号,每天学习Go知识

FveQFjN.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK