大數(shù)據(jù)“復(fù)活”記
1109
2025-03-31
前言
Crawlab 是基于 Golang 的分布式爬蟲管理平臺,旨在解決大量不同種類的爬蟲管理困難的問題。Crawlab 的目標(biāo)是輕松管理一切爬蟲,讓爬蟲管理變得更簡單(Easy Crawling)。自去年(2019年)3月份上線以來,Crawlab 經(jīng)歷了大量的迭代和優(yōu)化,受到爬蟲愛好者們和開發(fā)者們的好評。如今在 Github 上已經(jīng)有 6.4k Star,總用戶數(shù)接近 7k,成為了最受歡迎的爬蟲管理平臺。經(jīng)過近數(shù)月的迭代,我們陸續(xù)上線了定時(shí)任務(wù)、數(shù)據(jù)分析、可配置爬蟲、SDK、消息通知、Scrapy 支持、Git 同步等功能,將 Crawlab 打造得更加實(shí)用,更加全面,能夠真正幫助用戶解決爬蟲管理困難的問題。
Crawlab 專業(yè)版
Crawlab 專業(yè)版 (Crawlab Pro) 是針對專業(yè)用戶以及企業(yè)量身打造的。它的穩(wěn)定性更高,相較于 Crawlab 社區(qū)版功能更強(qiáng)大。專業(yè)版在底層特別是數(shù)據(jù)庫層面做了大量的優(yōu)化,保證爬蟲任務(wù)能夠穩(wěn)定而高效的運(yùn)行并抓取數(shù)據(jù)。此外,專業(yè)版相較于社區(qū)版有很多強(qiáng)大的專屬功能,例如節(jié)點(diǎn)、數(shù)據(jù)庫監(jiān)控功能,SQL 數(shù)據(jù)庫 (MySQL、Postgres) 集成等等。近期我們將上線 Kafka、ElasticSearch 集成的功能,以幫助 Crawlab 用戶更好的集成自己的數(shù)據(jù)系統(tǒng) (例如數(shù)據(jù)倉庫)。在未來,我們將支持更加高級的可配置爬蟲。
為什么會開發(fā)專業(yè)版產(chǎn)品?其實(shí),最開始我們只是打算商業(yè)化來收取一些費(fèi)用來負(fù)擔(dān)服務(wù)器的費(fèi)用。但是,后來我們突然發(fā)現(xiàn),專業(yè)版用戶(或企業(yè)用戶)的反饋意見比社區(qū)版用戶提出的問題要有價(jià)值得多,特別是在企業(yè)使用 Crawlab 方面,讓我們意識到很多需要解決的真實(shí)問題。于是,我們相信收費(fèi)是一個(gè)產(chǎn)品改進(jìn)的最好途徑,因?yàn)楹苌儆腥藭σ粋€(gè)免費(fèi)產(chǎn)品各種挑剔。只有付了錢或上了生產(chǎn)環(huán)境,用戶才會占在提出真正的反饋意見,而且往往都是非常實(shí)用而且我們意識不到的問題。因此,我們會堅(jiān)持開發(fā) Crawlab 的商業(yè)版本,并根據(jù)付費(fèi)用戶的反饋意見不斷完善產(chǎn)品,讓所有人都能輕松管理一切爬蟲。
下面,我們將詳細(xì)介紹 Crawlab 專業(yè)版的一個(gè)強(qiáng)大而實(shí)用的專屬功能:性能監(jiān)控。
性能監(jiān)控
對于企業(yè)級應(yīng)用來說,特別是分布式應(yīng)用服務(wù),經(jīng)常需要監(jiān)控各個(gè)服務(wù)器或數(shù)據(jù)庫的性能指標(biāo),例如 CPU、內(nèi)存、磁盤空間以及網(wǎng)絡(luò)資源。爬蟲管理平臺同樣不例外,也是需要了解爬蟲所在節(jié)點(diǎn)的性能狀況,以便更合理的分配資源、及時(shí)擴(kuò)容等等。否則,可能會出現(xiàn)一些意料不到的狀況。例如,當(dāng)分布式爬蟲抓取的數(shù)據(jù)量非常大,占滿了磁盤空間,這將導(dǎo)致服務(wù)器上的應(yīng)用崩潰;同樣的,如果服務(wù)器的 CPU 或內(nèi)存被占滿,將導(dǎo)致服務(wù)器無法登錄、操作或運(yùn)行應(yīng)用等問題。這通常都將是災(zāi)難性的,如果數(shù)據(jù)量比較大、應(yīng)用服務(wù)較多,恢復(fù)起來也是個(gè)很頭疼的問題。
為了解決這個(gè)問題,我們在 Crawlab 專業(yè)版中加入了節(jié)點(diǎn)/數(shù)據(jù)庫性能監(jiān)控功能,以幫助用戶更方便的時(shí)刻掌握自己分布式節(jié)點(diǎn)的性能狀況,預(yù)測好性能瓶頸,好隨時(shí)擴(kuò)容或合理分配資源。
Crawlab 專業(yè)版的監(jiān)控功能主要包括兩個(gè):
監(jiān)控概覽
監(jiān)控時(shí)序圖
前言
Crawlab 是基于 Golang 的分布式爬蟲管理平臺,旨在解決大量不同種類的爬蟲管理困難的問題。Crawlab 的目標(biāo)是輕松管理一切爬蟲,讓爬蟲管理變得更簡單(Easy Crawling)。自去年(2019年)3月份上線以來,Crawlab 經(jīng)歷了大量的迭代和優(yōu)化,受到爬蟲愛好者們和開發(fā)者們的好評。如今在 Github 上已經(jīng)有 6.4k Star,總用戶數(shù)接近 7k,成為了最受歡迎的爬蟲管理平臺。經(jīng)過近數(shù)月的迭代,我們陸續(xù)上線了定時(shí)任務(wù)、數(shù)據(jù)分析、可配置爬蟲、SDK、消息通知、Scrapy 支持、Git 同步等功能,將 Crawlab 打造得更加實(shí)用,更加全面,能夠真正幫助用戶解決爬蟲管理困難的問題。
Crawlab 專業(yè)版
Crawlab 專業(yè)版 (Crawlab Pro) 是針對專業(yè)用戶以及企業(yè)量身打造的。它的穩(wěn)定性更高,相較于 Crawlab 社區(qū)版功能更強(qiáng)大。專業(yè)版在底層特別是數(shù)據(jù)庫層面做了大量的優(yōu)化,保證爬蟲任務(wù)能夠穩(wěn)定而高效的運(yùn)行并抓取數(shù)據(jù)。此外,專業(yè)版相較于社區(qū)版有很多強(qiáng)大的專屬功能,例如節(jié)點(diǎn)、數(shù)據(jù)庫監(jiān)控功能,SQL 數(shù)據(jù)庫 (MySQL、Postgres) 集成等等。近期我們將上線 Kafka、ElasticSearch 集成的功能,以幫助 Crawlab 用戶更好的集成自己的數(shù)據(jù)系統(tǒng) (例如數(shù)據(jù)倉庫)。在未來,我們將支持更加高級的可配置爬蟲。
為什么會開發(fā)專業(yè)版產(chǎn)品?其實(shí),最開始我們只是打算商業(yè)化來收取一些費(fèi)用來負(fù)擔(dān)服務(wù)器的費(fèi)用。但是,后來我們突然發(fā)現(xiàn),專業(yè)版用戶(或企業(yè)用戶)的反饋意見比社區(qū)版用戶提出的問題要有價(jià)值得多,特別是在企業(yè)使用 Crawlab 方面,讓我們意識到很多需要解決的真實(shí)問題。于是,我們相信收費(fèi)是一個(gè)產(chǎn)品改進(jìn)的最好途徑,因?yàn)楹苌儆腥藭σ粋€(gè)免費(fèi)產(chǎn)品各種挑剔。只有付了錢或上了生產(chǎn)環(huán)境,用戶才會占在提出真正的反饋意見,而且往往都是非常實(shí)用而且我們意識不到的問題。因此,我們會堅(jiān)持開發(fā) Crawlab 的商業(yè)版本,并根據(jù)付費(fèi)用戶的反饋意見不斷完善產(chǎn)品,讓所有人都能輕松管理一切爬蟲。
下面,我們將詳細(xì)介紹 Crawlab 專業(yè)版的一個(gè)強(qiáng)大而實(shí)用的專屬功能:性能監(jiān)控。
性能監(jiān)控
對于企業(yè)級應(yīng)用來說,特別是分布式應(yīng)用服務(wù),經(jīng)常需要監(jiān)控各個(gè)服務(wù)器或數(shù)據(jù)庫的性能指標(biāo),例如 CPU、內(nèi)存、磁盤空間以及網(wǎng)絡(luò)資源。爬蟲管理平臺同樣不例外,也是需要了解爬蟲所在節(jié)點(diǎn)的性能狀況,以便更合理的分配資源、及時(shí)擴(kuò)容等等。否則,可能會出現(xiàn)一些意料不到的狀況。例如,當(dāng)分布式爬蟲抓取的數(shù)據(jù)量非常大,占滿了磁盤空間,這將導(dǎo)致服務(wù)器上的應(yīng)用崩潰;同樣的,如果服務(wù)器的 CPU 或內(nèi)存被占滿,將導(dǎo)致服務(wù)器無法登錄、操作或運(yùn)行應(yīng)用等問題。這通常都將是災(zāi)難性的,如果數(shù)據(jù)量比較大、應(yīng)用服務(wù)較多,恢復(fù)起來也是個(gè)很頭疼的問題。
為了解決這個(gè)問題,我們在 Crawlab 專業(yè)版中加入了節(jié)點(diǎn)/數(shù)據(jù)庫性能監(jiān)控功能,以幫助用戶更方便的時(shí)刻掌握自己分布式節(jié)點(diǎn)的性能狀況,預(yù)測好性能瓶頸,好隨時(shí)擴(kuò)容或合理分配資源。
Crawlab 專業(yè)版的監(jiān)控功能主要包括兩個(gè):
監(jiān)控概覽
監(jiān)控時(shí)序圖
在 Crawlab 專業(yè)版首頁,我們可以看到 MongoDB 數(shù)據(jù)庫、Redis 數(shù)據(jù)庫、主節(jié)點(diǎn)、工作節(jié)點(diǎn)的性能數(shù)據(jù)概覽。這些都是及時(shí)獲取的數(shù)據(jù),反應(yīng)的是當(dāng)前各個(gè)節(jié)點(diǎn)數(shù)據(jù)庫的性能狀況(如下圖)。
從這個(gè)圖我們看到,其實(shí)主節(jié)點(diǎn)(Master)和工作節(jié)點(diǎn)(Worker)的負(fù)載,例如內(nèi)存,都已經(jīng)比較高了,工作節(jié)點(diǎn)的 CPU 負(fù)載甚至達(dá)到了 100%。這時(shí),為了擴(kuò)展業(yè)務(wù),我們可以考慮增加一臺服務(wù)器來部署 Crawlab 工作節(jié)點(diǎn)。
每次登錄 Crawlab 專業(yè)版,節(jié)點(diǎn)數(shù)據(jù)庫性能指標(biāo)是我們第一個(gè)看到的數(shù)據(jù),這能幫助我們時(shí)刻了解分布式集群的健康狀況,從而避免因資源不夠而導(dǎo)致的抓取流程中斷。
在 “監(jiān)控” 頁面,我們可以看到各個(gè)節(jié)點(diǎn)、數(shù)據(jù)庫的性能指標(biāo)時(shí)序圖(如下圖)。監(jiān)控時(shí)序圖能幫助我們了解過去的性能演化情況,通過增長速率預(yù)測未來的性能瓶頸,并幫助我們隨時(shí)采取相應(yīng)的措施。
從這張圖我們看到,節(jié)點(diǎn)磁盤空間的增長速度大概是 0.4% 每小時(shí),也就是 9.6% 每天。這是一個(gè)非常高的增長速度。也就是說,如果我們不采取任何措施的話,5 天內(nèi)磁盤空間就會觸頂,這將導(dǎo)致節(jié)點(diǎn)磁盤空間不足,從而發(fā)生宕機(jī)的風(fēng)險(xiǎn)。因此,我檢查了一下磁盤空間上升的原因,發(fā)現(xiàn) Docker 日志無限制增長導(dǎo)致的。知道了原因就很簡單了,我后續(xù)限制了 Docker 容器日志大小為 500MB,防止其無限制增長導(dǎo)致磁盤空間占滿。
客戶案例
我們有一位企業(yè)客戶,在成功部署了我們的 Crawlab 專業(yè)版之后,開始使用很順利,都能夠順利抓取數(shù)據(jù)。當(dāng)時(shí),在這臺服務(wù)器上部署有:Crawlab 主節(jié)點(diǎn)、MongoDB、Redis。后來通過性能監(jiān)控發(fā)現(xiàn) MongoDB 的數(shù)據(jù)增長速度很快,內(nèi)存迅速到達(dá)瓶頸。于是,客戶決定擴(kuò)容,我們幫其在新服務(wù)器上部署了 Crawlab 工作節(jié)點(diǎn),并通過內(nèi)網(wǎng)連接到原 MongoDB 和 Redis,成功加入集群。隨著客戶業(yè)務(wù)量的增大,同時(shí)運(yùn)行的爬蟲數(shù)量越來越多,消耗的 CPU、內(nèi)存、網(wǎng)絡(luò)帶寬資源又逐漸達(dá)到瓶頸。我們建議將主節(jié)點(diǎn)遷移出來,保證數(shù)據(jù)與服務(wù)隔離,同時(shí)空出更多的資源給爬蟲。我們接著又幫助客戶在新采購的兩臺服務(wù)器上部署了 Crawlab 專業(yè)版,將原先的主節(jié)點(diǎn)遷移到一臺新服務(wù)器,在另一臺新服務(wù)器上部署工作節(jié)點(diǎn)。這樣調(diào)整以后,各個(gè)資源的負(fù)載更加均衡了,抓取穩(wěn)定性也更好了。
整個(gè)架構(gòu)的演進(jìn)過程如下圖。
可以看到,性能監(jiān)控功能幫助客戶及時(shí)掌握自己的爬蟲管理平臺健康狀況,保證能夠在業(yè)務(wù)量增大的時(shí)候處變不驚。這就跟我們開車一樣,需要一個(gè)實(shí)時(shí)的儀表盤,能夠看到速度、引擎轉(zhuǎn)速、發(fā)動機(jī)溫度等指標(biāo),協(xié)助我們安全駕車。
總結(jié)
Crawlab 專業(yè)版的性能監(jiān)控功能是一個(gè)非常實(shí)用的功能,能夠幫助用戶全方位的隨時(shí)掌握節(jié)點(diǎn)動態(tài),及時(shí)調(diào)整資源分配或擴(kuò)容。如果沒有性能監(jiān)控,就像飛行員靠肉眼開飛機(jī)一樣危險(xiǎn)。因此,我們推薦每一個(gè)希望應(yīng)用 Crawlab 在企業(yè)生產(chǎn)環(huán)境的用戶,都使用 Crawlab 專業(yè)版。
我知道很多企業(yè)都有部署 Zabbix、Prometheus+Grafana 來監(jiān)控節(jié)點(diǎn)性能。當(dāng)然,這些都是很棒的工具,我并不反對使用它們。只是 Crawlab 專業(yè)版內(nèi)置了這些功能,讓我們隨時(shí)都能在一個(gè)一體化平臺中看到相關(guān)性能指標(biāo),而不是打開新的頁面來查看,這樣要來得更方便一些;另外,Zabbix、Prometheus 同樣需要專門部署,而 Crawlab 專業(yè)版是內(nèi)置的,不需要專門部署安裝,非常方便。有了專業(yè)版之后,其實(shí)完全可以不用其他的性能監(jiān)控工具了。
參考
官網(wǎng): https://www.crawlab.cn
演示: https://demo.crawlab.cn
文檔: https://docs.crawlab.cn
如何購買專業(yè)版: https://www.crawlab.cn/purchase-pro
Go
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。