亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

實(shí)時(shí)文章采集

實(shí)時(shí)文章采集

實(shí)時(shí)文章采集(實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 115 次瀏覽 ? 2022-01-26 09:05 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多)
  實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多,可以嘗試下實(shí)時(shí)爬蟲(chóng)任務(wù),可以獲取到最新文章而且實(shí)時(shí)獲取文章比較方便,不用設置分頁(yè),方便直接提取有價(jià)值的信息。有感興趣的可以點(diǎn)擊我,獲取學(xué)習資料及源碼下載。對于任務(wù)是采集信息,作者是從以下幾個(gè)角度出發(fā)的。1.搜索排名2.帖子內容3.新聞來(lái)源4.熱門(mén)分類(lèi)5.標簽分析6.閱讀時(shí)間7.群組排名8.個(gè)人排名以下是簡(jiǎn)單爬蟲(chóng)的代碼和效果展示:根據內容爬取網(wǎng)絡(luò )信息列舉一些案例:1.實(shí)時(shí)文章及群組排名2.某篇文章【發(fā)布信息】【收藏】【閱讀次數】【在線(xiàn)閱讀次數】【點(diǎn)贊】【轉發(fā)】【評論】【小組討論】【說(shuō)說(shuō)】【文章微博】【學(xué)術(shù)論文】某實(shí)時(shí)排名3.某某廠(chǎng)商產(chǎn)品相關(guān)消息實(shí)時(shí)爬取。
  用戶(hù)的屬性信息,也就是分析的對象是人;還有時(shí)間上的區分也有助于抓取時(shí)間上的信息;還有就是操作規律,有很多第三方網(wǎng)站可以抓取到數據,比如飯統官網(wǎng)的爬蟲(chóng)接口,有很多實(shí)時(shí)抓取數據。有興趣的朋友可以和大家分享下,外出開(kāi)會(huì )不是很方便。
  既然是自己寫(xiě)的,那建議還是腳本,也就是單人的小任務(wù),基本的功能足夠用的。
  我也曾經(jīng)做過(guò)類(lèi)似的任務(wù),既然是單人,那么需要專(zhuān)人來(lái)完成,如果不專(zhuān)人,那么我建議可以使用手機聯(lián)網(wǎng)電腦都可以打開(kāi)的軟件;例如anycast,當然實(shí)現起來(lái)比較麻煩,但是成本很低的。 查看全部

  實(shí)時(shí)文章采集(實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多)
  實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多,可以嘗試下實(shí)時(shí)爬蟲(chóng)任務(wù),可以獲取到最新文章而且實(shí)時(shí)獲取文章比較方便,不用設置分頁(yè),方便直接提取有價(jià)值的信息。有感興趣的可以點(diǎn)擊我,獲取學(xué)習資料及源碼下載。對于任務(wù)是采集信息,作者是從以下幾個(gè)角度出發(fā)的。1.搜索排名2.帖子內容3.新聞來(lái)源4.熱門(mén)分類(lèi)5.標簽分析6.閱讀時(shí)間7.群組排名8.個(gè)人排名以下是簡(jiǎn)單爬蟲(chóng)的代碼和效果展示:根據內容爬取網(wǎng)絡(luò )信息列舉一些案例:1.實(shí)時(shí)文章及群組排名2.某篇文章【發(fā)布信息】【收藏】【閱讀次數】【在線(xiàn)閱讀次數】【點(diǎn)贊】【轉發(fā)】【評論】【小組討論】【說(shuō)說(shuō)】【文章微博】【學(xué)術(shù)論文】某實(shí)時(shí)排名3.某某廠(chǎng)商產(chǎn)品相關(guān)消息實(shí)時(shí)爬取。
  用戶(hù)的屬性信息,也就是分析的對象是人;還有時(shí)間上的區分也有助于抓取時(shí)間上的信息;還有就是操作規律,有很多第三方網(wǎng)站可以抓取到數據,比如飯統官網(wǎng)的爬蟲(chóng)接口,有很多實(shí)時(shí)抓取數據。有興趣的朋友可以和大家分享下,外出開(kāi)會(huì )不是很方便。
  既然是自己寫(xiě)的,那建議還是腳本,也就是單人的小任務(wù),基本的功能足夠用的。
  我也曾經(jīng)做過(guò)類(lèi)似的任務(wù),既然是單人,那么需要專(zhuān)人來(lái)完成,如果不專(zhuān)人,那么我建議可以使用手機聯(lián)網(wǎng)電腦都可以打開(kāi)的軟件;例如anycast,當然實(shí)現起來(lái)比較麻煩,但是成本很低的。

實(shí)時(shí)文章采集(電商實(shí)時(shí)數倉的比較離線(xiàn)計算與實(shí)時(shí)需求種類(lèi) )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 118 次瀏覽 ? 2022-01-20 20:02 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(電商實(shí)時(shí)數倉的比較離線(xiàn)計算與實(shí)時(shí)需求種類(lèi)
)
  一、電商實(shí)時(shí)數倉介紹1.1、普通實(shí)時(shí)計算與實(shí)時(shí)數倉對比
  普通實(shí)時(shí)計算優(yōu)先考慮及時(shí)性,所以直接從數據源采集通過(guò)實(shí)時(shí)計算得到結果。這樣比較省時(shí),但缺點(diǎn)是計算過(guò)程中的中間結果沒(méi)有沉淀出來(lái),所以在面對大量實(shí)時(shí)性需求時(shí),計算的復用性較差,開(kāi)發(fā)成本線(xiàn)性增加隨著(zhù)需求的增加。
  
  實(shí)時(shí)數倉基于一定的數據倉庫概念,對數據處理過(guò)程進(jìn)行規劃和分層,以提高數據的可重用性。
  
  1.2 實(shí)時(shí)電商數據倉庫,項目分為以下幾層
  ? 消耗臭氧層物質(zhì)
  ? DWD
  ? 昏暗
  ? DWM
  ? DWS
  ? ADS
  二、實(shí)時(shí)需求概覽2.1 離線(xiàn)與實(shí)時(shí)計算對比
  離線(xiàn)計算:即在計算開(kāi)始前所有輸入數據都是已知的,輸入數據不會(huì )改變。一般計算量大,計算時(shí)間長(cháng)。例如,今天早上 1 點(diǎn),從昨天積累的日志中計算出所需的結果。最經(jīng)典的是MR/Spark/Hive。通常,報告是根據前一天的數據生成的。統計指標和報表雖多,但對時(shí)效性不敏感。從技術(shù)操作上看,這部分屬于批量操作。即一次計算是基于一定范圍的數據。
  實(shí)時(shí)計算:輸入數據可以以序列化的方式一個(gè)一個(gè)地輸入和處理,也就是說(shuō)一開(kāi)始不需要知道所有的輸入數據。與離線(xiàn)計算相比,運行時(shí)間短,計算量較小。強調計算過(guò)程的時(shí)間要短,即在調查的那一刻給出結果。主要關(guān)注當日數據的實(shí)時(shí)監控。通常,業(yè)務(wù)邏輯比線(xiàn)下需求簡(jiǎn)單,統計指標較少,但更注重數據的及時(shí)性和用戶(hù)的交互性。從技術(shù)操作來(lái)看,這部分屬于流處理的操作。
  2.2 實(shí)時(shí)需求類(lèi)型2.2.1 每日統計報表或分析圖表需收錄當日
  
  對于日常的企業(yè)和網(wǎng)站運營(yíng)管理來(lái)說(shuō),如果僅僅依靠離線(xiàn)計算,數據的時(shí)效性往往不盡如人意。通過(guò)實(shí)時(shí)計算獲取日、分、秒甚至亞秒級的數據,讓企業(yè)更容易快速響應和調整業(yè)務(wù)。
  因此,實(shí)時(shí)計算結果往往與線(xiàn)下數據相結合或展示在BI或統計平臺中。
  2.2.2 實(shí)時(shí)數據大屏監控
  大數據屏幕是比 BI 工具或數據分析平臺更直觀(guān)的數據可視化方式。尤其是一些大型的促銷(xiāo)活動(dòng),已經(jīng)成為必備的營(yíng)銷(xiāo)手段。此外,還有一些特殊的行業(yè),比如交通、電信行業(yè),那么大屏監控幾乎是必不可少的監控手段。
  2.2.3 數據警告或提醒
  一些通過(guò)大數據實(shí)時(shí)計算得到的風(fēng)控預警和營(yíng)銷(xiāo)信息提示,可以讓風(fēng)控或營(yíng)銷(xiāo)部門(mén)快速獲取信息,從而采取各種應對措施。比如用戶(hù)在電商、金融平臺進(jìn)行一些違法或欺詐的操作,大數據的實(shí)時(shí)計算可以快速篩選出情況并發(fā)送給風(fēng)控部門(mén)處理,甚至自動(dòng)屏蔽它?;蛘邫z測到用戶(hù)的行為對某些產(chǎn)品有強烈的購買(mǎi)意愿,那么可以將這些“商機”推送給客服部,讓客服主動(dòng)跟進(jìn)。
  2.2.4 實(shí)時(shí)推薦系統
  實(shí)時(shí)推薦是根據用戶(hù)自身屬性結合當前訪(fǎng)問(wèn)行為,通過(guò)實(shí)時(shí)推薦算法計算,將用戶(hù)可能喜歡的產(chǎn)品、新聞、視頻等推送給用戶(hù)。這類(lèi)系統一般由用戶(hù)畫(huà)像的批處理和用戶(hù)行為分析的流處理組成。
  三、統計架構分析3.1 離線(xiàn)架構
  
  3.2、實(shí)時(shí)架構
   查看全部

  實(shí)時(shí)文章采集(電商實(shí)時(shí)數倉的比較離線(xiàn)計算與實(shí)時(shí)需求種類(lèi)
)
  一、電商實(shí)時(shí)數倉介紹1.1、普通實(shí)時(shí)計算與實(shí)時(shí)數倉對比
  普通實(shí)時(shí)計算優(yōu)先考慮及時(shí)性,所以直接從數據源采集通過(guò)實(shí)時(shí)計算得到結果。這樣比較省時(shí),但缺點(diǎn)是計算過(guò)程中的中間結果沒(méi)有沉淀出來(lái),所以在面對大量實(shí)時(shí)性需求時(shí),計算的復用性較差,開(kāi)發(fā)成本線(xiàn)性增加隨著(zhù)需求的增加。
  
  實(shí)時(shí)數倉基于一定的數據倉庫概念,對數據處理過(guò)程進(jìn)行規劃和分層,以提高數據的可重用性。
  
  1.2 實(shí)時(shí)電商數據倉庫,項目分為以下幾層
  ? 消耗臭氧層物質(zhì)
  ? DWD
  ? 昏暗
  ? DWM
  ? DWS
  ? ADS
  二、實(shí)時(shí)需求概覽2.1 離線(xiàn)與實(shí)時(shí)計算對比
  離線(xiàn)計算:即在計算開(kāi)始前所有輸入數據都是已知的,輸入數據不會(huì )改變。一般計算量大,計算時(shí)間長(cháng)。例如,今天早上 1 點(diǎn),從昨天積累的日志中計算出所需的結果。最經(jīng)典的是MR/Spark/Hive。通常,報告是根據前一天的數據生成的。統計指標和報表雖多,但對時(shí)效性不敏感。從技術(shù)操作上看,這部分屬于批量操作。即一次計算是基于一定范圍的數據。
  實(shí)時(shí)計算:輸入數據可以以序列化的方式一個(gè)一個(gè)地輸入和處理,也就是說(shuō)一開(kāi)始不需要知道所有的輸入數據。與離線(xiàn)計算相比,運行時(shí)間短,計算量較小。強調計算過(guò)程的時(shí)間要短,即在調查的那一刻給出結果。主要關(guān)注當日數據的實(shí)時(shí)監控。通常,業(yè)務(wù)邏輯比線(xiàn)下需求簡(jiǎn)單,統計指標較少,但更注重數據的及時(shí)性和用戶(hù)的交互性。從技術(shù)操作來(lái)看,這部分屬于流處理的操作。
  2.2 實(shí)時(shí)需求類(lèi)型2.2.1 每日統計報表或分析圖表需收錄當日
  
  對于日常的企業(yè)和網(wǎng)站運營(yíng)管理來(lái)說(shuō),如果僅僅依靠離線(xiàn)計算,數據的時(shí)效性往往不盡如人意。通過(guò)實(shí)時(shí)計算獲取日、分、秒甚至亞秒級的數據,讓企業(yè)更容易快速響應和調整業(yè)務(wù)。
  因此,實(shí)時(shí)計算結果往往與線(xiàn)下數據相結合或展示在BI或統計平臺中。
  2.2.2 實(shí)時(shí)數據大屏監控
  大數據屏幕是比 BI 工具或數據分析平臺更直觀(guān)的數據可視化方式。尤其是一些大型的促銷(xiāo)活動(dòng),已經(jīng)成為必備的營(yíng)銷(xiāo)手段。此外,還有一些特殊的行業(yè),比如交通、電信行業(yè),那么大屏監控幾乎是必不可少的監控手段。
  2.2.3 數據警告或提醒
  一些通過(guò)大數據實(shí)時(shí)計算得到的風(fēng)控預警和營(yíng)銷(xiāo)信息提示,可以讓風(fēng)控或營(yíng)銷(xiāo)部門(mén)快速獲取信息,從而采取各種應對措施。比如用戶(hù)在電商、金融平臺進(jìn)行一些違法或欺詐的操作,大數據的實(shí)時(shí)計算可以快速篩選出情況并發(fā)送給風(fēng)控部門(mén)處理,甚至自動(dòng)屏蔽它?;蛘邫z測到用戶(hù)的行為對某些產(chǎn)品有強烈的購買(mǎi)意愿,那么可以將這些“商機”推送給客服部,讓客服主動(dòng)跟進(jìn)。
  2.2.4 實(shí)時(shí)推薦系統
  實(shí)時(shí)推薦是根據用戶(hù)自身屬性結合當前訪(fǎng)問(wèn)行為,通過(guò)實(shí)時(shí)推薦算法計算,將用戶(hù)可能喜歡的產(chǎn)品、新聞、視頻等推送給用戶(hù)。這類(lèi)系統一般由用戶(hù)畫(huà)像的批處理和用戶(hù)行為分析的流處理組成。
  三、統計架構分析3.1 離線(xiàn)架構
  
  3.2、實(shí)時(shí)架構
  

實(shí)時(shí)文章采集( 帝國CMS如何免費采集信息,本篇文章分享收獲)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 108 次瀏覽 ? 2022-01-15 01:12 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(
帝國CMS如何免費采集信息,本篇文章分享收獲)
  
  帝國cms如何免費采集信息,本文文章主要介紹帝國cms如何免費采集信息,有一定的參考價(jià)值,需要的朋友可以參考下。希望看完這篇文章你會(huì )受益匪淺。小編帶大家一探究竟。Empirecms是站長(cháng)大量使用PHP的建站系統。在建站的過(guò)程中,如果沒(méi)有信息源,只能手動(dòng)復制粘貼,費時(shí)費力,所以需要用到自由帝國cms@ >采集函數完成信息的錄入。對于帝國cms,站長(cháng)們接觸過(guò)很多,對比織夢(mèng)cms,織夢(mèng) 在處理超過(guò)一百萬(wàn)個(gè)數據時(shí)確實(shí)有更高的負載。許多網(wǎng)站管理員將Empirecms 用于采集 站。眾所周知,建一個(gè)采集網(wǎng)站不像做一個(gè)公司官網(wǎng),需要手動(dòng)更新。采集 站點(diǎn)越自動(dòng)化越好,最好不要讓人管理它。
  
  自由帝國cms采集如何實(shí)現呢?首先,您不需要了解代碼和技術(shù)技能,也不需要編寫(xiě)復雜的 采集 規則。畢竟大部分站長(cháng)都不知道怎么寫(xiě)采集規則。二、極簡(jiǎn)主義,配置簡(jiǎn)單,沒(méi)有復雜的功能設置,簡(jiǎn)單易懂,主要是按鍵的性質(zhì),點(diǎn)擊選擇與否。三、掛機采集,無(wú)需人工干預,設置采集規則,即可實(shí)現自動(dòng)批量掛機采集,無(wú)縫發(fā)布,自帶發(fā)布功能,采集后即自動(dòng)批量發(fā)布到網(wǎng)站,發(fā)布時(shí)支持自動(dòng)偽原創(chuàng ),使采集偽原創(chuàng )發(fā)布實(shí)現全自動(dòng)掛機。
  
  一旦你用 Empire cms 建立了你的站,恢復整個(gè) 采集 過(guò)程。
  1.點(diǎn)擊批處理采集管理,選擇添加采集任務(wù)
  2.新建采集任務(wù)標題,以zjxseo為例,選擇采集數據源,同時(shí)支持十多個(gè)數據源采集,點(diǎn)擊選擇。
  3. 選擇采集文件存放目錄,在D盤(pán)新建文件夾,在數據源中設置關(guān)鍵詞篇采集篇,10篇/ 關(guān)鍵詞例如。 查看全部

  實(shí)時(shí)文章采集(
帝國CMS如何免費采集信息,本篇文章分享收獲)
  
  帝國cms如何免費采集信息,本文文章主要介紹帝國cms如何免費采集信息,有一定的參考價(jià)值,需要的朋友可以參考下。希望看完這篇文章你會(huì )受益匪淺。小編帶大家一探究竟。Empirecms是站長(cháng)大量使用PHP的建站系統。在建站的過(guò)程中,如果沒(méi)有信息源,只能手動(dòng)復制粘貼,費時(shí)費力,所以需要用到自由帝國cms@ >采集函數完成信息的錄入。對于帝國cms,站長(cháng)們接觸過(guò)很多,對比織夢(mèng)cms,織夢(mèng) 在處理超過(guò)一百萬(wàn)個(gè)數據時(shí)確實(shí)有更高的負載。許多網(wǎng)站管理員將Empirecms 用于采集 站。眾所周知,建一個(gè)采集網(wǎng)站不像做一個(gè)公司官網(wǎng),需要手動(dòng)更新。采集 站點(diǎn)越自動(dòng)化越好,最好不要讓人管理它。
  
  自由帝國cms采集如何實(shí)現呢?首先,您不需要了解代碼和技術(shù)技能,也不需要編寫(xiě)復雜的 采集 規則。畢竟大部分站長(cháng)都不知道怎么寫(xiě)采集規則。二、極簡(jiǎn)主義,配置簡(jiǎn)單,沒(méi)有復雜的功能設置,簡(jiǎn)單易懂,主要是按鍵的性質(zhì),點(diǎn)擊選擇與否。三、掛機采集,無(wú)需人工干預,設置采集規則,即可實(shí)現自動(dòng)批量掛機采集,無(wú)縫發(fā)布,自帶發(fā)布功能,采集后即自動(dòng)批量發(fā)布到網(wǎng)站,發(fā)布時(shí)支持自動(dòng)偽原創(chuàng ),使采集偽原創(chuàng )發(fā)布實(shí)現全自動(dòng)掛機。
  
  一旦你用 Empire cms 建立了你的站,恢復整個(gè) 采集 過(guò)程。
  1.點(diǎn)擊批處理采集管理,選擇添加采集任務(wù)
  2.新建采集任務(wù)標題,以zjxseo為例,選擇采集數據源,同時(shí)支持十多個(gè)數據源采集,點(diǎn)擊選擇。
  3. 選擇采集文件存放目錄,在D盤(pán)新建文件夾,在數據源中設置關(guān)鍵詞篇采集篇,10篇/ 關(guān)鍵詞例如。

實(shí)時(shí)文章采集(一下zblog插件采集方式(一)(1)_國內_光明網(wǎng)(組圖) )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 132 次瀏覽 ? 2022-01-14 06:15 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(一下zblog插件采集方式(一)(1)_國內_光明網(wǎng)(組圖)
)
  Zblog采集插件是為了幫助網(wǎng)站快速豐富網(wǎng)站內容;減少手動(dòng)內容發(fā)布的繁瑣;主要是給網(wǎng)站添加很多內容,方便快捷。 網(wǎng)站發(fā)布文章的時(shí)候,如果把文章一一發(fā)布到網(wǎng)上,不僅浪費時(shí)間,而且效率低下。這時(shí)候為了提高更新網(wǎng)站的效率,出現了zblog采集插件,但是常規的zblog插件都需要寫(xiě)規則。今天博主就來(lái)說(shuō)說(shuō)zblog插件采集方法:第一個(gè)是付費插件,需要寫(xiě)規則,第二個(gè)是免費工具,不需要寫(xiě)規則!
  
  Zblog采集規則介紹
  第一步:創(chuàng )建一個(gè)新的文章采集節點(diǎn)
  登錄后臺,點(diǎn)擊采集>>>采集節點(diǎn)管理>>添加新節點(diǎn)>>選擇普通文章>>確定
  第二步:填寫(xiě)采集列表規則
  1.節點(diǎn)名:隨便(注意要能區分,因為節點(diǎn)太多可能會(huì )造成混亂)
  2.查看目標頁(yè)面的編碼:查看目標頁(yè)面的編碼
  3.匹配網(wǎng)址:進(jìn)入采集目標列表頁(yè)面查看其列表規則!比如很多網(wǎng)站列表的首頁(yè)和其他的內頁(yè)差別很大,所以我一般不會(huì )采集定位到列表的首頁(yè)!
  
  最好從第二頁(yè)開(kāi)始(雖然第一頁(yè)可以找到,但是很多網(wǎng)站根本沒(méi)有第一頁(yè),這里就不講怎么找到第一頁(yè)了)
  4.區域末尾的HTML:在采集目標列表頁(yè)面打開(kāi)源代碼!在 文章 的標題附近尋找一個(gè) html 標記,該標記將是 采集,并且對于該頁(yè)面和其他將成為 采集 的頁(yè)面來(lái)說(shuō)是唯一的!
  再次按下一步!輸入并填寫(xiě)采集內容規則
  第 3 步:采集內容規則
  1.文章標題:尋找文章標題前后兩個(gè)標簽,即可識別標題!
  2.文章內容:尋找文章內容前后的兩個(gè)標簽來(lái)識別內容!我的 采集 的 網(wǎng)站 的 文章 內容前后的唯一標簽是
  [內容]
  其他功能,不用擔心!這就是 zblog 可以訪(fǎng)問(wèn) 文章 的方式!然后,單擊以保存配置并進(jìn)行預覽。如果之前的列表規則和內容規則都寫(xiě)對了,現在可以采集文章!
  二、通過(guò)關(guān)鍵詞采集文章
  
  無(wú)需學(xué)習更多專(zhuān)業(yè)技能,簡(jiǎn)單幾步輕松搞定采集網(wǎng)頁(yè)數據,精準數據發(fā)布,關(guān)鍵詞用戶(hù)只需在軟件中進(jìn)行簡(jiǎn)單設置,完成后系統根據用戶(hù)設置關(guān)鍵詞進(jìn)行采集,高精度匹配內容和圖片并自動(dòng)執行文章采集發(fā)布,提供方便快捷的數據服務(wù)! !
  
  相對規則采集門(mén)檻低,無(wú)需花大量時(shí)間學(xué)習軟件操作,無(wú)需配置采集規則即可一分鐘上手,輸入關(guān)鍵詞采集.無(wú)需人工干預,將任務(wù)設置為自動(dòng)執行采集releases。幾十萬(wàn)個(gè)不同的cms網(wǎng)站可以統一管理。一個(gè)人維護數百個(gè) 網(wǎng)站文章 更新也不是問(wèn)題。
  
<p>這類(lèi)工具還是很強大的,只要輸入關(guān)鍵詞采集,完全可以通過(guò)軟件 查看全部

  實(shí)時(shí)文章采集(一下zblog插件采集方式(一)(1)_國內_光明網(wǎng)(組圖)
)
  Zblog采集插件是為了幫助網(wǎng)站快速豐富網(wǎng)站內容;減少手動(dòng)內容發(fā)布的繁瑣;主要是給網(wǎng)站添加很多內容,方便快捷。 網(wǎng)站發(fā)布文章的時(shí)候,如果把文章一一發(fā)布到網(wǎng)上,不僅浪費時(shí)間,而且效率低下。這時(shí)候為了提高更新網(wǎng)站的效率,出現了zblog采集插件,但是常規的zblog插件都需要寫(xiě)規則。今天博主就來(lái)說(shuō)說(shuō)zblog插件采集方法:第一個(gè)是付費插件,需要寫(xiě)規則,第二個(gè)是免費工具,不需要寫(xiě)規則!
  
  Zblog采集規則介紹
  第一步:創(chuàng )建一個(gè)新的文章采集節點(diǎn)
  登錄后臺,點(diǎn)擊采集>>>采集節點(diǎn)管理>>添加新節點(diǎn)>>選擇普通文章>>確定
  第二步:填寫(xiě)采集列表規則
  1.節點(diǎn)名:隨便(注意要能區分,因為節點(diǎn)太多可能會(huì )造成混亂)
  2.查看目標頁(yè)面的編碼:查看目標頁(yè)面的編碼
  3.匹配網(wǎng)址:進(jìn)入采集目標列表頁(yè)面查看其列表規則!比如很多網(wǎng)站列表的首頁(yè)和其他的內頁(yè)差別很大,所以我一般不會(huì )采集定位到列表的首頁(yè)!
  
  最好從第二頁(yè)開(kāi)始(雖然第一頁(yè)可以找到,但是很多網(wǎng)站根本沒(méi)有第一頁(yè),這里就不講怎么找到第一頁(yè)了)
  4.區域末尾的HTML:在采集目標列表頁(yè)面打開(kāi)源代碼!在 文章 的標題附近尋找一個(gè) html 標記,該標記將是 采集,并且對于該頁(yè)面和其他將成為 采集 的頁(yè)面來(lái)說(shuō)是唯一的!
  再次按下一步!輸入并填寫(xiě)采集內容規則
  第 3 步:采集內容規則
  1.文章標題:尋找文章標題前后兩個(gè)標簽,即可識別標題!
  2.文章內容:尋找文章內容前后的兩個(gè)標簽來(lái)識別內容!我的 采集 的 網(wǎng)站 的 文章 內容前后的唯一標簽是
  [內容]
  其他功能,不用擔心!這就是 zblog 可以訪(fǎng)問(wèn) 文章 的方式!然后,單擊以保存配置并進(jìn)行預覽。如果之前的列表規則和內容規則都寫(xiě)對了,現在可以采集文章!
  二、通過(guò)關(guān)鍵詞采集文章
  
  無(wú)需學(xué)習更多專(zhuān)業(yè)技能,簡(jiǎn)單幾步輕松搞定采集網(wǎng)頁(yè)數據,精準數據發(fā)布,關(guān)鍵詞用戶(hù)只需在軟件中進(jìn)行簡(jiǎn)單設置,完成后系統根據用戶(hù)設置關(guān)鍵詞進(jìn)行采集,高精度匹配內容和圖片并自動(dòng)執行文章采集發(fā)布,提供方便快捷的數據服務(wù)! !
  
  相對規則采集門(mén)檻低,無(wú)需花大量時(shí)間學(xué)習軟件操作,無(wú)需配置采集規則即可一分鐘上手,輸入關(guān)鍵詞采集.無(wú)需人工干預,將任務(wù)設置為自動(dòng)執行采集releases。幾十萬(wàn)個(gè)不同的cms網(wǎng)站可以統一管理。一個(gè)人維護數百個(gè) 網(wǎng)站文章 更新也不是問(wèn)題。
  
<p>這類(lèi)工具還是很強大的,只要輸入關(guān)鍵詞采集,完全可以通過(guò)軟件

實(shí)時(shí)文章采集(絕對能使你眼前一亮,通過(guò)這篇文章介紹希望你能有所收獲)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 114 次瀏覽 ? 2022-01-13 18:04 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(絕對能使你眼前一亮,通過(guò)這篇文章介紹希望你能有所收獲)
  本文文章向你展示了如何在TX1上使用OpenCV3.1實(shí)時(shí)采集視頻圖像分析。內容簡(jiǎn)潔易懂,一定會(huì )讓你眼前一亮。文章文章的詳細介紹希望你有所收獲。
  嵌入式平臺(目標): Jeston TX1
  OpenCV:OpenCV3.1
  攝像頭:USB 800W 攝像頭
  1 簡(jiǎn)介
  Jetpack3.0安裝的OpenCV是OpenCV2.4.13,而OpenCV2.4.13不支持USB攝像頭。未來(lái)NVIDIA更新的Jetpack將解決USB攝像頭支持不佳的問(wèn)題。在官方解決之前,臨時(shí)的解決辦法是自己編譯OpenCV3.1。
  2 下載 OpenCV3
  網(wǎng)址:
  點(diǎn)擊 Sources 下載源代碼:
  
  3 安裝依賴(lài)庫
  #?Some?general?development?librariessudo?apt-get?install?-y?build-essential?make?cmake?cmake-curses-gui?g++#?libav?video?input/output?development?librariessudo?apt-get?install?-y?libavformat-dev?libavutil-dev?libswscale-dev#?Video4Linux?camera?development?librariessudo?apt-get?install?-y?libv4l-dev#?Eigen3?math?development?librariessudo?apt-get?install?-y?libeigen3-dev#?OpenGL?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libglew1.6-dev#?GTK?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libgtk2.0-dev
  4 編譯安裝OpenCV3
  cd?~
mkdir?src
cd?src
unzip?~/Downloads/opencv-3.1.0.zip
cd?opencv-3.1.0mkdir?build
cd?build
cmake?-DWITH_CUDA=ON?-DCUDA_ARCH_BIN="5.3"?-DCUDA_ARCH_PTX=""?-DBUILD_TESTS=OFF?-DBUILD_PERF_TESTS=OFF?-DCUDA_FAST_MATH=ON?-DCMAKE_INSTALL_PREFIX=/home/ubuntu/opencv-3.1.0?..make?-j4?install
  5 運行 hog 例程5.1 編譯并運行例程
  cd?~/src/opencv-3.1.0/samples/gpu
g++?-o?hog?-I?/home/ubuntu/opencv-3.1.0/include?-O2?-g?-Wall?hog.cpp?-L?/home/ubuntu/opencv-3.1.0/lib?-lopencv_core?-lopencv_imgproc?-l?opencv_flann?-l?opencv_imgcodecs?-lopencv_videoio?-lopencv_highgui?-lopencv_ml?-lopencv_video?-lopencv_objdetect?-lopencv_photo?-lopencv_features2d?-lopencv_calib3d?-lopencv_stitching?-lopencv_videostab?-lopencv_shape?-lopencv_cudaobjdetect?-lopencv_cudawarping?-lopencv_cudaimgprocexport?LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATH./hog?--camera?0
  
  5.2 運行結果
  
  6 寫(xiě)一個(gè)簡(jiǎn)單的相機采集程序6.1 代碼如下
  #include???#include???using?namespace?cv;??
using?namespace?std;??
int?main(int?argc,?char**?argv)??
{??
????VideoCapture?cap("nvcamerasrc?!?video/x-raw(memory:NVMM),?width=(int)1280,?height=(int)720,format=(string)I420,?framerate=(fraction)24/1?!?nvvidconv?flip-method=2?!?video/x-raw,?format=(string)BGRx?!?videoconvert?!?video/x-raw,?format=(string)BGR?!?appsink");??if?(!cap.isOpened())??
????{??cout?=?8000)
  如下所示:
  
  以上內容是如何使用OpenCV分析TX13.1實(shí)時(shí)采集視頻圖像,你有學(xué)到什么知識或技巧嗎?如果您想學(xué)習更多技能或豐富知識儲備,請關(guān)注易宿云行業(yè)資訊頻道。 查看全部

  實(shí)時(shí)文章采集(絕對能使你眼前一亮,通過(guò)這篇文章介紹希望你能有所收獲)
  本文文章向你展示了如何在TX1上使用OpenCV3.1實(shí)時(shí)采集視頻圖像分析。內容簡(jiǎn)潔易懂,一定會(huì )讓你眼前一亮。文章文章的詳細介紹希望你有所收獲。
  嵌入式平臺(目標): Jeston TX1
  OpenCV:OpenCV3.1
  攝像頭:USB 800W 攝像頭
  1 簡(jiǎn)介
  Jetpack3.0安裝的OpenCV是OpenCV2.4.13,而OpenCV2.4.13不支持USB攝像頭。未來(lái)NVIDIA更新的Jetpack將解決USB攝像頭支持不佳的問(wèn)題。在官方解決之前,臨時(shí)的解決辦法是自己編譯OpenCV3.1。
  2 下載 OpenCV3
  網(wǎng)址:
  點(diǎn)擊 Sources 下載源代碼:
  
  3 安裝依賴(lài)庫
  #?Some?general?development?librariessudo?apt-get?install?-y?build-essential?make?cmake?cmake-curses-gui?g++#?libav?video?input/output?development?librariessudo?apt-get?install?-y?libavformat-dev?libavutil-dev?libswscale-dev#?Video4Linux?camera?development?librariessudo?apt-get?install?-y?libv4l-dev#?Eigen3?math?development?librariessudo?apt-get?install?-y?libeigen3-dev#?OpenGL?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libglew1.6-dev#?GTK?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libgtk2.0-dev
  4 編譯安裝OpenCV3
  cd?~
mkdir?src
cd?src
unzip?~/Downloads/opencv-3.1.0.zip
cd?opencv-3.1.0mkdir?build
cd?build
cmake?-DWITH_CUDA=ON?-DCUDA_ARCH_BIN="5.3"?-DCUDA_ARCH_PTX=""?-DBUILD_TESTS=OFF?-DBUILD_PERF_TESTS=OFF?-DCUDA_FAST_MATH=ON?-DCMAKE_INSTALL_PREFIX=/home/ubuntu/opencv-3.1.0?..make?-j4?install
  5 運行 hog 例程5.1 編譯并運行例程
  cd?~/src/opencv-3.1.0/samples/gpu
g++?-o?hog?-I?/home/ubuntu/opencv-3.1.0/include?-O2?-g?-Wall?hog.cpp?-L?/home/ubuntu/opencv-3.1.0/lib?-lopencv_core?-lopencv_imgproc?-l?opencv_flann?-l?opencv_imgcodecs?-lopencv_videoio?-lopencv_highgui?-lopencv_ml?-lopencv_video?-lopencv_objdetect?-lopencv_photo?-lopencv_features2d?-lopencv_calib3d?-lopencv_stitching?-lopencv_videostab?-lopencv_shape?-lopencv_cudaobjdetect?-lopencv_cudawarping?-lopencv_cudaimgprocexport?LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATH./hog?--camera?0
  
  5.2 運行結果
  
  6 寫(xiě)一個(gè)簡(jiǎn)單的相機采集程序6.1 代碼如下
  #include???#include???using?namespace?cv;??
using?namespace?std;??
int?main(int?argc,?char**?argv)??
{??
????VideoCapture?cap("nvcamerasrc?!?video/x-raw(memory:NVMM),?width=(int)1280,?height=(int)720,format=(string)I420,?framerate=(fraction)24/1?!?nvvidconv?flip-method=2?!?video/x-raw,?format=(string)BGRx?!?videoconvert?!?video/x-raw,?format=(string)BGR?!?appsink");??if?(!cap.isOpened())??
????{??cout?=?8000)
  如下所示:
  
  以上內容是如何使用OpenCV分析TX13.1實(shí)時(shí)采集視頻圖像,你有學(xué)到什么知識或技巧嗎?如果您想學(xué)習更多技能或豐富知識儲備,請關(guān)注易宿云行業(yè)資訊頻道。

實(shí)時(shí)文章采集( Oxylabs定位的3款工具:SERPAPI、電商爬蟲(chóng)API )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 230 次瀏覽 ? 2022-01-08 15:00 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(
Oxylabs定位的3款工具:SERPAPI、電商爬蟲(chóng)API
)
  
  在過(guò)去的幾個(gè)月里,我們一直在改進(jìn)我們的實(shí)時(shí)爬蟲(chóng)產(chǎn)品?,F在,Oxylabs 很高興地宣布,我們即將帶來(lái)一款新的爬蟲(chóng)產(chǎn)品!雖然上一代產(chǎn)品的單一解決方案非常出色,但為了滿(mǎn)足客戶(hù)不同場(chǎng)景的需求,我們將推出3款定位不同的工具:SERP爬蟲(chóng)API、電商爬蟲(chóng)API和網(wǎng)頁(yè)爬蟲(chóng)API。今天的文章文章帶你了解新品的獨特之處。
  有什么變化?
  實(shí)時(shí)爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)行業(yè)最早的數據采集工具之一,專(zhuān)用于大規模的采集電子商務(wù)公共數據和搜索引擎數據。它幫助許多公司輕松采集公共數據,現在我們的產(chǎn)品表現更好。
  “我們針對實(shí)時(shí)爬蟲(chóng)的不同功能,開(kāi)發(fā)了3款專(zhuān)用爬蟲(chóng)工具,這樣我們就可以有針對性地進(jìn)行產(chǎn)品開(kāi)發(fā),從而為客戶(hù)提供整體性能和用戶(hù)體驗更好的產(chǎn)品?!?br />   – Aleksandras ?ul?enko,Oxylabs 的 Crawler API 產(chǎn)品經(jīng)理
  從現在開(kāi)始,實(shí)時(shí)爬蟲(chóng)已經(jīng)衍生為一組健壯的爬蟲(chóng) API,每個(gè) API 都有特定的優(yōu)勢:
  ● SERP爬蟲(chóng)API
  ● 電商爬蟲(chóng)API
  ● 網(wǎng)絡(luò )爬蟲(chóng)API
  產(chǎn)品功能優(yōu)化
  所有爬蟲(chóng) API 的共同特點(diǎn)和優(yōu)勢在于,它們可以幫助企業(yè)輕松采集公開(kāi)數據:
  ● 100% 的數據傳輸成功率
  ● 專(zhuān)利代理人切換工具
  ● 高擴展性
  ● 可輕松集成
  ● 超過(guò)1.02億個(gè)IP
  ● 以用戶(hù)首選格式(AWS S3 或 GCS)交付數據
  ● 24/7 實(shí)時(shí)支持
  當然,每種產(chǎn)品都有自己的針對性?xún)?yōu)勢:
  SERP 爬蟲(chóng) API
  電商爬蟲(chóng)API
  網(wǎng)絡(luò )爬蟲(chóng) API
  ●本地化搜索結果●實(shí)時(shí)可靠的數據●不受SERP布局變化的影響
  ●數以千計的電子商務(wù)公司網(wǎng)站可用于數據捕獲●自適應解析器●JSON格式的結構化數據
  ●請求參數可自定義●JavaScript渲染●便捷的數據傳遞
  “最好的部分是爬蟲(chóng) API 將您從管理代理的麻煩中解放出來(lái),并專(zhuān)注于數據分析?!?br />   氧實(shí)驗室
  新面貌
  所有 3 個(gè)爬蟲(chóng) API 現在都有新徽標,顯示其特定用途,以便于識別:
  
  繼續之前的集成
  為了方便我們現有客戶(hù)和在本次更新之前嘗試過(guò)我們產(chǎn)品的潛在客戶(hù),我們決定使用之前的集成和身份驗證方法,以及相同的請求參數。
  SERP爬蟲(chóng)API認證方式
  SERP Crawler API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。這是啟用此工具的最簡(jiǎn)單方法之一。以下代碼示例展示了如何通過(guò)實(shí)時(shí)發(fā)送 GET 請求從搜索引擎獲取公共數據。有關(guān)更多信息,請查看 SERP Crawler API 快速指南。
  
  *對于此示例,您必須指定確切的來(lái)源才能找到可用的來(lái)源。有關(guān)詳細信息,請參閱 SERP Crawler API 文檔。
  電商爬蟲(chóng)API認證方式
  電子商務(wù)爬蟲(chóng) API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。以下代碼示例顯示了如何將 GET 請求發(fā)送到 .
   查看全部

  實(shí)時(shí)文章采集(
Oxylabs定位的3款工具:SERPAPI、電商爬蟲(chóng)API
)
  
  在過(guò)去的幾個(gè)月里,我們一直在改進(jìn)我們的實(shí)時(shí)爬蟲(chóng)產(chǎn)品?,F在,Oxylabs 很高興地宣布,我們即將帶來(lái)一款新的爬蟲(chóng)產(chǎn)品!雖然上一代產(chǎn)品的單一解決方案非常出色,但為了滿(mǎn)足客戶(hù)不同場(chǎng)景的需求,我們將推出3款定位不同的工具:SERP爬蟲(chóng)API、電商爬蟲(chóng)API和網(wǎng)頁(yè)爬蟲(chóng)API。今天的文章文章帶你了解新品的獨特之處。
  有什么變化?
  實(shí)時(shí)爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)行業(yè)最早的數據采集工具之一,專(zhuān)用于大規模的采集電子商務(wù)公共數據和搜索引擎數據。它幫助許多公司輕松采集公共數據,現在我們的產(chǎn)品表現更好。
  “我們針對實(shí)時(shí)爬蟲(chóng)的不同功能,開(kāi)發(fā)了3款專(zhuān)用爬蟲(chóng)工具,這樣我們就可以有針對性地進(jìn)行產(chǎn)品開(kāi)發(fā),從而為客戶(hù)提供整體性能和用戶(hù)體驗更好的產(chǎn)品?!?br />   – Aleksandras ?ul?enko,Oxylabs 的 Crawler API 產(chǎn)品經(jīng)理
  從現在開(kāi)始,實(shí)時(shí)爬蟲(chóng)已經(jīng)衍生為一組健壯的爬蟲(chóng) API,每個(gè) API 都有特定的優(yōu)勢:
  ● SERP爬蟲(chóng)API
  ● 電商爬蟲(chóng)API
  ● 網(wǎng)絡(luò )爬蟲(chóng)API
  產(chǎn)品功能優(yōu)化
  所有爬蟲(chóng) API 的共同特點(diǎn)和優(yōu)勢在于,它們可以幫助企業(yè)輕松采集公開(kāi)數據:
  ● 100% 的數據傳輸成功率
  ● 專(zhuān)利代理人切換工具
  ● 高擴展性
  ● 可輕松集成
  ● 超過(guò)1.02億個(gè)IP
  ● 以用戶(hù)首選格式(AWS S3 或 GCS)交付數據
  ● 24/7 實(shí)時(shí)支持
  當然,每種產(chǎn)品都有自己的針對性?xún)?yōu)勢:
  SERP 爬蟲(chóng) API
  電商爬蟲(chóng)API
  網(wǎng)絡(luò )爬蟲(chóng) API
  ●本地化搜索結果●實(shí)時(shí)可靠的數據●不受SERP布局變化的影響
  ●數以千計的電子商務(wù)公司網(wǎng)站可用于數據捕獲●自適應解析器●JSON格式的結構化數據
  ●請求參數可自定義●JavaScript渲染●便捷的數據傳遞
  “最好的部分是爬蟲(chóng) API 將您從管理代理的麻煩中解放出來(lái),并專(zhuān)注于數據分析?!?br />   氧實(shí)驗室
  新面貌
  所有 3 個(gè)爬蟲(chóng) API 現在都有新徽標,顯示其特定用途,以便于識別:
  
  繼續之前的集成
  為了方便我們現有客戶(hù)和在本次更新之前嘗試過(guò)我們產(chǎn)品的潛在客戶(hù),我們決定使用之前的集成和身份驗證方法,以及相同的請求參數。
  SERP爬蟲(chóng)API認證方式
  SERP Crawler API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。這是啟用此工具的最簡(jiǎn)單方法之一。以下代碼示例展示了如何通過(guò)實(shí)時(shí)發(fā)送 GET 請求從搜索引擎獲取公共數據。有關(guān)更多信息,請查看 SERP Crawler API 快速指南。
  
  *對于此示例,您必須指定確切的來(lái)源才能找到可用的來(lái)源。有關(guān)詳細信息,請參閱 SERP Crawler API 文檔。
  電商爬蟲(chóng)API認證方式
  電子商務(wù)爬蟲(chóng) API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。以下代碼示例顯示了如何將 GET 請求發(fā)送到 .
  

實(shí)時(shí)文章采集(免費迅睿CMS采集插件怎么使用?怎么批量采集文章到迅睿)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2022-01-01 17:07 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(免費迅睿CMS采集插件怎么使用?怎么批量采集文章到迅睿)
  問(wèn):如何使用免費的迅睿cms采集插件?如何批量采集文章到迅睿cms
  答:一鍵創(chuàng )建多個(gè)采集任務(wù)實(shí)現批量文章采集發(fā)布,每個(gè)網(wǎng)站只需要設置關(guān)鍵詞即可實(shí)現自動(dòng)采集發(fā)布文章
  問(wèn):迅睿免費cms采集可以應用多少個(gè)網(wǎng)站插件?
  答:網(wǎng)站的數量沒(méi)有限制,添加新的網(wǎng)站只需要創(chuàng )建一個(gè)任務(wù)即可實(shí)現采集發(fā)布
  問(wèn)題:迅睿有多少免費的cms插件采集文章
  答案:采集每天幾千萬(wàn)條數據(根據我自己的網(wǎng)站設置)
  問(wèn):如何發(fā)布免費的迅睿cms插件采集?
  答:該工具有迅睿cms自動(dòng)發(fā)布功能,打開(kāi)采集后可以自動(dòng)發(fā)布到站點(diǎn)。迅睿cms新舊版本都可以使用,不用擔心網(wǎng)站版本沒(méi)有更新,采集功能不可用!
  問(wèn):免費的迅睿cms采集插件安裝復雜嗎?
  答:直接在本地電腦上安裝,雙擊直接運行!由于是本地采集工具,與服務(wù)器無(wú)關(guān),不會(huì )造成服務(wù)器死機,從而保證服務(wù)器有良好的訪(fǎng)問(wèn)速度,有利于搜索的爬取引擎!
  
  一、免費迅睿cms采集插件如何使用?
  
  1、打開(kāi)軟件導入關(guān)鍵詞到采集文章,自動(dòng)發(fā)布網(wǎng)站
  2、可以同時(shí)創(chuàng )建數百個(gè)采集發(fā)布任務(wù)
  二、免費迅睿cms發(fā)布插件如何使用?
  
  1、 直接通過(guò)迅睿cms發(fā)布工具發(fā)布,可以直接查看發(fā)布的數據數量文章,發(fā)布數量文章,并設置每日發(fā)布總量,是否偽原創(chuàng ),發(fā)布網(wǎng)址等,同時(shí)也支持除迅銳以外的所有主流cms平臺。還為SEO人員配備了定時(shí)發(fā)布功能(設置定時(shí)發(fā)帖文章,讓搜索引擎抓取更頻繁,讓整個(gè)網(wǎng)站持續抓取收錄提升排名,一 文章 @網(wǎng)站排名越高,流量越高。)
  2、發(fā)布工具還支持Empire、易游、ZBLOG、織夢(mèng)、迅睿cms、PB、Apple、搜外等各大專(zhuān)業(yè)cms
  3、自動(dòng)內鏈、標題插入關(guān)鍵詞、內容插入關(guān)鍵詞、隨機作者、隨機閱讀數
  
  以后就不用擔心了,因為網(wǎng)站太多了,你又著(zhù)急了!千萬(wàn)不要用它切換回網(wǎng)站后端,反復登錄后端很痛苦。再也不用擔心 網(wǎng)站 沒(méi)有內容了。
  網(wǎng)站的流量取決于網(wǎng)站收錄的比例。 收錄關(guān)鍵詞越多,排名越高,流量越大。
  為什么那么多人選擇迅銳cms?
  迅睿cms免費開(kāi)源系統是一款簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)者框架管理軟件。本軟件是基于PHP7語(yǔ)言使用CodeIgniter4創(chuàng )建的。為電腦、手機、APP提供多種接口和一體化操作方式,不會(huì )因用戶(hù)二次開(kāi)發(fā)而損壞程序核心。 web和PHP建站功能都可以完美運行,堪稱(chēng)PHP通用建站框架。 而迅睿cms采用了由研發(fā)資助的全新模板技術(shù),可以幫助用戶(hù)快速分離MVC設計模型的業(yè)務(wù)層和表現層,支持原生態(tài)PHP語(yǔ)法,支持CI框架語(yǔ)法,以及各種模板方面。用戶(hù)只要分析一次,就可以快速添加和下次使用,讓您設計出理想的模板。迅睿cms免費開(kāi)源系統,可以自定義各種頁(yè)面、表格、鏈接表的文本字段,讓你自己做的更好網(wǎng)站,如果你有需要這個(gè)的小伙伴是的
  
  看完這篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!你的一舉一動(dòng)都會(huì )成為編輯源源不斷的動(dòng)力! 查看全部

  實(shí)時(shí)文章采集(免費迅睿CMS采集插件怎么使用?怎么批量采集文章到迅睿)
  問(wèn):如何使用免費的迅睿cms采集插件?如何批量采集文章到迅睿cms
  答:一鍵創(chuàng )建多個(gè)采集任務(wù)實(shí)現批量文章采集發(fā)布,每個(gè)網(wǎng)站只需要設置關(guān)鍵詞即可實(shí)現自動(dòng)采集發(fā)布文章
  問(wèn):迅睿免費cms采集可以應用多少個(gè)網(wǎng)站插件?
  答:網(wǎng)站的數量沒(méi)有限制,添加新的網(wǎng)站只需要創(chuàng )建一個(gè)任務(wù)即可實(shí)現采集發(fā)布
  問(wèn)題:迅睿有多少免費的cms插件采集文章
  答案:采集每天幾千萬(wàn)條數據(根據我自己的網(wǎng)站設置)
  問(wèn):如何發(fā)布免費的迅睿cms插件采集?
  答:該工具有迅睿cms自動(dòng)發(fā)布功能,打開(kāi)采集后可以自動(dòng)發(fā)布到站點(diǎn)。迅睿cms新舊版本都可以使用,不用擔心網(wǎng)站版本沒(méi)有更新,采集功能不可用!
  問(wèn):免費的迅睿cms采集插件安裝復雜嗎?
  答:直接在本地電腦上安裝,雙擊直接運行!由于是本地采集工具,與服務(wù)器無(wú)關(guān),不會(huì )造成服務(wù)器死機,從而保證服務(wù)器有良好的訪(fǎng)問(wèn)速度,有利于搜索的爬取引擎!
  
  一、免費迅睿cms采集插件如何使用?
  
  1、打開(kāi)軟件導入關(guān)鍵詞到采集文章,自動(dòng)發(fā)布網(wǎng)站
  2、可以同時(shí)創(chuàng )建數百個(gè)采集發(fā)布任務(wù)
  二、免費迅睿cms發(fā)布插件如何使用?
  
  1、 直接通過(guò)迅睿cms發(fā)布工具發(fā)布,可以直接查看發(fā)布的數據數量文章,發(fā)布數量文章,并設置每日發(fā)布總量,是否偽原創(chuàng ),發(fā)布網(wǎng)址等,同時(shí)也支持除迅銳以外的所有主流cms平臺。還為SEO人員配備了定時(shí)發(fā)布功能(設置定時(shí)發(fā)帖文章,讓搜索引擎抓取更頻繁,讓整個(gè)網(wǎng)站持續抓取收錄提升排名,一 文章 @網(wǎng)站排名越高,流量越高。)
  2、發(fā)布工具還支持Empire、易游、ZBLOG、織夢(mèng)、迅睿cms、PB、Apple、搜外等各大專(zhuān)業(yè)cms
  3、自動(dòng)內鏈、標題插入關(guān)鍵詞、內容插入關(guān)鍵詞、隨機作者、隨機閱讀數
  
  以后就不用擔心了,因為網(wǎng)站太多了,你又著(zhù)急了!千萬(wàn)不要用它切換回網(wǎng)站后端,反復登錄后端很痛苦。再也不用擔心 網(wǎng)站 沒(méi)有內容了。
  網(wǎng)站的流量取決于網(wǎng)站收錄的比例。 收錄關(guān)鍵詞越多,排名越高,流量越大。
  為什么那么多人選擇迅銳cms?
  迅睿cms免費開(kāi)源系統是一款簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)者框架管理軟件。本軟件是基于PHP7語(yǔ)言使用CodeIgniter4創(chuàng )建的。為電腦、手機、APP提供多種接口和一體化操作方式,不會(huì )因用戶(hù)二次開(kāi)發(fā)而損壞程序核心。 web和PHP建站功能都可以完美運行,堪稱(chēng)PHP通用建站框架。 而迅睿cms采用了由研發(fā)資助的全新模板技術(shù),可以幫助用戶(hù)快速分離MVC設計模型的業(yè)務(wù)層和表現層,支持原生態(tài)PHP語(yǔ)法,支持CI框架語(yǔ)法,以及各種模板方面。用戶(hù)只要分析一次,就可以快速添加和下次使用,讓您設計出理想的模板。迅睿cms免費開(kāi)源系統,可以自定義各種頁(yè)面、表格、鏈接表的文本字段,讓你自己做的更好網(wǎng)站,如果你有需要這個(gè)的小伙伴是的
  
  看完這篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!你的一舉一動(dòng)都會(huì )成為編輯源源不斷的動(dòng)力!

實(shí)時(shí)文章采集(愛(ài)奇藝開(kāi)放式故障值守系統)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2021-12-26 13:03 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(愛(ài)奇藝開(kāi)放式故障值守系統)
  本文為愛(ài)奇藝臺灣智能內容系列手稿之首。我們將繼續為您帶來(lái)愛(ài)奇藝智能內容生產(chǎn)運營(yíng)的一系列探索,敬請期待。
  無(wú)人值守系統是愛(ài)奇藝內容中心的重要智能組件。
  首先,對于業(yè)務(wù)密度高、流程長(cháng)、業(yè)務(wù)多的業(yè)務(wù)系統,在實(shí)際運行中,故障的發(fā)生是普遍現象,在某種程度上也是一種正常狀態(tài)。因此,能夠及時(shí)發(fā)現和處理故障是在線(xiàn)業(yè)務(wù)系統的必然要求。常規方法是報警+人工干預。這種方式導致需要有人值班,人工干預的及時(shí)性得不到保障,人力成本必然增加。
  愛(ài)奇藝內容中臺也面臨著(zhù)上述問(wèn)題。試圖通過(guò)技術(shù)手段解決系統復雜性帶來(lái)的問(wèn)題,是本系統的基本思想,也是中臺智能化的一個(gè)重要方向。與傳統的監控系統相比,我們需要更多的智能服務(wù)來(lái)完成監控,同時(shí)兼顧故障的智能處理,同時(shí)方便其他處理方式的介入。無(wú)人值守系統是愛(ài)奇藝內容中心研發(fā)團隊在上述背景下設計開(kāi)發(fā)的智能開(kāi)放式故障值班系統。
  一、無(wú)人值守的目標
  無(wú)人值守系統的目標是協(xié)助業(yè)務(wù)系統實(shí)現流程自動(dòng)化、結果可靠、無(wú)需人工值守。
  在項目設計之初,我們的初衷是:愛(ài)奇藝中泰節目制作過(guò)程中,無(wú)需人工看盤(pán),確保節目制作過(guò)程正常,按時(shí)上線(xiàn)。出現問(wèn)題時(shí),可及時(shí)發(fā)現、自動(dòng)修復、風(fēng)險提示、通知人工處理等,確保程序按時(shí)上線(xiàn)。
  基于系統的目標,系統需要具備以下能力:
  
  二、整體結構介紹
  總結起來(lái),基本思路是:首先實(shí)現業(yè)務(wù)系統運行的監控功能,將業(yè)務(wù)運行數據和異常情況采集到無(wú)人值守系統,在此基礎上,通過(guò)對數據的實(shí)時(shí)智能分析,及時(shí)發(fā)現系統運行故障和業(yè)務(wù)數據異常。然后交給故障和業(yè)務(wù)異常處理模塊進(jìn)行異常的智能處理,從而實(shí)現異常和故障的自動(dòng)處理,最終實(shí)現無(wú)人值守、智能系統恢復的目的。
  
  系統運行流程介紹:
  生產(chǎn)環(huán)節數據采集到無(wú)人值守系統,主要通過(guò)愛(ài)奇藝的眾泰數據中心采集。業(yè)務(wù)系統向中臺數據中心下發(fā)數據,無(wú)人值守系統從中臺數據中心采集數據。決策引擎對采集到的數據進(jìn)行實(shí)時(shí)分析,根據SLA、異常、閾值的配置對異常數據進(jìn)行分析,形成單獨的事件。事件被傳遞到事件處理引擎 Beacon。事件處理引擎根據不同事件配置的處理流程進(jìn)行處理。事件處理流程完全可配置,支持故障修復、告警通知、故障恢復檢測、故障統計等。訓練引擎利用中泰數據中心的離線(xiàn)數據訓練系統故障分析模型,然后將模型數據提供給決策引擎進(jìn)行決策。三、核心模塊介紹
  下面對系統的核心功能模塊一一介紹:
  3.1 運營(yíng)數據實(shí)時(shí)采集模塊(基于中泰數據中心)
  通過(guò)愛(ài)奇藝內容中臺團隊實(shí)施的OLTP基礎組件(中臺數據中心),實(shí)時(shí)采集各功能模塊的運行狀態(tài)以及業(yè)務(wù)數據的進(jìn)度和狀態(tài)。OLTP基礎組件(臺灣中部數據中心)為愛(ài)奇藝內容的實(shí)時(shí)分析和處理提供支持。運行在中心平臺的各種數據都可以方便的下發(fā)到這個(gè)組件上,并且還提供了數據監控和查詢(xún)功能,可以支持TB整合海量數據的管理和維護。中泰數據中心系統將在后續系列文章中詳細介紹,此處不再展開(kāi)。
  數據采集??過(guò)程:
  
  以專(zhuān)業(yè)內容制作流程(PPC)為例:
  生產(chǎn)和交付:生產(chǎn)服務(wù)運行過(guò)程中,生產(chǎn)狀態(tài)和件的生產(chǎn)狀態(tài)將交付到中臺數據中心。
  業(yè)務(wù)流制作交付:業(yè)務(wù)流制作過(guò)程中,視頻流制作狀態(tài)、音頻制作狀態(tài)、字幕制作狀態(tài)下發(fā)至中臺數據中心。
  審核下發(fā):審核系統將審核狀態(tài)、審核時(shí)間等信息下發(fā)給眾泰數據中心。
  發(fā)布與交付:發(fā)布系統會(huì )在平臺數據中列出碼流的發(fā)布狀態(tài)。
  中泰數據中心獲取數據后,向RMQ隊列發(fā)送數據變化通知,無(wú)人值守系統監控數據變化,將數據拉取到無(wú)人值守系統。為獲取程序從生產(chǎn)到最終發(fā)布的運行數據,完成數據采集。
  3.2 決策引擎
  基于采集到的數據,對系統和業(yè)務(wù)運行進(jìn)行實(shí)時(shí)分析,決策引擎主要提供以下功能:
  錯誤檢測:實(shí)時(shí)檢測系統和業(yè)務(wù)錯誤,統一管理錯誤,發(fā)送事件。
  超時(shí)告警:基于業(yè)務(wù)節點(diǎn)的SLA配置,檢測和管理超時(shí)業(yè)務(wù)行為,并發(fā)送事件。
  可配置策略:主要包括業(yè)務(wù)功能的無(wú)人值守訪(fǎng)問(wèn)配置和業(yè)務(wù)功能的SLA配置、權限配置、統計通知配置。
  決策引擎的運行是在服務(wù)工作的同時(shí)采集
進(jìn)度和系統運行信息,不斷檢查服務(wù)進(jìn)度是否正常,有無(wú)異?;虺瑫r(shí)情況,以便及時(shí)發(fā)現問(wèn)題一旦出現問(wèn)題。
  按照下圖的邏輯繼續工作:
  服務(wù)模塊啟動(dòng)后,當發(fā)現失敗或超時(shí)時(shí),將失敗和超時(shí)事件通知外部。同時(shí)檢測系統業(yè)務(wù)單元的運行進(jìn)度,判斷進(jìn)度是否正常,并向外界通報異常進(jìn)度滯后事件。
  
  上面介紹了邏輯流程,下面介紹服務(wù)模塊的操作邏輯:
  服務(wù)模塊的主要概念:
  數據來(lái)源:數據來(lái)源主要是中臺數據中心,部分廣播控制數據采集自RMQ。數據源的數據由業(yè)務(wù)系統下發(fā)給眾泰數據中心。
  流程:完成從數據源到無(wú)人值守系統的數據采集。不同的業(yè)務(wù)有不同的流程,不同的業(yè)務(wù)有不同的采集和處理方式。
  過(guò)濾:完成數據過(guò)濾。有些采集到的數據是系統不需要的,有些字段是不需要關(guān)心的。過(guò)濾器負責過(guò)濾掉無(wú)效數據。
  Transform:數據轉換,統一轉換為決策所需的數據結構。
  Rule模塊:規則的執行,承擔transform數據,執行配置好的規則,輸出成功、失敗、啟動(dòng)三個(gè)規則結果。
  決策模塊:決策模塊進(jìn)行超時(shí)判斷。超時(shí)判斷不同于普通的成功和失敗。需要不斷的比較當前時(shí)間和進(jìn)度來(lái)判斷任務(wù)是否超時(shí)。
  延遲消息模塊:通過(guò)延遲消息,在未來(lái)的某個(gè)時(shí)間用來(lái)檢查業(yè)務(wù)操作是否超時(shí)。
  Sink回寫(xiě):將超時(shí)、超出預期在線(xiàn)時(shí)間等結論回寫(xiě)數據源。
  服務(wù)模塊按照上述概念的順序運行,將運行中發(fā)現的事件傳遞到外部。下圖:
  
  3.3 Beacon,事件處理引擎
  事件處理引擎Beacon是自主研發(fā)的模塊,從決策引擎接收事件,并在一個(gè)流程中進(jìn)行處理。對于不同的事件,處理方法有很大的不同。比如常見(jiàn)的轉碼異常就有50多種,根據處理方式的不同,分為很多組。每組都有不同的處理程序。通知不同的研發(fā)人員,通知模塊的內容不同。. 有的事件有規范的治愈,有的沒(méi)有治愈,需要通知業(yè)務(wù)人員。針對這種多樣化的需求,專(zhuān)門(mén)設計了事件處理引擎(Beacon)進(jìn)行無(wú)人值守事件處理。引擎支持流程的配置和定制,并預留了高抽象的業(yè)務(wù)對接接口、處理能力擴展方式、流程配置方式。最大限度地降低支持新業(yè)務(wù)的成本。
  常見(jiàn)故障以事件的形式發(fā)送到 Beacon 處理引擎。
  基本結構:
  事件處理引擎主要有以下幾個(gè)部分:
  上下文功能:流程執行過(guò)程中上下文參數的獲取和存儲。上下文的保存和獲取在Step基類(lèi)中實(shí)現。
  執行引擎:一個(gè)簡(jiǎn)單可靠的執行引擎,收錄
流程執行、執行延遲、執行日志等基本功能,可以執行索引Step類(lèi)型對象。
  流程配置:JSON格式的流程配置,包括Step、StopStrategy、StepAction、WaitTimeAfter等概念,流程按照StepIndex的順序執行。
  Step:Steps,steps是組成流程的單元,每一步都會(huì )執行配置好的StepAction和StopStrategy。
  StopStrategy:進(jìn)程終止判斷策略,Step類(lèi)的子類(lèi),繼承context函數。根據配置的狀態(tài),確定事件處理的最終形式,例如故障是否恢復。
  StepAction:要執行的Action,Step類(lèi)的子類(lèi),如發(fā)送郵件、發(fā)送消息、調用業(yè)務(wù)接口等,都可以打包成StepAction。
  WaitTimeAfter:本步執行完畢后,執行下一步的等待時(shí)間。
  郵件等通知功能的對接:與企業(yè)郵件系統等對接,這是通知功能的基本組成部分。
  業(yè)務(wù)功能組件:業(yè)務(wù)功能組件是構成處理流程的基礎組件,是系統處理能力的載體。為支持新業(yè)務(wù)問(wèn)題的處理,需要在業(yè)務(wù)功能組件池中擴展流程處理引擎,擴展無(wú)人值守處理能力。
  
  下面是一個(gè)簡(jiǎn)單的進(jìn)程配置示例:
  
  在實(shí)際使用過(guò)程中,針對特定事件,配置故障處理Action和治愈判斷的StopStrategy,實(shí)現故障的自恢復和治愈。這里的失敗實(shí)際上是一種事件。最后,系統可以根據運行數據分析故障數量和固化百分比。
  四、機器學(xué)習應用:生產(chǎn)時(shí)間估算
  根據無(wú)人值守系統的目標設計,無(wú)人值守系統應提供對生產(chǎn)過(guò)程的預見(jiàn)性管理,以達到業(yè)務(wù)運營(yíng)的可預見(jiàn)目的?;诓杉?br /> 到的數據,應用機器學(xué)習技術(shù)訓練各種預測模型,針對耗時(shí)的業(yè)務(wù)運營(yíng)提供各種預測能力,提升無(wú)人值守體驗。
  注意:無(wú)人值守系統的預測模型只適用于資源穩定或有保障的任務(wù),沒(méi)有考慮資源變化對運行時(shí)間的影響。
  以下是對預計生產(chǎn)時(shí)間的解釋?zhuān)?br />   問(wèn)題類(lèi)型分析:無(wú)人值守系統可以獲得豐富的視頻制作歷史數據,期望形成特征向量,用歷史數據計算訓練模型,估計視頻制作完成時(shí)間進(jìn)行剪輯。
  
  特征分析:排除空數據,過(guò)濾有價(jià)值的特征。
  例如:類(lèi)別特征:
  'businessType', "channel", 'cloudEncode', 'trancodeType', "priority", "programType",
  “serviceCode”、“needAIInsertFrame”、“needAudit”、“bitrateCode”、“平臺”、“分辨率”...
  數字特征:'持續時(shí)間'
  分類(lèi)特征值分布分析
  
  算法選擇:
  訓練數據用于去除異常值,使用XGBoost回歸模型。
  XGBoost:實(shí)現了GBDT算法,在算法和工程上做了很多改進(jìn),(GBDT(Gradient Boosting Decision Tree)梯度提升決策樹(shù))。所以它被稱(chēng)為 X (Extreme) GBoosted。
  它的基本思想是將基礎分類(lèi)器逐層疊加。每一層在訓練時(shí),都會(huì )為上一層基分類(lèi)器的樣本調整不同的權重。在測試過(guò)程中,根據各層分類(lèi)器結果的權重得到最終結果。所有弱分類(lèi)器的結果之和等于預測值,然后下一個(gè)弱分類(lèi)器將誤差函數的殘差擬合到預測值(這個(gè)殘差就是預測值與真實(shí)值之間的誤差)。
  
  五、業(yè)務(wù)系統反饋
  無(wú)人值守系統為所有連接的業(yè)務(wù)系統生成日常業(yè)務(wù)系統運行狀態(tài)報告,并推送到業(yè)務(wù)系統。數據主要包括錯誤、故障統計數據和詳細數據,以及是否滿(mǎn)足SLA等信息。業(yè)務(wù)系統根據無(wú)人值守反饋的運營(yíng)數據進(jìn)行業(yè)務(wù)改進(jìn)和系統優(yōu)化?;谶@種方式,業(yè)務(wù)系統不斷升級改造。
  以下是日常經(jīng)營(yíng)狀況報告的內容示例:
  
  六、在線(xiàn)效果
  在愛(ài)奇藝,無(wú)人值守系統已經(jīng)覆蓋了愛(ài)奇藝內容中期的重要制作環(huán)節,為每天數十萬(wàn)節目的制作提供了可靠的報告。無(wú)人值守率達到99%以上。累計發(fā)現問(wèn)題3000多道,自動(dòng)處理2800多道。大大節省人工成本,提供系統運行穩定性和準時(shí)節目在線(xiàn)率。
  七、未來(lái)方向
  未來(lái),我們希望能夠基于無(wú)人值守采集的數據,提供更加智能的分析,主動(dòng)發(fā)現業(yè)務(wù)系統問(wèn)題,預警并提前解決。
  此外,該系統目前僅針對點(diǎn)事件值班。未來(lái),該項目將以值班和問(wèn)題處理為一體,提供從點(diǎn)到線(xiàn)到面的全方位值班服務(wù)。比如以程序為粒度,可以提供更智能的中斷、恢復等能力,后者更勝一籌。 查看全部

  實(shí)時(shí)文章采集(愛(ài)奇藝開(kāi)放式故障值守系統)
  本文為愛(ài)奇藝臺灣智能內容系列手稿之首。我們將繼續為您帶來(lái)愛(ài)奇藝智能內容生產(chǎn)運營(yíng)的一系列探索,敬請期待。
  無(wú)人值守系統是愛(ài)奇藝內容中心的重要智能組件。
  首先,對于業(yè)務(wù)密度高、流程長(cháng)、業(yè)務(wù)多的業(yè)務(wù)系統,在實(shí)際運行中,故障的發(fā)生是普遍現象,在某種程度上也是一種正常狀態(tài)。因此,能夠及時(shí)發(fā)現和處理故障是在線(xiàn)業(yè)務(wù)系統的必然要求。常規方法是報警+人工干預。這種方式導致需要有人值班,人工干預的及時(shí)性得不到保障,人力成本必然增加。
  愛(ài)奇藝內容中臺也面臨著(zhù)上述問(wèn)題。試圖通過(guò)技術(shù)手段解決系統復雜性帶來(lái)的問(wèn)題,是本系統的基本思想,也是中臺智能化的一個(gè)重要方向。與傳統的監控系統相比,我們需要更多的智能服務(wù)來(lái)完成監控,同時(shí)兼顧故障的智能處理,同時(shí)方便其他處理方式的介入。無(wú)人值守系統是愛(ài)奇藝內容中心研發(fā)團隊在上述背景下設計開(kāi)發(fā)的智能開(kāi)放式故障值班系統。
  一、無(wú)人值守的目標
  無(wú)人值守系統的目標是協(xié)助業(yè)務(wù)系統實(shí)現流程自動(dòng)化、結果可靠、無(wú)需人工值守。
  在項目設計之初,我們的初衷是:愛(ài)奇藝中泰節目制作過(guò)程中,無(wú)需人工看盤(pán),確保節目制作過(guò)程正常,按時(shí)上線(xiàn)。出現問(wèn)題時(shí),可及時(shí)發(fā)現、自動(dòng)修復、風(fēng)險提示、通知人工處理等,確保程序按時(shí)上線(xiàn)。
  基于系統的目標,系統需要具備以下能力:
  
  二、整體結構介紹
  總結起來(lái),基本思路是:首先實(shí)現業(yè)務(wù)系統運行的監控功能,將業(yè)務(wù)運行數據和異常情況采集到無(wú)人值守系統,在此基礎上,通過(guò)對數據的實(shí)時(shí)智能分析,及時(shí)發(fā)現系統運行故障和業(yè)務(wù)數據異常。然后交給故障和業(yè)務(wù)異常處理模塊進(jìn)行異常的智能處理,從而實(shí)現異常和故障的自動(dòng)處理,最終實(shí)現無(wú)人值守、智能系統恢復的目的。
  
  系統運行流程介紹:
  生產(chǎn)環(huán)節數據采集到無(wú)人值守系統,主要通過(guò)愛(ài)奇藝的眾泰數據中心采集。業(yè)務(wù)系統向中臺數據中心下發(fā)數據,無(wú)人值守系統從中臺數據中心采集數據。決策引擎對采集到的數據進(jìn)行實(shí)時(shí)分析,根據SLA、異常、閾值的配置對異常數據進(jìn)行分析,形成單獨的事件。事件被傳遞到事件處理引擎 Beacon。事件處理引擎根據不同事件配置的處理流程進(jìn)行處理。事件處理流程完全可配置,支持故障修復、告警通知、故障恢復檢測、故障統計等。訓練引擎利用中泰數據中心的離線(xiàn)數據訓練系統故障分析模型,然后將模型數據提供給決策引擎進(jìn)行決策。三、核心模塊介紹
  下面對系統的核心功能模塊一一介紹:
  3.1 運營(yíng)數據實(shí)時(shí)采集模塊(基于中泰數據中心)
  通過(guò)愛(ài)奇藝內容中臺團隊實(shí)施的OLTP基礎組件(中臺數據中心),實(shí)時(shí)采集各功能模塊的運行狀態(tài)以及業(yè)務(wù)數據的進(jìn)度和狀態(tài)。OLTP基礎組件(臺灣中部數據中心)為愛(ài)奇藝內容的實(shí)時(shí)分析和處理提供支持。運行在中心平臺的各種數據都可以方便的下發(fā)到這個(gè)組件上,并且還提供了數據監控和查詢(xún)功能,可以支持TB整合海量數據的管理和維護。中泰數據中心系統將在后續系列文章中詳細介紹,此處不再展開(kāi)。
  數據采集??過(guò)程:
  
  以專(zhuān)業(yè)內容制作流程(PPC)為例:
  生產(chǎn)和交付:生產(chǎn)服務(wù)運行過(guò)程中,生產(chǎn)狀態(tài)和件的生產(chǎn)狀態(tài)將交付到中臺數據中心。
  業(yè)務(wù)流制作交付:業(yè)務(wù)流制作過(guò)程中,視頻流制作狀態(tài)、音頻制作狀態(tài)、字幕制作狀態(tài)下發(fā)至中臺數據中心。
  審核下發(fā):審核系統將審核狀態(tài)、審核時(shí)間等信息下發(fā)給眾泰數據中心。
  發(fā)布與交付:發(fā)布系統會(huì )在平臺數據中列出碼流的發(fā)布狀態(tài)。
  中泰數據中心獲取數據后,向RMQ隊列發(fā)送數據變化通知,無(wú)人值守系統監控數據變化,將數據拉取到無(wú)人值守系統。為獲取程序從生產(chǎn)到最終發(fā)布的運行數據,完成數據采集。
  3.2 決策引擎
  基于采集到的數據,對系統和業(yè)務(wù)運行進(jìn)行實(shí)時(shí)分析,決策引擎主要提供以下功能:
  錯誤檢測:實(shí)時(shí)檢測系統和業(yè)務(wù)錯誤,統一管理錯誤,發(fā)送事件。
  超時(shí)告警:基于業(yè)務(wù)節點(diǎn)的SLA配置,檢測和管理超時(shí)業(yè)務(wù)行為,并發(fā)送事件。
  可配置策略:主要包括業(yè)務(wù)功能的無(wú)人值守訪(fǎng)問(wèn)配置和業(yè)務(wù)功能的SLA配置、權限配置、統計通知配置。
  決策引擎的運行是在服務(wù)工作的同時(shí)采集
進(jìn)度和系統運行信息,不斷檢查服務(wù)進(jìn)度是否正常,有無(wú)異?;虺瑫r(shí)情況,以便及時(shí)發(fā)現問(wèn)題一旦出現問(wèn)題。
  按照下圖的邏輯繼續工作:
  服務(wù)模塊啟動(dòng)后,當發(fā)現失敗或超時(shí)時(shí),將失敗和超時(shí)事件通知外部。同時(shí)檢測系統業(yè)務(wù)單元的運行進(jìn)度,判斷進(jìn)度是否正常,并向外界通報異常進(jìn)度滯后事件。
  
  上面介紹了邏輯流程,下面介紹服務(wù)模塊的操作邏輯:
  服務(wù)模塊的主要概念:
  數據來(lái)源:數據來(lái)源主要是中臺數據中心,部分廣播控制數據采集自RMQ。數據源的數據由業(yè)務(wù)系統下發(fā)給眾泰數據中心。
  流程:完成從數據源到無(wú)人值守系統的數據采集。不同的業(yè)務(wù)有不同的流程,不同的業(yè)務(wù)有不同的采集和處理方式。
  過(guò)濾:完成數據過(guò)濾。有些采集到的數據是系統不需要的,有些字段是不需要關(guān)心的。過(guò)濾器負責過(guò)濾掉無(wú)效數據。
  Transform:數據轉換,統一轉換為決策所需的數據結構。
  Rule模塊:規則的執行,承擔transform數據,執行配置好的規則,輸出成功、失敗、啟動(dòng)三個(gè)規則結果。
  決策模塊:決策模塊進(jìn)行超時(shí)判斷。超時(shí)判斷不同于普通的成功和失敗。需要不斷的比較當前時(shí)間和進(jìn)度來(lái)判斷任務(wù)是否超時(shí)。
  延遲消息模塊:通過(guò)延遲消息,在未來(lái)的某個(gè)時(shí)間用來(lái)檢查業(yè)務(wù)操作是否超時(shí)。
  Sink回寫(xiě):將超時(shí)、超出預期在線(xiàn)時(shí)間等結論回寫(xiě)數據源。
  服務(wù)模塊按照上述概念的順序運行,將運行中發(fā)現的事件傳遞到外部。下圖:
  
  3.3 Beacon,事件處理引擎
  事件處理引擎Beacon是自主研發(fā)的模塊,從決策引擎接收事件,并在一個(gè)流程中進(jìn)行處理。對于不同的事件,處理方法有很大的不同。比如常見(jiàn)的轉碼異常就有50多種,根據處理方式的不同,分為很多組。每組都有不同的處理程序。通知不同的研發(fā)人員,通知模塊的內容不同。. 有的事件有規范的治愈,有的沒(méi)有治愈,需要通知業(yè)務(wù)人員。針對這種多樣化的需求,專(zhuān)門(mén)設計了事件處理引擎(Beacon)進(jìn)行無(wú)人值守事件處理。引擎支持流程的配置和定制,并預留了高抽象的業(yè)務(wù)對接接口、處理能力擴展方式、流程配置方式。最大限度地降低支持新業(yè)務(wù)的成本。
  常見(jiàn)故障以事件的形式發(fā)送到 Beacon 處理引擎。
  基本結構:
  事件處理引擎主要有以下幾個(gè)部分:
  上下文功能:流程執行過(guò)程中上下文參數的獲取和存儲。上下文的保存和獲取在Step基類(lèi)中實(shí)現。
  執行引擎:一個(gè)簡(jiǎn)單可靠的執行引擎,收錄
流程執行、執行延遲、執行日志等基本功能,可以執行索引Step類(lèi)型對象。
  流程配置:JSON格式的流程配置,包括Step、StopStrategy、StepAction、WaitTimeAfter等概念,流程按照StepIndex的順序執行。
  Step:Steps,steps是組成流程的單元,每一步都會(huì )執行配置好的StepAction和StopStrategy。
  StopStrategy:進(jìn)程終止判斷策略,Step類(lèi)的子類(lèi),繼承context函數。根據配置的狀態(tài),確定事件處理的最終形式,例如故障是否恢復。
  StepAction:要執行的Action,Step類(lèi)的子類(lèi),如發(fā)送郵件、發(fā)送消息、調用業(yè)務(wù)接口等,都可以打包成StepAction。
  WaitTimeAfter:本步執行完畢后,執行下一步的等待時(shí)間。
  郵件等通知功能的對接:與企業(yè)郵件系統等對接,這是通知功能的基本組成部分。
  業(yè)務(wù)功能組件:業(yè)務(wù)功能組件是構成處理流程的基礎組件,是系統處理能力的載體。為支持新業(yè)務(wù)問(wèn)題的處理,需要在業(yè)務(wù)功能組件池中擴展流程處理引擎,擴展無(wú)人值守處理能力。
  
  下面是一個(gè)簡(jiǎn)單的進(jìn)程配置示例:
  
  在實(shí)際使用過(guò)程中,針對特定事件,配置故障處理Action和治愈判斷的StopStrategy,實(shí)現故障的自恢復和治愈。這里的失敗實(shí)際上是一種事件。最后,系統可以根據運行數據分析故障數量和固化百分比。
  四、機器學(xué)習應用:生產(chǎn)時(shí)間估算
  根據無(wú)人值守系統的目標設計,無(wú)人值守系統應提供對生產(chǎn)過(guò)程的預見(jiàn)性管理,以達到業(yè)務(wù)運營(yíng)的可預見(jiàn)目的?;诓杉?br /> 到的數據,應用機器學(xué)習技術(shù)訓練各種預測模型,針對耗時(shí)的業(yè)務(wù)運營(yíng)提供各種預測能力,提升無(wú)人值守體驗。
  注意:無(wú)人值守系統的預測模型只適用于資源穩定或有保障的任務(wù),沒(méi)有考慮資源變化對運行時(shí)間的影響。
  以下是對預計生產(chǎn)時(shí)間的解釋?zhuān)?br />   問(wèn)題類(lèi)型分析:無(wú)人值守系統可以獲得豐富的視頻制作歷史數據,期望形成特征向量,用歷史數據計算訓練模型,估計視頻制作完成時(shí)間進(jìn)行剪輯。
  
  特征分析:排除空數據,過(guò)濾有價(jià)值的特征。
  例如:類(lèi)別特征:
  'businessType', "channel", 'cloudEncode', 'trancodeType', "priority", "programType",
  “serviceCode”、“needAIInsertFrame”、“needAudit”、“bitrateCode”、“平臺”、“分辨率”...
  數字特征:'持續時(shí)間'
  分類(lèi)特征值分布分析
  
  算法選擇:
  訓練數據用于去除異常值,使用XGBoost回歸模型。
  XGBoost:實(shí)現了GBDT算法,在算法和工程上做了很多改進(jìn),(GBDT(Gradient Boosting Decision Tree)梯度提升決策樹(shù))。所以它被稱(chēng)為 X (Extreme) GBoosted。
  它的基本思想是將基礎分類(lèi)器逐層疊加。每一層在訓練時(shí),都會(huì )為上一層基分類(lèi)器的樣本調整不同的權重。在測試過(guò)程中,根據各層分類(lèi)器結果的權重得到最終結果。所有弱分類(lèi)器的結果之和等于預測值,然后下一個(gè)弱分類(lèi)器將誤差函數的殘差擬合到預測值(這個(gè)殘差就是預測值與真實(shí)值之間的誤差)。
  
  五、業(yè)務(wù)系統反饋
  無(wú)人值守系統為所有連接的業(yè)務(wù)系統生成日常業(yè)務(wù)系統運行狀態(tài)報告,并推送到業(yè)務(wù)系統。數據主要包括錯誤、故障統計數據和詳細數據,以及是否滿(mǎn)足SLA等信息。業(yè)務(wù)系統根據無(wú)人值守反饋的運營(yíng)數據進(jìn)行業(yè)務(wù)改進(jìn)和系統優(yōu)化?;谶@種方式,業(yè)務(wù)系統不斷升級改造。
  以下是日常經(jīng)營(yíng)狀況報告的內容示例:
  
  六、在線(xiàn)效果
  在愛(ài)奇藝,無(wú)人值守系統已經(jīng)覆蓋了愛(ài)奇藝內容中期的重要制作環(huán)節,為每天數十萬(wàn)節目的制作提供了可靠的報告。無(wú)人值守率達到99%以上。累計發(fā)現問(wèn)題3000多道,自動(dòng)處理2800多道。大大節省人工成本,提供系統運行穩定性和準時(shí)節目在線(xiàn)率。
  七、未來(lái)方向
  未來(lái),我們希望能夠基于無(wú)人值守采集的數據,提供更加智能的分析,主動(dòng)發(fā)現業(yè)務(wù)系統問(wèn)題,預警并提前解決。
  此外,該系統目前僅針對點(diǎn)事件值班。未來(lái),該項目將以值班和問(wèn)題處理為一體,提供從點(diǎn)到線(xiàn)到面的全方位值班服務(wù)。比如以程序為粒度,可以提供更智能的中斷、恢復等能力,后者更勝一籌。

實(shí)時(shí)文章采集(一種兼容多平臺的小程序日志采集方案(一))

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2021-12-26 11:20 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(一種兼容多平臺的小程序日志采集方案(一))
  01
  背景介紹
  小程序,英文小程序。是一款無(wú)需下載安裝即可在微信中使用的應用。用戶(hù)可以?huà)呙栊〕绦虼a或搜索小程序打開(kāi)。觸手可及,用完即可使用。無(wú)需擔心是否安裝過(guò)多應用程序。
  據阿拉丁統計,截至2021年6月底,微信小程序數量突破430萬(wàn),日活躍用戶(hù)突破4.1億。小程序深度影響了200+個(gè)子行業(yè),11個(gè)主要平臺推出了各自的小程序生態(tài)。小程序已經(jīng)成為中國人定義的真正意義上的“互聯(lián)網(wǎng)技術(shù)新標準”。
  
  由于業(yè)務(wù)發(fā)展需要,我們在微信小程序、百度智能小程序、支付寶小程序、字節小程序、360小程序等多個(gè)小程序平臺都有相應的上線(xiàn)。平臺、系統、機型、版本兼容問(wèn)題導致小程序上線(xiàn)問(wèn)題;
  思考:為什么小程序啟動(dòng)這么慢?為什么不能在線(xiàn)加載白屏數據?在線(xiàn)代碼的質(zhì)量如何?是否有任何錯誤?如何在網(wǎng)上快速查找和解決問(wèn)題?用戶(hù)做了什么?推出這么多平臺小程序后,各個(gè)平臺的效果如何?目前的小程序還有優(yōu)化空間嗎?
  其實(shí)以上問(wèn)題都可以通過(guò)日志文件分析來(lái)回答。每個(gè)小程序的后端也會(huì )采集
一些日志信息。比如微信后臺采集
js異常日志和接口異常日志,但是接口異常日志只有狀態(tài)碼級別的信息和腳本異常日志。缺少當前異常發(fā)生時(shí)的頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等信息的記錄,因此排查起來(lái)相對困難。對于小程序性能數據的采集,各平臺之間并沒(méi)有統一的標準。所以我們需要一個(gè)兼容多平臺的小程序日志采集
方案。
  02
  采集
理念
  要采集
小程序的信息,首先需要了解小程序的基本架構設計。小程序本質(zhì)上是混合體,但它們是有限制的。小程序的渲染層和邏輯層分別由兩個(gè)線(xiàn)程管理:
  這兩個(gè)線(xiàn)程之間的通信是通過(guò)小程序的Native端傳遞的,邏輯層發(fā)送的網(wǎng)絡(luò )請求也是通過(guò)Native端轉發(fā)的。對于平臺端,這種設計大大增加了平臺對應用的控制,降低了各種風(fēng)險。
  當然,采集SDK也在邏輯層,所以可以監控邏輯層的交互響應。主流小程序的JS邏輯層開(kāi)發(fā)主要依賴(lài)以下三個(gè)部分:
  App:每個(gè)小程序都需要調用app.js中的App方法來(lái)注冊一個(gè)小程序實(shí)例,綁定生命周期回調函數,錯誤監控和頁(yè)面不存在監控等功能,整個(gè)小程序只有一個(gè)App實(shí)例,共享所有頁(yè)面。Page:對于小程序中的每個(gè)頁(yè)面,都需要在頁(yè)面對應的js文件中注冊,指定頁(yè)面的初始數據、生命周期回調、事件處理函數等,簡(jiǎn)單的頁(yè)面可以使用Page()來(lái)構造。wx:小程序開(kāi)發(fā)框架提供了豐富的微信原生API,可以輕松調出微信提供的能力,比如獲取用戶(hù)信息、本地存儲、支付功能。
  因此,要想有效監控小程序的運行狀態(tài),就需要對這三個(gè)模塊進(jìn)行有效攔截。在小程序中,App、Page、wx 模塊宏都暴露給全局。如果要攔截,可以直接改寫(xiě)全局中的變量。
  03
  總體方案
  
  SDK用戶(hù)包括小程序原生開(kāi)發(fā)和小程序框架開(kāi)發(fā)兩種:
  SDK 有兩個(gè)主要功能:數據采集
和報告服務(wù)。SDK的主要功能是采集
小程序生成的日志。采集日志可以分為異常日志、正常日志和性能日志3種類(lèi)型。每次上報日志時(shí),也會(huì )上報1類(lèi)通用信息:
  日志類(lèi)型
  二級分類(lèi)
  操作說(shuō)明
  異常日志
  JS錯誤、界面異常、資源下載異常
  監控很關(guān)鍵,需要實(shí)時(shí)上報
  正常日志
  用戶(hù)行為、日志信息、路由信息
  日志量大,用戶(hù)主動(dòng)上報
  性能日志
  首屏時(shí)間、頁(yè)面渲染時(shí)間、PV/UV
  一次上報,同時(shí)統計PV/UV
  一般信息
  系統信息、用戶(hù)信息、網(wǎng)絡(luò )狀態(tài)、場(chǎng)景值
  其他 3 類(lèi)日志的附加一般信息
  我們的目標小程序涵蓋目前主流的小程序,如微信、百度、今日頭條、支付寶、360等。
  公共日志采集
  常規思維
  通過(guò)相關(guān)API獲取環(huán)境信息,主要包括以下幾類(lèi)信息:
  多終端兼容思路
  基本信息API與各個(gè)平臺小程序的接口基本一致。主要區別在于模塊宏的定義。比如微信小程序是wx,百度小程序是天鵝,今日頭條小程序是tt。SDK初始化時(shí),通過(guò)判斷模塊宏是否存在并存儲在上下文變量中來(lái)確定當前的小程序環(huán)境,具體使用時(shí)通過(guò)上下文調用API。
  public get context() {
if (this._context) return this._context;
if (typeof wx !== &#39;undefined&#39;) { this._context = wx; }
if (typeof swan !== &#39;undefined&#39;) { this._context = swan; }
if (typeof tt !== &#39;undefined&#39;) { this._context = tt; }
if (typeof my !== &#39;undefined&#39;) { this._context = my; }
if (typeof qq !== &#39;undefined&#39;) { this._context = qq; }
if (typeof qh !== &#39;undefined&#39;) { this._context = qh; }
return this._context;
}
// 使用示例 用戶(hù)信息獲?。篶tx.getUserInfo()
  當前頁(yè)面的路徑得到多終端兼容處理
  所以這里有一個(gè)獲取當前頁(yè)面路徑的方法,可以平滑各個(gè)平臺小程序之間的差異。
  public get currentPage() {
if (this.appName === &#39;qh&#39;) { // 360小程序兼容
const { path } = $router.history.current;
return path;
}
let pages = getCurrentPages();
if (pages.length > 0) {
return pages[pages.length - 1].route;
} else {
return this._indexPage;
}
}
  異常日志采集
  異常日志分為三種:腳本異常、接口異常、資源異常
  由于小程序的特殊通信機制,接口請求和資源下載都是通過(guò)小程序載體Native進(jìn)行轉發(fā)和執行。因此,要采集
這部分異常,可以攔截wx.request、wx.download等相關(guān)API。
  關(guān)于接口異常信息的上報,主要涉及兩種情況: 在wx.request的成功回調中,如果響應狀態(tài)碼&gt;=400,則表示網(wǎng)絡(luò )請求已發(fā)送,但業(yè)務(wù)響應異常,并報告為異常。; 如果直接去wx.request的fail回調,說(shuō)明網(wǎng)絡(luò )請求異常,會(huì )進(jìn)行異常報告;
  資源異常主要用于攔截downloadFile文件下載API,下載失敗時(shí)上報資源異常日志。
  下面我們重點(diǎn)關(guān)注腳本異常的日志采集
。
  腳本異常_常規思路
  JS 中常見(jiàn)的錯誤有幾種,其中類(lèi)型錯誤、引用錯誤、未捕獲的 Promise 錯誤發(fā)生的頻率更高;其次是越界錯誤和不正確的 URI 錯誤。
  
  前5個(gè)錯誤可以通過(guò)監聽(tīng)小程序App.onError采集
,Promise異??梢酝ㄟ^(guò)App.onUnhandledRejection API采集
,但是這個(gè)API在各個(gè)平臺的支持是不一致的,如下:
  腳本異常_多終端兼容思路
  通過(guò)追蹤異常棧,查看源碼,我們可以看到微信已經(jīng)通過(guò)try...catch把我們業(yè)務(wù)代碼的外層包裹起來(lái)了。當發(fā)生異常時(shí),通過(guò)console.error打印出來(lái),所以在開(kāi)發(fā)過(guò)程中,可以看到發(fā)生異常時(shí),開(kāi)發(fā)者工具控制臺會(huì )打印異常信息。
  因此,我們可以攔截console.error。本次攔截可以采集
到的異常包括:
  實(shí)施過(guò)程中遇到的問(wèn)題
  在具體的實(shí)現過(guò)程中,我們發(fā)現不同平臺的具體實(shí)現是不同的:
  因此,截取console.error后,我們需要對截取的信息進(jìn)行第二次處理,平滑平臺差異。
  具體的解決辦法是通過(guò)正則匹配:
  const ERROR_TYPES_REG = /(((Eval|Reference|Range|Internal|Type|Syntax)Error)|promise)
  判斷當前腳本異常類(lèi)型,格式化信息后分別上報堆棧信息和錯誤內容。最終報告的腳本日志格式如下,包括錯誤類(lèi)型、錯誤內容和堆棧信息。
  "exceptions": [{
"errType": "MiniProgramError",
"content": "app.checkAuthorize1 is not a function",
"message": "TypeError: app.checkAuthorize1 is not a function",
"stacktrace": "MiniProgramErroranonymous> (httpe.p.__callPageLifeTime__ (h"
}]
  性能日志采集
  常規思維
  通過(guò)官方提供的API獲取數據并采集
和報告。微信提供wx.getPerformance() API,獲取小程序啟動(dòng)耗時(shí)、頁(yè)面渲染耗時(shí)、腳本注入耗時(shí);但其他平臺小程序不提供相關(guān)接口。
  多終端兼容思路
  用戶(hù)點(diǎn)擊小程序后,首先會(huì )下載小程序資源包。啟動(dòng)后會(huì )解析app.json文件,注冊App(),然后執行APP的生命周期;然后開(kāi)始加載頁(yè)面,解析頁(yè)面json文件,渲染.wxml文件,執行邏輯層js文件,調用頁(yè)面生命周期。APP和頁(yè)面的生命周期功能是性能日志采集
的重點(diǎn)。
  生命周期鉤子
  等級
  操作說(shuō)明
  主流小程序框架
  360小程序框架
  開(kāi)機
  應用級別
  監控小程序初始化
  支持
  負載
  展出
  應用級別
  監控小程序啟動(dòng)或切換到前臺
  支持
  支持
  負載
  頁(yè)面級別
  監控頁(yè)面加載
  支持
  支持
  展出
  頁(yè)面級別
  監控頁(yè)面顯示
  支持
  支持
  準備就緒
  頁(yè)面級別
  監控頁(yè)面第一次渲染完成
  支持
  支持
  隱藏
  頁(yè)面級別
  監控頁(yè)面隱藏
  支持
  支持
  我們對比了各個(gè)平臺小程序生命周期相關(guān)的API,發(fā)現主流小程序框架的實(shí)現基本一致。360小程序更特別。是基于Vue框架的二次封裝,但大部分API還是一樣的。在360小程序中,小程序初始化后的hook調用的是onLoad,需要特殊處理。
  因此,可以通過(guò)攔截和管理小程序App和Page的相應生命周期來(lái)實(shí)現性能日志采集
。在性能日志采集
方案中,我們主要將其分為應用級性能和頁(yè)面級性能。
  
  應用級性能:我們定義了首屏時(shí)間,即進(jìn)入小程序后第一頁(yè)的渲染完成時(shí)間——SDK初始化時(shí)間。
  由于小程序入口較多,有些是從分享卡進(jìn)入,點(diǎn)擊圖標,搜索。不同的進(jìn)入小程序的方式會(huì )顯示不同的主頁(yè)。因此,我們會(huì )在每個(gè)日志中攜帶當前頁(yè)面入口路徑。
  頁(yè)面級性能主要包括:
  實(shí)現過(guò)程中遇到的問(wèn)題在測試驗證階段,我們發(fā)現使用Taro框架開(kāi)發(fā)轉換的微信小程序無(wú)法采集頁(yè)面級性能數據。經(jīng)過(guò)具體定位,我們發(fā)現在Taro2版本中,小程序頁(yè)面和組件被統一為Component組件。因此,需要攔截Component;在Tar??o3之后,小程序頁(yè)面規范對象暴露在外,可以通過(guò)攔截Page來(lái)實(shí)現。具體實(shí)現邏輯如下:
  private interceptPage = (): void => {
let self = this;
let isTaro = (typeof (process) !== &#39;undefined&#39; && typeof (process.env) !== &#39;undefined&#39; && typeof (process.env.TARO_ENV) !== &#39;undefined&#39;) ? true : false;
const primaryPage = Page;
if (isTaro) {
let primaryComponent = Component;
Component = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
if (typeof obj.methods[name] === &#39;function&#39;) {
const primaryHookFn = obj.methods[name];
obj.methods[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
}
});
primaryComponent && primaryComponent.call(this, obj);
}
}
Page = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
const primaryHookFn = obj[name];
obj[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
});
primaryPage && primaryPage.call(this, obj);
}
}
  行為軌跡采集
  如果只有一些比較隱蔽的錯誤的錯誤堆棧信息,排查起來(lái)會(huì )比較困難。如果有用戶(hù)操作的路徑,排查起來(lái)就容易多了。在行為軌跡日志的采集中,我們會(huì )采集APP函數棧、Page函數棧、HTTP請求棧,并上報最近10條行為軌跡日志,以幫助用戶(hù)在發(fā)生異常時(shí)定位問(wèn)題。
  04
  SDK特性
  多終端、多幀適配
  
  重量輕,支持多種模塊化規格
  SDK由Rollup打包,壓縮體積49KB,支持cmj和es6模塊化規范。
  多種使用形式
  1. 通過(guò) npm 格式使用
  import * as mpMonitor from &#39;mp-monitor&#39;;
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  2. 以單一文件格式使用
  const mpMonitor = require(&#39;./utils/mp-monitor&#39;);
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  支持自定義報告日志
  業(yè)務(wù)方可以使用console.error(\'自定義報告內容\')
  05
  商業(yè)實(shí)踐
  1. SDK現已完成集團北斗前端監控平臺對接,支持微信、百度、今日頭條、支付寶、QQ、360等多端監控;
  2.截至2021.10.15,已接入13個(gè)小程序,覆蓋5條業(yè)務(wù)線(xiàn)
  3. SDK 上報模型與 Sentry 一致。自行搭建Sentry服務(wù)的企業(yè)可以直接使用SDK,配置上報url;
  4. 平臺接入效果展示
  開(kāi)發(fā)者可以通過(guò)首頁(yè)的圖表觀(guān)察小程序當前的運行狀態(tài)
  
  通過(guò)性能圖表,可以考慮當前小程序是否有優(yōu)化空間。如果開(kāi)啟分包加載優(yōu)化,當前首屏性能曲線(xiàn)應該會(huì )明顯降低
  
  觀(guān)察從頁(yè)面 URL 采集
的 pvuv 數據。優(yōu)化業(yè)務(wù)代碼時(shí),可以考慮去掉pv為0的頁(yè)面。
  
  頁(yè)面加載瀑布圖,可以直觀(guān)的看到一個(gè)小程序頁(yè)面的加載過(guò)程
  
  行為軌跡展示可以幫助開(kāi)發(fā)者更快地重現在線(xiàn)問(wèn)題,提高問(wèn)題解決效率
  
  06
  總結
  目前小程序日志采集SDK內部已經(jīng)平滑了多平臺之間的差異,統一了小程序性能數據采集指標。異常時(shí)上報頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等相關(guān)信息,幫助開(kāi)發(fā)者更快定位和解決在線(xiàn)問(wèn)題。
  我們會(huì )繼續優(yōu)化細節,完善功能。也歡迎有興趣的同學(xué)一起交流。
  對源碼感興趣的請點(diǎn)贊+轉發(fā)+關(guān)注+私信【小程序日志采集
】。
  歡迎點(diǎn)贊+轉發(fā)+關(guān)注!您的支持是我分享的最大動(dòng)力?。?! 查看全部

  實(shí)時(shí)文章采集(一種兼容多平臺的小程序日志采集方案(一))
  01
  背景介紹
  小程序,英文小程序。是一款無(wú)需下載安裝即可在微信中使用的應用。用戶(hù)可以?huà)呙栊〕绦虼a或搜索小程序打開(kāi)。觸手可及,用完即可使用。無(wú)需擔心是否安裝過(guò)多應用程序。
  據阿拉丁統計,截至2021年6月底,微信小程序數量突破430萬(wàn),日活躍用戶(hù)突破4.1億。小程序深度影響了200+個(gè)子行業(yè),11個(gè)主要平臺推出了各自的小程序生態(tài)。小程序已經(jīng)成為中國人定義的真正意義上的“互聯(lián)網(wǎng)技術(shù)新標準”。
  
  由于業(yè)務(wù)發(fā)展需要,我們在微信小程序、百度智能小程序、支付寶小程序、字節小程序、360小程序等多個(gè)小程序平臺都有相應的上線(xiàn)。平臺、系統、機型、版本兼容問(wèn)題導致小程序上線(xiàn)問(wèn)題;
  思考:為什么小程序啟動(dòng)這么慢?為什么不能在線(xiàn)加載白屏數據?在線(xiàn)代碼的質(zhì)量如何?是否有任何錯誤?如何在網(wǎng)上快速查找和解決問(wèn)題?用戶(hù)做了什么?推出這么多平臺小程序后,各個(gè)平臺的效果如何?目前的小程序還有優(yōu)化空間嗎?
  其實(shí)以上問(wèn)題都可以通過(guò)日志文件分析來(lái)回答。每個(gè)小程序的后端也會(huì )采集
一些日志信息。比如微信后臺采集
js異常日志和接口異常日志,但是接口異常日志只有狀態(tài)碼級別的信息和腳本異常日志。缺少當前異常發(fā)生時(shí)的頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等信息的記錄,因此排查起來(lái)相對困難。對于小程序性能數據的采集,各平臺之間并沒(méi)有統一的標準。所以我們需要一個(gè)兼容多平臺的小程序日志采集
方案。
  02
  采集
理念
  要采集
小程序的信息,首先需要了解小程序的基本架構設計。小程序本質(zhì)上是混合體,但它們是有限制的。小程序的渲染層和邏輯層分別由兩個(gè)線(xiàn)程管理:
  這兩個(gè)線(xiàn)程之間的通信是通過(guò)小程序的Native端傳遞的,邏輯層發(fā)送的網(wǎng)絡(luò )請求也是通過(guò)Native端轉發(fā)的。對于平臺端,這種設計大大增加了平臺對應用的控制,降低了各種風(fēng)險。
  當然,采集SDK也在邏輯層,所以可以監控邏輯層的交互響應。主流小程序的JS邏輯層開(kāi)發(fā)主要依賴(lài)以下三個(gè)部分:
  App:每個(gè)小程序都需要調用app.js中的App方法來(lái)注冊一個(gè)小程序實(shí)例,綁定生命周期回調函數,錯誤監控和頁(yè)面不存在監控等功能,整個(gè)小程序只有一個(gè)App實(shí)例,共享所有頁(yè)面。Page:對于小程序中的每個(gè)頁(yè)面,都需要在頁(yè)面對應的js文件中注冊,指定頁(yè)面的初始數據、生命周期回調、事件處理函數等,簡(jiǎn)單的頁(yè)面可以使用Page()來(lái)構造。wx:小程序開(kāi)發(fā)框架提供了豐富的微信原生API,可以輕松調出微信提供的能力,比如獲取用戶(hù)信息、本地存儲、支付功能。
  因此,要想有效監控小程序的運行狀態(tài),就需要對這三個(gè)模塊進(jìn)行有效攔截。在小程序中,App、Page、wx 模塊宏都暴露給全局。如果要攔截,可以直接改寫(xiě)全局中的變量。
  03
  總體方案
  
  SDK用戶(hù)包括小程序原生開(kāi)發(fā)和小程序框架開(kāi)發(fā)兩種:
  SDK 有兩個(gè)主要功能:數據采集
和報告服務(wù)。SDK的主要功能是采集
小程序生成的日志。采集日志可以分為異常日志、正常日志和性能日志3種類(lèi)型。每次上報日志時(shí),也會(huì )上報1類(lèi)通用信息:
  日志類(lèi)型
  二級分類(lèi)
  操作說(shuō)明
  異常日志
  JS錯誤、界面異常、資源下載異常
  監控很關(guān)鍵,需要實(shí)時(shí)上報
  正常日志
  用戶(hù)行為、日志信息、路由信息
  日志量大,用戶(hù)主動(dòng)上報
  性能日志
  首屏時(shí)間、頁(yè)面渲染時(shí)間、PV/UV
  一次上報,同時(shí)統計PV/UV
  一般信息
  系統信息、用戶(hù)信息、網(wǎng)絡(luò )狀態(tài)、場(chǎng)景值
  其他 3 類(lèi)日志的附加一般信息
  我們的目標小程序涵蓋目前主流的小程序,如微信、百度、今日頭條、支付寶、360等。
  公共日志采集
  常規思維
  通過(guò)相關(guān)API獲取環(huán)境信息,主要包括以下幾類(lèi)信息:
  多終端兼容思路
  基本信息API與各個(gè)平臺小程序的接口基本一致。主要區別在于模塊宏的定義。比如微信小程序是wx,百度小程序是天鵝,今日頭條小程序是tt。SDK初始化時(shí),通過(guò)判斷模塊宏是否存在并存儲在上下文變量中來(lái)確定當前的小程序環(huán)境,具體使用時(shí)通過(guò)上下文調用API。
  public get context() {
if (this._context) return this._context;
if (typeof wx !== &#39;undefined&#39;) { this._context = wx; }
if (typeof swan !== &#39;undefined&#39;) { this._context = swan; }
if (typeof tt !== &#39;undefined&#39;) { this._context = tt; }
if (typeof my !== &#39;undefined&#39;) { this._context = my; }
if (typeof qq !== &#39;undefined&#39;) { this._context = qq; }
if (typeof qh !== &#39;undefined&#39;) { this._context = qh; }
return this._context;
}
// 使用示例 用戶(hù)信息獲?。篶tx.getUserInfo()
  當前頁(yè)面的路徑得到多終端兼容處理
  所以這里有一個(gè)獲取當前頁(yè)面路徑的方法,可以平滑各個(gè)平臺小程序之間的差異。
  public get currentPage() {
if (this.appName === &#39;qh&#39;) { // 360小程序兼容
const { path } = $router.history.current;
return path;
}
let pages = getCurrentPages();
if (pages.length > 0) {
return pages[pages.length - 1].route;
} else {
return this._indexPage;
}
}
  異常日志采集
  異常日志分為三種:腳本異常、接口異常、資源異常
  由于小程序的特殊通信機制,接口請求和資源下載都是通過(guò)小程序載體Native進(jìn)行轉發(fā)和執行。因此,要采集
這部分異常,可以攔截wx.request、wx.download等相關(guān)API。
  關(guān)于接口異常信息的上報,主要涉及兩種情況: 在wx.request的成功回調中,如果響應狀態(tài)碼&gt;=400,則表示網(wǎng)絡(luò )請求已發(fā)送,但業(yè)務(wù)響應異常,并報告為異常。; 如果直接去wx.request的fail回調,說(shuō)明網(wǎng)絡(luò )請求異常,會(huì )進(jìn)行異常報告;
  資源異常主要用于攔截downloadFile文件下載API,下載失敗時(shí)上報資源異常日志。
  下面我們重點(diǎn)關(guān)注腳本異常的日志采集
。
  腳本異常_常規思路
  JS 中常見(jiàn)的錯誤有幾種,其中類(lèi)型錯誤、引用錯誤、未捕獲的 Promise 錯誤發(fā)生的頻率更高;其次是越界錯誤和不正確的 URI 錯誤。
  
  前5個(gè)錯誤可以通過(guò)監聽(tīng)小程序App.onError采集
,Promise異??梢酝ㄟ^(guò)App.onUnhandledRejection API采集
,但是這個(gè)API在各個(gè)平臺的支持是不一致的,如下:
  腳本異常_多終端兼容思路
  通過(guò)追蹤異常棧,查看源碼,我們可以看到微信已經(jīng)通過(guò)try...catch把我們業(yè)務(wù)代碼的外層包裹起來(lái)了。當發(fā)生異常時(shí),通過(guò)console.error打印出來(lái),所以在開(kāi)發(fā)過(guò)程中,可以看到發(fā)生異常時(shí),開(kāi)發(fā)者工具控制臺會(huì )打印異常信息。
  因此,我們可以攔截console.error。本次攔截可以采集
到的異常包括:
  實(shí)施過(guò)程中遇到的問(wèn)題
  在具體的實(shí)現過(guò)程中,我們發(fā)現不同平臺的具體實(shí)現是不同的:
  因此,截取console.error后,我們需要對截取的信息進(jìn)行第二次處理,平滑平臺差異。
  具體的解決辦法是通過(guò)正則匹配:
  const ERROR_TYPES_REG = /(((Eval|Reference|Range|Internal|Type|Syntax)Error)|promise)
  判斷當前腳本異常類(lèi)型,格式化信息后分別上報堆棧信息和錯誤內容。最終報告的腳本日志格式如下,包括錯誤類(lèi)型、錯誤內容和堆棧信息。
  "exceptions": [{
"errType": "MiniProgramError",
"content": "app.checkAuthorize1 is not a function",
"message": "TypeError: app.checkAuthorize1 is not a function",
"stacktrace": "MiniProgramErroranonymous> (httpe.p.__callPageLifeTime__ (h"
}]
  性能日志采集
  常規思維
  通過(guò)官方提供的API獲取數據并采集
和報告。微信提供wx.getPerformance() API,獲取小程序啟動(dòng)耗時(shí)、頁(yè)面渲染耗時(shí)、腳本注入耗時(shí);但其他平臺小程序不提供相關(guān)接口。
  多終端兼容思路
  用戶(hù)點(diǎn)擊小程序后,首先會(huì )下載小程序資源包。啟動(dòng)后會(huì )解析app.json文件,注冊App(),然后執行APP的生命周期;然后開(kāi)始加載頁(yè)面,解析頁(yè)面json文件,渲染.wxml文件,執行邏輯層js文件,調用頁(yè)面生命周期。APP和頁(yè)面的生命周期功能是性能日志采集
的重點(diǎn)。
  生命周期鉤子
  等級
  操作說(shuō)明
  主流小程序框架
  360小程序框架
  開(kāi)機
  應用級別
  監控小程序初始化
  支持
  負載
  展出
  應用級別
  監控小程序啟動(dòng)或切換到前臺
  支持
  支持
  負載
  頁(yè)面級別
  監控頁(yè)面加載
  支持
  支持
  展出
  頁(yè)面級別
  監控頁(yè)面顯示
  支持
  支持
  準備就緒
  頁(yè)面級別
  監控頁(yè)面第一次渲染完成
  支持
  支持
  隱藏
  頁(yè)面級別
  監控頁(yè)面隱藏
  支持
  支持
  我們對比了各個(gè)平臺小程序生命周期相關(guān)的API,發(fā)現主流小程序框架的實(shí)現基本一致。360小程序更特別。是基于Vue框架的二次封裝,但大部分API還是一樣的。在360小程序中,小程序初始化后的hook調用的是onLoad,需要特殊處理。
  因此,可以通過(guò)攔截和管理小程序App和Page的相應生命周期來(lái)實(shí)現性能日志采集
。在性能日志采集
方案中,我們主要將其分為應用級性能和頁(yè)面級性能。
  
  應用級性能:我們定義了首屏時(shí)間,即進(jìn)入小程序后第一頁(yè)的渲染完成時(shí)間——SDK初始化時(shí)間。
  由于小程序入口較多,有些是從分享卡進(jìn)入,點(diǎn)擊圖標,搜索。不同的進(jìn)入小程序的方式會(huì )顯示不同的主頁(yè)。因此,我們會(huì )在每個(gè)日志中攜帶當前頁(yè)面入口路徑。
  頁(yè)面級性能主要包括:
  實(shí)現過(guò)程中遇到的問(wèn)題在測試驗證階段,我們發(fā)現使用Taro框架開(kāi)發(fā)轉換的微信小程序無(wú)法采集頁(yè)面級性能數據。經(jīng)過(guò)具體定位,我們發(fā)現在Taro2版本中,小程序頁(yè)面和組件被統一為Component組件。因此,需要攔截Component;在Tar??o3之后,小程序頁(yè)面規范對象暴露在外,可以通過(guò)攔截Page來(lái)實(shí)現。具體實(shí)現邏輯如下:
  private interceptPage = (): void => {
let self = this;
let isTaro = (typeof (process) !== &#39;undefined&#39; && typeof (process.env) !== &#39;undefined&#39; && typeof (process.env.TARO_ENV) !== &#39;undefined&#39;) ? true : false;
const primaryPage = Page;
if (isTaro) {
let primaryComponent = Component;
Component = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
if (typeof obj.methods[name] === &#39;function&#39;) {
const primaryHookFn = obj.methods[name];
obj.methods[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
}
});
primaryComponent && primaryComponent.call(this, obj);
}
}
Page = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
const primaryHookFn = obj[name];
obj[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
});
primaryPage && primaryPage.call(this, obj);
}
}
  行為軌跡采集
  如果只有一些比較隱蔽的錯誤的錯誤堆棧信息,排查起來(lái)會(huì )比較困難。如果有用戶(hù)操作的路徑,排查起來(lái)就容易多了。在行為軌跡日志的采集中,我們會(huì )采集APP函數棧、Page函數棧、HTTP請求棧,并上報最近10條行為軌跡日志,以幫助用戶(hù)在發(fā)生異常時(shí)定位問(wèn)題。
  04
  SDK特性
  多終端、多幀適配
  
  重量輕,支持多種模塊化規格
  SDK由Rollup打包,壓縮體積49KB,支持cmj和es6模塊化規范。
  多種使用形式
  1. 通過(guò) npm 格式使用
  import * as mpMonitor from &#39;mp-monitor&#39;;
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  2. 以單一文件格式使用
  const mpMonitor = require(&#39;./utils/mp-monitor&#39;);
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  支持自定義報告日志
  業(yè)務(wù)方可以使用console.error(\'自定義報告內容\')
  05
  商業(yè)實(shí)踐
  1. SDK現已完成集團北斗前端監控平臺對接,支持微信、百度、今日頭條、支付寶、QQ、360等多端監控;
  2.截至2021.10.15,已接入13個(gè)小程序,覆蓋5條業(yè)務(wù)線(xiàn)
  3. SDK 上報模型與 Sentry 一致。自行搭建Sentry服務(wù)的企業(yè)可以直接使用SDK,配置上報url;
  4. 平臺接入效果展示
  開(kāi)發(fā)者可以通過(guò)首頁(yè)的圖表觀(guān)察小程序當前的運行狀態(tài)
  
  通過(guò)性能圖表,可以考慮當前小程序是否有優(yōu)化空間。如果開(kāi)啟分包加載優(yōu)化,當前首屏性能曲線(xiàn)應該會(huì )明顯降低
  
  觀(guān)察從頁(yè)面 URL 采集
的 pvuv 數據。優(yōu)化業(yè)務(wù)代碼時(shí),可以考慮去掉pv為0的頁(yè)面。
  
  頁(yè)面加載瀑布圖,可以直觀(guān)的看到一個(gè)小程序頁(yè)面的加載過(guò)程
  
  行為軌跡展示可以幫助開(kāi)發(fā)者更快地重現在線(xiàn)問(wèn)題,提高問(wèn)題解決效率
  
  06
  總結
  目前小程序日志采集SDK內部已經(jīng)平滑了多平臺之間的差異,統一了小程序性能數據采集指標。異常時(shí)上報頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等相關(guān)信息,幫助開(kāi)發(fā)者更快定位和解決在線(xiàn)問(wèn)題。
  我們會(huì )繼續優(yōu)化細節,完善功能。也歡迎有興趣的同學(xué)一起交流。
  對源碼感興趣的請點(diǎn)贊+轉發(fā)+關(guān)注+私信【小程序日志采集
】。
  歡迎點(diǎn)贊+轉發(fā)+關(guān)注!您的支持是我分享的最大動(dòng)力?。?!

實(shí)時(shí)文章采集(一個(gè)實(shí)用采集技能,采集公眾號內容詳解(組圖))

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2021-12-23 19:13 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(一個(gè)實(shí)用采集技能,采集公眾號內容詳解(組圖))
  數據采集-數據采集-java-php-go-Python-Crawler-Automatic-微信公眾號文章查看點(diǎn)擊量-多個(gè)公眾號-實(shí)時(shí)更新、Go語(yǔ)言社區、Golang程序員網(wǎng)社區,Go語(yǔ)言中文社區優(yōu)采云采集軟件采集公眾號文章詳細操作步驟工具/資料優(yōu)采云采集方法/Step 1 Log在優(yōu)采云軟件優(yōu)采云爬取微信公眾號,打開(kāi)采集規則”規則市場(chǎng)微信朋友圈優(yōu)采云AI,搜索關(guān)鍵詞微信規則,查找并下載。2 將規則導入任務(wù)。
  很好:微信采集微信公眾號采集工具,如何閱讀和點(diǎn)贊采集公眾號?3 同意 · 9 條評論和回答優(yōu)采云·云采集服務(wù)平臺微信公眾號內容采集詳細方法在微信公眾號中瀏覽文章的內容。
  大數據信息材料采集:公眾號吳志宏文章評論爬取優(yōu)采云采集器規則大數據信息材料采集公眾號歷史文章 &lt; @采集公眾號評論抓取微信公眾號歷史文章導出并抓取微信公眾號所有文章。官方賬號。摘要:相信每個(gè)運營(yíng)微信公眾號的人都在考慮這個(gè)問(wèn)題。今天優(yōu)采云給大家分享一個(gè)實(shí)用的采集技能,采集公眾號。公眾號內容實(shí)時(shí)監控。如何提高微信文章的打開(kāi)率?文章最火的款式有哪些。
  
  采集 字段:公眾號、文章 標題、內容、閱讀量、點(diǎn)贊數、推送時(shí)間,這里要說(shuō)明一下,優(yōu)采云目前只有采集公開(kāi)網(wǎng)上的數據,微信公眾號采集需要從網(wǎng)頁(yè)采集開(kāi)始。搜索“搜狗微信”并通過(guò)。我專(zhuān)注于優(yōu)采云 第三方采集 工具。由于優(yōu)采云是收費軟件,您只能先申請體驗賬號,體驗采集的基本功能。,不過(guò)個(gè)人覺(jué)得采用這個(gè)工具是因為它與搜狗的接口合作。
  微信優(yōu)采云ai
  前兩年還好,現在采集不行,但是現在用微信公眾號平臺登錄的人不多。目前位置在小紅書(shū)、微博大數據信息資料采集:信息公眾號元芳青木文章評論爬取優(yōu)采云采集大數據信息資料采集公眾號歷史文章采集公眾號評論爬取微信公眾號歷史文章導出抓取所有微信公眾號文章。公眾。
  優(yōu)采云如何采集數據
  還有問(wèn)優(yōu)采云怎么發(fā)朋友圈,怎么抓微信公眾號文章?解決問(wèn)題后,分享優(yōu)采云、優(yōu)采云等具有公眾號功能的第三方工具。您可以自行下載使用。具體的就不多說(shuō)了。第四:基于微信公眾號平臺的方法;這個(gè)方法其實(shí)是最難的,因為中間需要。 查看全部

  實(shí)時(shí)文章采集(一個(gè)實(shí)用采集技能,采集公眾號內容詳解(組圖))
  數據采集-數據采集-java-php-go-Python-Crawler-Automatic-微信公眾號文章查看點(diǎn)擊量-多個(gè)公眾號-實(shí)時(shí)更新、Go語(yǔ)言社區、Golang程序員網(wǎng)社區,Go語(yǔ)言中文社區優(yōu)采云采集軟件采集公眾號文章詳細操作步驟工具/資料優(yōu)采云采集方法/Step 1 Log在優(yōu)采云軟件優(yōu)采云爬取微信公眾號,打開(kāi)采集規則”規則市場(chǎng)微信朋友圈優(yōu)采云AI,搜索關(guān)鍵詞微信規則,查找并下載。2 將規則導入任務(wù)。
  很好:微信采集微信公眾號采集工具,如何閱讀和點(diǎn)贊采集公眾號?3 同意 · 9 條評論和回答優(yōu)采云·云采集服務(wù)平臺微信公眾號內容采集詳細方法在微信公眾號中瀏覽文章的內容。
  大數據信息材料采集:公眾號吳志宏文章評論爬取優(yōu)采云采集器規則大數據信息材料采集公眾號歷史文章 &lt; @采集公眾號評論抓取微信公眾號歷史文章導出并抓取微信公眾號所有文章。官方賬號。摘要:相信每個(gè)運營(yíng)微信公眾號的人都在考慮這個(gè)問(wèn)題。今天優(yōu)采云給大家分享一個(gè)實(shí)用的采集技能,采集公眾號。公眾號內容實(shí)時(shí)監控。如何提高微信文章的打開(kāi)率?文章最火的款式有哪些。
  
  采集 字段:公眾號、文章 標題、內容、閱讀量、點(diǎn)贊數、推送時(shí)間,這里要說(shuō)明一下,優(yōu)采云目前只有采集公開(kāi)網(wǎng)上的數據,微信公眾號采集需要從網(wǎng)頁(yè)采集開(kāi)始。搜索“搜狗微信”并通過(guò)。我專(zhuān)注于優(yōu)采云 第三方采集 工具。由于優(yōu)采云是收費軟件,您只能先申請體驗賬號,體驗采集的基本功能。,不過(guò)個(gè)人覺(jué)得采用這個(gè)工具是因為它與搜狗的接口合作。
  微信優(yōu)采云ai
  前兩年還好,現在采集不行,但是現在用微信公眾號平臺登錄的人不多。目前位置在小紅書(shū)、微博大數據信息資料采集:信息公眾號元芳青木文章評論爬取優(yōu)采云采集大數據信息資料采集公眾號歷史文章采集公眾號評論爬取微信公眾號歷史文章導出抓取所有微信公眾號文章。公眾。
  優(yōu)采云如何采集數據
  還有問(wèn)優(yōu)采云怎么發(fā)朋友圈,怎么抓微信公眾號文章?解決問(wèn)題后,分享優(yōu)采云、優(yōu)采云等具有公眾號功能的第三方工具。您可以自行下載使用。具體的就不多說(shuō)了。第四:基于微信公眾號平臺的方法;這個(gè)方法其實(shí)是最難的,因為中間需要。

實(shí)時(shí)文章采集( 前面Flume和Kafka的實(shí)時(shí)數據源,怎么產(chǎn)生呢??)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2021-12-15 10:10 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(
前面Flume和Kafka的實(shí)時(shí)數據源,怎么產(chǎn)生呢??)
  Flume和Kafka完成實(shí)時(shí)數據采集
  寫(xiě)在前面
  Flume和Kafka通常在生產(chǎn)環(huán)境中結合使用。能夠結合使用兩者來(lái)采集實(shí)時(shí)日志信息非常重要。如果是這樣,你不知道flume和kafka,你可以先查看我寫(xiě)的關(guān)于這兩部分的知識。再學(xué)習一下,這部分操作也是可以的。html
  采集 的實(shí)時(shí)數據面臨一個(gè)問(wèn)題。我們如何生成我們的實(shí)時(shí)數據源?因為我們可能想直接獲取實(shí)時(shí)數據流不是那么方便。在文章之前寫(xiě)過(guò)一篇關(guān)于實(shí)時(shí)數據流的python生成器的文章,文章地址:
  大家可以先看看,如何生成實(shí)時(shí)數據...python
  主意?? 如何開(kāi)始?? nginx
  分析:我們可以從數據的流向開(kāi)始。數據一開(kāi)始就在網(wǎng)絡(luò )服務(wù)器上。我們的訪(fǎng)問(wèn)日志是nginx服務(wù)器實(shí)時(shí)采集到指定文件的。我們從這個(gè)文件中采集日志數據,即:webserver=&gt;flume=&gt;kafkaweb
  網(wǎng)絡(luò )服務(wù)器日志存儲文件位置
  這個(gè)文件的位置通常是我們自己設置的shell
  我們的網(wǎng)絡(luò )日志存儲的目錄是:
  apache下/home/hadoop/data/project/logs/access.log
  [hadoop@hadoop000 logs]$ pwd
/home/hadoop/data/project/logs
[hadoop@hadoop000 logs]$ ls
access.log
[hadoop@hadoop000 logs]$
  氟蟲(chóng)腈
  做flume其實(shí)就是寫(xiě)一個(gè)conf文件,這樣就面臨選擇的問(wèn)題
  來(lái)源選擇?頻道選擇?水槽選擇?紅寶石
  這里我們選擇exec source memory channel kafka sink server
  怎么寫(xiě)?
  按照前面說(shuō)的1234步app
  從官方網(wǎng)站上,我們可以找到我們的選擇應該怎么寫(xiě):
  1) 配置源
  執行源
  # Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
  2) 配置通道
  記憶通道
  a1.channels.c1.type = memory
  3) 配置接收器
  卡夫卡水槽
  水槽1.6 版本可以參考
  a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
  4) 將以上三個(gè)組件串在一起
  a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  **讓我們新建一個(gè)名為 test3.conf 的文件
  粘貼我們分析的代碼:**
  [hadoop@hadoop000 conf]$ vim test3.conf
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
a1.channels.c1.type = memory
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  這里先不展開(kāi)了,因為涉及到kafka,首先要部署kafka,
  Kafka部署
  Kafka是如何部署的??
  按照官網(wǎng)的說(shuō)法,我們先啟動(dòng)一個(gè)zookeeper進(jìn)程,然后就可以啟動(dòng)kafka服務(wù)器了
  第一步:?jiǎn)?dòng)zookeeper
  [hadoop@hadoop000 ~]$
[hadoop@hadoop000 ~]$ jps
29147 Jps
[hadoop@hadoop000 ~]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop000 ~]$ jps
29172 QuorumPeerMain
29189 Jps
[hadoop@hadoop000 ~]$
  第二步:?jiǎn)?dòng)服務(wù)器
  [hadoop@hadoop000 ~]$ kafka-server-start.sh $KAFKA_HOME/config/server.properties
#外開(kāi)一個(gè)窗口,查看jps
[hadoop@hadoop000 ~]$ jps
29330 Jps
29172 QuorumPeerMain
29229 Kafka
[hadoop@hadoop000 ~]$
  如果有,這部分不是很熟悉,可以參考
  第 3 步:創(chuàng )建主題
  [hadoop@hadoop000 ~]$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic flume_kafka
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic "flume_kafka".
[hadoop@hadoop000 ~]$
  第四步:?jiǎn)?dòng)之前的代理
  [hadoop@hadoop000 conf]$ flume-ng agent --name a1 --conf . --conf-file ./test3.conf -Dflume.root.logger=INFO,console
  第 5 步:?jiǎn)?dòng)消費者
  kafka-console-consumer.sh --zookeeper hadoop000:2181 –topic flume-kafka
  執行完上面的第五步,就會(huì )收到刷新屏幕的結果了,哈哈哈??!
  
  上面的消費者會(huì )不斷刷新屏幕,還是蠻有意思的?。?!
  這里的消費者就是把接收到的數據放到屏幕上
  后面會(huì )介紹使用SparkStreaming為消費者實(shí)時(shí)接收數據,并對接收到的數據進(jìn)行簡(jiǎn)單的數據清洗,從隨機生成的日志中過(guò)濾出我們需要的數據…… 查看全部

  實(shí)時(shí)文章采集(
前面Flume和Kafka的實(shí)時(shí)數據源,怎么產(chǎn)生呢??)
  Flume和Kafka完成實(shí)時(shí)數據采集
  寫(xiě)在前面
  Flume和Kafka通常在生產(chǎn)環(huán)境中結合使用。能夠結合使用兩者來(lái)采集實(shí)時(shí)日志信息非常重要。如果是這樣,你不知道flume和kafka,你可以先查看我寫(xiě)的關(guān)于這兩部分的知識。再學(xué)習一下,這部分操作也是可以的。html
  采集 的實(shí)時(shí)數據面臨一個(gè)問(wèn)題。我們如何生成我們的實(shí)時(shí)數據源?因為我們可能想直接獲取實(shí)時(shí)數據流不是那么方便。在文章之前寫(xiě)過(guò)一篇關(guān)于實(shí)時(shí)數據流的python生成器的文章,文章地址:
  大家可以先看看,如何生成實(shí)時(shí)數據...python
  主意?? 如何開(kāi)始?? nginx
  分析:我們可以從數據的流向開(kāi)始。數據一開(kāi)始就在網(wǎng)絡(luò )服務(wù)器上。我們的訪(fǎng)問(wèn)日志是nginx服務(wù)器實(shí)時(shí)采集到指定文件的。我們從這個(gè)文件中采集日志數據,即:webserver=&gt;flume=&gt;kafkaweb
  網(wǎng)絡(luò )服務(wù)器日志存儲文件位置
  這個(gè)文件的位置通常是我們自己設置的shell
  我們的網(wǎng)絡(luò )日志存儲的目錄是:
  apache下/home/hadoop/data/project/logs/access.log
  [hadoop@hadoop000 logs]$ pwd
/home/hadoop/data/project/logs
[hadoop@hadoop000 logs]$ ls
access.log
[hadoop@hadoop000 logs]$
  氟蟲(chóng)腈
  做flume其實(shí)就是寫(xiě)一個(gè)conf文件,這樣就面臨選擇的問(wèn)題
  來(lái)源選擇?頻道選擇?水槽選擇?紅寶石
  這里我們選擇exec source memory channel kafka sink server
  怎么寫(xiě)?
  按照前面說(shuō)的1234步app
  從官方網(wǎng)站上,我們可以找到我們的選擇應該怎么寫(xiě):
  1) 配置源
  執行源
  # Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
  2) 配置通道
  記憶通道
  a1.channels.c1.type = memory
  3) 配置接收器
  卡夫卡水槽
  水槽1.6 版本可以參考
  a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
  4) 將以上三個(gè)組件串在一起
  a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  **讓我們新建一個(gè)名為 test3.conf 的文件
  粘貼我們分析的代碼:**
  [hadoop@hadoop000 conf]$ vim test3.conf
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
a1.channels.c1.type = memory
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  這里先不展開(kāi)了,因為涉及到kafka,首先要部署kafka,
  Kafka部署
  Kafka是如何部署的??
  按照官網(wǎng)的說(shuō)法,我們先啟動(dòng)一個(gè)zookeeper進(jìn)程,然后就可以啟動(dòng)kafka服務(wù)器了
  第一步:?jiǎn)?dòng)zookeeper
  [hadoop@hadoop000 ~]$
[hadoop@hadoop000 ~]$ jps
29147 Jps
[hadoop@hadoop000 ~]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop000 ~]$ jps
29172 QuorumPeerMain
29189 Jps
[hadoop@hadoop000 ~]$
  第二步:?jiǎn)?dòng)服務(wù)器
  [hadoop@hadoop000 ~]$ kafka-server-start.sh $KAFKA_HOME/config/server.properties
#外開(kāi)一個(gè)窗口,查看jps
[hadoop@hadoop000 ~]$ jps
29330 Jps
29172 QuorumPeerMain
29229 Kafka
[hadoop@hadoop000 ~]$
  如果有,這部分不是很熟悉,可以參考
  第 3 步:創(chuàng )建主題
  [hadoop@hadoop000 ~]$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic flume_kafka
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic "flume_kafka".
[hadoop@hadoop000 ~]$
  第四步:?jiǎn)?dòng)之前的代理
  [hadoop@hadoop000 conf]$ flume-ng agent --name a1 --conf . --conf-file ./test3.conf -Dflume.root.logger=INFO,console
  第 5 步:?jiǎn)?dòng)消費者
  kafka-console-consumer.sh --zookeeper hadoop000:2181 –topic flume-kafka
  執行完上面的第五步,就會(huì )收到刷新屏幕的結果了,哈哈哈??!
  
  上面的消費者會(huì )不斷刷新屏幕,還是蠻有意思的?。?!
  這里的消費者就是把接收到的數據放到屏幕上
  后面會(huì )介紹使用SparkStreaming為消費者實(shí)時(shí)接收數據,并對接收到的數據進(jìn)行簡(jiǎn)單的數據清洗,從隨機生成的日志中過(guò)濾出我們需要的數據……

實(shí)時(shí)文章采集(Javaflume采集數據輸送到的方案)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 225 次瀏覽 ? 2021-12-12 19:28 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(Javaflume采集數據輸送到的方案)
  注:本文不僅提供了兩個(gè)選項,還詳細記錄了一些相關(guān)信息。 html
  方案一
  這個(gè)方案的核心是flume采集數據之后,根據hive表的結構,將采集數據發(fā)送到對應的地址,達到實(shí)時(shí)數據的目的貯存。這種實(shí)時(shí)實(shí)際上是一種準實(shí)時(shí)。爪哇
  假設hadoop集群已經(jīng)正常啟動(dòng),hive也已經(jīng)正常啟動(dòng),hive的文件地址為/hive/warehouse,然后hive中有如下表創(chuàng )建語(yǔ)句創(chuàng )建的表apache
  create table flume_test(uuid string);
  可以推斷flume_test表的地址在/hive/warehouse/flume_test,下面介紹flume:bash
  Flume 安裝步驟應用
  #下載
cd /opt
mkdir flume
wget http://archive.apache.org/dist ... ar.gz
tar xvzf apache-flume-1.6.0-bin.tar.gz
cd apache-flume-1.6.0-bin/conf
cp flume-env.sh.template flume-env.sh
  打開(kāi)flume-env文件,添加java變量dom
  export JAVA_HOME=/usr/java/jdk1.8.0_111
  然后添加環(huán)境變量,為了一次搞定,分別在profile和bashrc末尾添加eclipse
  export FLUME_HOME=/opt/flume/apache-flume-1.6.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
  然后是 maven
  source /etc/profile
  既然flume安裝好了,下面進(jìn)行配置,切換到conf文件夾,將flume-conf.properties.template復制到agent.conf,然后編輯ide
  #定義活躍列表
agent.sources=avroSrc
agent.channels=memChannel
agent.sinks=hdfsSink
#定義source
agent.sources.avroSrc.type=avro
agent.sources.avroSrc.channels=memChannel
agent.sources.avroSrc.bind=0.0.0.0
agent.sources.avroSrc.port=4353
agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
#定義channel
agent.channels.memChannel.type=memory
agent.channels.memChannel.capacity = 1000
agent.channels.memChannel.transactionCapacity = 100
#定義sink
agent.sinks.hdfsSink.type=hdfs
agent.sinks.hdfsSink.channel=memChannel
#agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/flume/test/%{topic}/%Y%m%d%H
agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/hive/warehouse/flume_test
agent.sinks.hdfsSink.hdfs.filePrefix=stu-flume
agent.sinks.hdfsSink.hdfs.inUsePrefix=inuse-stu-flume
agent.sinks.hdfsSink.hdfs.inUseSuffix=.temp
agent.sinks.hdfsSink.hdfs.rollInterval=0
agent.sinks.hdfsSink.hdfs.rollSize=10240000
agent.sinks.hdfsSink.hdfs.rollCount=0
agent.sinks.hdfsSink.hdfs.idleTimeout=0
agent.sinks.hdfsSink.hdfs.batchSize=100
agent.sinks.hdfsSink.hdfs.minBlockReplicas=1
# agent.sinks.hdfsSink.hdfs.writeFormat = Text
agent.sinks.hdfsSink.hdfs.fileType = DataStream
  各個(gè)項目的具體配置請參考以下博客。需要關(guān)注的四個(gè)屬性分別是rollInterval、rollSize、rollCount、idleTimeout。如果發(fā)現配置不可用,檢查屬性minBlockReplicas是否配置,值為1,原因如下:oop
  配置后即可啟動(dòng),啟動(dòng)命令
  ./flume-ng agent -f ../conf/agent.conf -n agent -c conf -Dflume.monitoring.type=http \-Dflume.monitoring.port=5653 -Dflume.root.logger=DEBUG,console
  注意:-n 是代理的名稱(chēng),需要對應配置文件的第一個(gè)值。這個(gè)啟動(dòng)命令也開(kāi)啟了監控,監控地址:5563/metrics; -f 指的是配置文件的路徑和名稱(chēng)。修改flume的conf后,不需要重啟。默認情況下,它每 30 秒刷新一次并自動(dòng)加載最新配置。
  flume安裝啟動(dòng)后,編寫(xiě)測試程序。打開(kāi)eclipse并創(chuàng )建一個(gè)maven項目
  
4.0.0
scc
stu-flume
0.0.1-SNAPSHOT
war
stu-flume


log4j
log4j
1.2.9


org.apache.flume.flume-ng-clients
flume-ng-log4jappender
1.6.0


  測試 servlet
  public class GenerLogServlet extends HttpServlet {
private static final Logger LOGGER = Logger.getLogger(GenerLogServlet.class);
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
for (;;) {
LOGGER.info(UUID.randomUUID().toString());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
  log4j.properties
  #log4j settings
#log4j.rootLogger=debug, CONSOLE
log4j.logger.scc.stu_flume.GenerLogServlet=debug,GenerLogServlet
#log4j.rootLogger=INFO
log4j.appender.GenerLogServlet=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.GenerLogServlet.Hostname=10.5.3.100
log4j.appender.GenerLogServlet.Port=4353
log4j.appender.GenerLogServletUnsafeMode=false
  啟動(dòng)項目,訪(fǎng)問(wèn):8080/log開(kāi)始生產(chǎn)數據。需要注意的是,如果flume配置是根據時(shí)間戳對文件進(jìn)行分組(這種情況可以根據時(shí)間匹配hive分區),那么agent.conf中的source必須配置
  agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
  否則flume sink會(huì )報錯找不到timestamp。因為源碼org.apache.flume.clients.log4jappender.Log4jAvroHeaders中定義的timestamp的key是flume.client.log4j.timestamp而不是timestamp,所以需要手動(dòng)添加一個(gè)timestamp,如果要求這個(gè)timestamp是時(shí)間數據生產(chǎn),可以修改源碼或者手動(dòng)配置源碼攔截器。
  Flume 有一種非常靈活的使用方式??勺远xsource、sink、interceptor、channel selector等,適應采集、數據緩沖等大多數場(chǎng)景。
  觀(guān)察hadoop目錄,發(fā)現flume已經(jīng)按照配置把數據移動(dòng)到了對應的hive表目錄下,如下圖:
  
  打開(kāi)hive客戶(hù)端,使用數據查詢(xún)命令,發(fā)現可以查詢(xún)到數據!并且可以按照hive表的數據規則寫(xiě)入hive的分區表和桶表flume,然后實(shí)時(shí)插入數據。至此,程序結束。
  這個(gè)程序的缺點(diǎn):
  因為flume在寫(xiě)文件的時(shí)候獨占了正在寫(xiě)的文件資源,所以hive無(wú)法讀取正在寫(xiě)的文件的內容,也就是說(shuō),如果每5分鐘生成一個(gè)文件,那么正在寫(xiě)的文件的內容就不會(huì )被hive讀取,這意味著(zhù)hive最多有5分鐘的延遲。而且如果減少時(shí)間,延遲會(huì )減少,但即使設置為30分鐘或1小時(shí),在flume流量不大的情況下也會(huì )產(chǎn)生很多零散的小文件。這與hive的特長(cháng)相悖,hive擅長(cháng)處理大文件,對于分散的小文件,hive性能會(huì )下降很多。
  方案二
  對比方案一,測試程序和source不變,sink改為hbase-sink,數據實(shí)時(shí)插入hbase,然后在hive中創(chuàng )建hbase映射表,hive從hbase讀取數據到實(shí)現實(shí)時(shí)插入的效果。由于字數限制,方案二記錄在以下博客鏈接中: 查看全部

  實(shí)時(shí)文章采集(Javaflume采集數據輸送到的方案)
  注:本文不僅提供了兩個(gè)選項,還詳細記錄了一些相關(guān)信息。 html
  方案一
  這個(gè)方案的核心是flume采集數據之后,根據hive表的結構,將采集數據發(fā)送到對應的地址,達到實(shí)時(shí)數據的目的貯存。這種實(shí)時(shí)實(shí)際上是一種準實(shí)時(shí)。爪哇
  假設hadoop集群已經(jīng)正常啟動(dòng),hive也已經(jīng)正常啟動(dòng),hive的文件地址為/hive/warehouse,然后hive中有如下表創(chuàng )建語(yǔ)句創(chuàng )建的表apache
  create table flume_test(uuid string);
  可以推斷flume_test表的地址在/hive/warehouse/flume_test,下面介紹flume:bash
  Flume 安裝步驟應用
  #下載
cd /opt
mkdir flume
wget http://archive.apache.org/dist ... ar.gz
tar xvzf apache-flume-1.6.0-bin.tar.gz
cd apache-flume-1.6.0-bin/conf
cp flume-env.sh.template flume-env.sh
  打開(kāi)flume-env文件,添加java變量dom
  export JAVA_HOME=/usr/java/jdk1.8.0_111
  然后添加環(huán)境變量,為了一次搞定,分別在profile和bashrc末尾添加eclipse
  export FLUME_HOME=/opt/flume/apache-flume-1.6.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
  然后是 maven
  source /etc/profile
  既然flume安裝好了,下面進(jìn)行配置,切換到conf文件夾,將flume-conf.properties.template復制到agent.conf,然后編輯ide
  #定義活躍列表
agent.sources=avroSrc
agent.channels=memChannel
agent.sinks=hdfsSink
#定義source
agent.sources.avroSrc.type=avro
agent.sources.avroSrc.channels=memChannel
agent.sources.avroSrc.bind=0.0.0.0
agent.sources.avroSrc.port=4353
agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
#定義channel
agent.channels.memChannel.type=memory
agent.channels.memChannel.capacity = 1000
agent.channels.memChannel.transactionCapacity = 100
#定義sink
agent.sinks.hdfsSink.type=hdfs
agent.sinks.hdfsSink.channel=memChannel
#agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/flume/test/%{topic}/%Y%m%d%H
agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/hive/warehouse/flume_test
agent.sinks.hdfsSink.hdfs.filePrefix=stu-flume
agent.sinks.hdfsSink.hdfs.inUsePrefix=inuse-stu-flume
agent.sinks.hdfsSink.hdfs.inUseSuffix=.temp
agent.sinks.hdfsSink.hdfs.rollInterval=0
agent.sinks.hdfsSink.hdfs.rollSize=10240000
agent.sinks.hdfsSink.hdfs.rollCount=0
agent.sinks.hdfsSink.hdfs.idleTimeout=0
agent.sinks.hdfsSink.hdfs.batchSize=100
agent.sinks.hdfsSink.hdfs.minBlockReplicas=1
# agent.sinks.hdfsSink.hdfs.writeFormat = Text
agent.sinks.hdfsSink.hdfs.fileType = DataStream
  各個(gè)項目的具體配置請參考以下博客。需要關(guān)注的四個(gè)屬性分別是rollInterval、rollSize、rollCount、idleTimeout。如果發(fā)現配置不可用,檢查屬性minBlockReplicas是否配置,值為1,原因如下:oop
  配置后即可啟動(dòng),啟動(dòng)命令
  ./flume-ng agent -f ../conf/agent.conf -n agent -c conf -Dflume.monitoring.type=http \-Dflume.monitoring.port=5653 -Dflume.root.logger=DEBUG,console
  注意:-n 是代理的名稱(chēng),需要對應配置文件的第一個(gè)值。這個(gè)啟動(dòng)命令也開(kāi)啟了監控,監控地址:5563/metrics; -f 指的是配置文件的路徑和名稱(chēng)。修改flume的conf后,不需要重啟。默認情況下,它每 30 秒刷新一次并自動(dòng)加載最新配置。
  flume安裝啟動(dòng)后,編寫(xiě)測試程序。打開(kāi)eclipse并創(chuàng )建一個(gè)maven項目
  
4.0.0
scc
stu-flume
0.0.1-SNAPSHOT
war
stu-flume


log4j
log4j
1.2.9


org.apache.flume.flume-ng-clients
flume-ng-log4jappender
1.6.0


  測試 servlet
  public class GenerLogServlet extends HttpServlet {
private static final Logger LOGGER = Logger.getLogger(GenerLogServlet.class);
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
for (;;) {
LOGGER.info(UUID.randomUUID().toString());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
  log4j.properties
  #log4j settings
#log4j.rootLogger=debug, CONSOLE
log4j.logger.scc.stu_flume.GenerLogServlet=debug,GenerLogServlet
#log4j.rootLogger=INFO
log4j.appender.GenerLogServlet=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.GenerLogServlet.Hostname=10.5.3.100
log4j.appender.GenerLogServlet.Port=4353
log4j.appender.GenerLogServletUnsafeMode=false
  啟動(dòng)項目,訪(fǎng)問(wèn):8080/log開(kāi)始生產(chǎn)數據。需要注意的是,如果flume配置是根據時(shí)間戳對文件進(jìn)行分組(這種情況可以根據時(shí)間匹配hive分區),那么agent.conf中的source必須配置
  agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
  否則flume sink會(huì )報錯找不到timestamp。因為源碼org.apache.flume.clients.log4jappender.Log4jAvroHeaders中定義的timestamp的key是flume.client.log4j.timestamp而不是timestamp,所以需要手動(dòng)添加一個(gè)timestamp,如果要求這個(gè)timestamp是時(shí)間數據生產(chǎn),可以修改源碼或者手動(dòng)配置源碼攔截器。
  Flume 有一種非常靈活的使用方式??勺远xsource、sink、interceptor、channel selector等,適應采集、數據緩沖等大多數場(chǎng)景。
  觀(guān)察hadoop目錄,發(fā)現flume已經(jīng)按照配置把數據移動(dòng)到了對應的hive表目錄下,如下圖:
  
  打開(kāi)hive客戶(hù)端,使用數據查詢(xún)命令,發(fā)現可以查詢(xún)到數據!并且可以按照hive表的數據規則寫(xiě)入hive的分區表和桶表flume,然后實(shí)時(shí)插入數據。至此,程序結束。
  這個(gè)程序的缺點(diǎn):
  因為flume在寫(xiě)文件的時(shí)候獨占了正在寫(xiě)的文件資源,所以hive無(wú)法讀取正在寫(xiě)的文件的內容,也就是說(shuō),如果每5分鐘生成一個(gè)文件,那么正在寫(xiě)的文件的內容就不會(huì )被hive讀取,這意味著(zhù)hive最多有5分鐘的延遲。而且如果減少時(shí)間,延遲會(huì )減少,但即使設置為30分鐘或1小時(shí),在flume流量不大的情況下也會(huì )產(chǎn)生很多零散的小文件。這與hive的特長(cháng)相悖,hive擅長(cháng)處理大文件,對于分散的小文件,hive性能會(huì )下降很多。
  方案二
  對比方案一,測試程序和source不變,sink改為hbase-sink,數據實(shí)時(shí)插入hbase,然后在hive中創(chuàng )建hbase映射表,hive從hbase讀取數據到實(shí)現實(shí)時(shí)插入的效果。由于字數限制,方案二記錄在以下博客鏈接中:

實(shí)時(shí)文章采集(實(shí)時(shí)采集并分析Nginx日志,自動(dòng)化封禁封禁風(fēng)險IP方案 )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 207 次瀏覽 ? 2021-12-10 08:21 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(實(shí)時(shí)采集并分析Nginx日志,自動(dòng)化封禁封禁風(fēng)險IP方案
)
  實(shí)時(shí)采集并分析Nginx日志,自動(dòng)攔截有風(fēng)險的IP程序php
  文章地址:html
  前言
  本文分享了自動(dòng)化采集、分析Nginx日志、實(shí)時(shí)封禁風(fēng)險IP的解決方案和實(shí)踐。節點(diǎn)
  閱讀這個(gè)文章你可以得到:nginx
  閱讀這篇文章你需要:git
  背景
  分析nginx訪(fǎng)問(wèn)日志時(shí),看到大量無(wú)效的404請求,URL都是隨機的敏感詞。這些請求最近變得更加頻繁。手動(dòng)批量禁止部分IP后,新的IP很快就會(huì )進(jìn)來(lái)。 web
  于是萌生了自動(dòng)分析Nginx日志后實(shí)時(shí)封禁IP的想法。
  
  需求序號需求備注
  1
  Nginx 日志采集
  解決方案很多,我選擇了最適合我服務(wù)器的方案:filebeat+redis
  2
  實(shí)時(shí)日志分析
  實(shí)時(shí)消費redis日志,分析需要的數據進(jìn)行分析
  3
  知識產(chǎn)權風(fēng)險評估
  IP風(fēng)險評估,多維度:訪(fǎng)問(wèn)次數、IP歸屬、使用等。
  4
  實(shí)時(shí)禁止
  阻止風(fēng)險 IP 不同的時(shí)間長(cháng)度
  分析
  簡(jiǎn)單從日志中總結了幾個(gè)特點(diǎn):sql
  序列號功能說(shuō)明備注
  1
  經(jīng)常來(lái)訪(fǎng)
  每秒數次甚至數十次
  正常的流量行為也有突發(fā)流量,但不會(huì )持續太久
  2
  連續請求
  持久的
  和上面一樣
  3
  多數 404
  大部分請求的URL可能不存在,還有admin、login、phpMyAdmin、backup等敏感詞。
  這種情況下正常的交通行為并不多
  4
  IP異常
  在A(yíng)SN之后,我們可以看到一些線(xiàn)索,通常這種請求的IP不是普通??的我的用戶(hù)。
  查詢(xún)其用途通常是COM(商業(yè))、DCH(數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等。
  備注:這里分析的IP是通過(guò)ip2location的免費版數據庫,后面會(huì )詳細介紹。
  項目日志采集
  來(lái)源:作者網(wǎng)站由docker部署,Nginx為唯一入口,記錄所有訪(fǎng)問(wèn)日志。
  采集:由于資源有限,我選擇了一個(gè)輕量級的日志工具Filebeat,它采集Nginx的日志并寫(xiě)入Redis。
  風(fēng)險評估
  Monitor服務(wù)根據URL、IP、歷史分數等進(jìn)行風(fēng)險評估,計算出最終的風(fēng)險系數。
  知識產(chǎn)權禁令
  Monitor發(fā)現危險IP(風(fēng)險系數超過(guò)閾值)后,調用Actuator對該IP進(jìn)行封堵,根據風(fēng)險系數計算封禁時(shí)長(cháng)。
  實(shí)現日志采集
  Filebeat 的使用非常簡(jiǎn)單。筆者通過(guò)swarm進(jìn)行部署,部署文件如下(為防止代碼過(guò)長(cháng),其余服務(wù)在此省略):
  version: '3.5'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:7.4.2
deploy:
resources:
limits:
memory: 64M
restart_policy:
condition: on-failure
volumes:
- $PWD/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- $PWD/filebeat/data:/usr/share/filebeat/data:rw
- $PWD/nginx/logs:/logs/nginx:ro
environment:
TZ: Asia/Shanghai
depends_on:
- nginx
  filebeat.yml 文件內容如下:
  filebeat.inputs:
- type: log
enabled: true
paths:
- /logs/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.redis:
hosts: ["redis-server"]
password: "{your redis password}"
key: "filebeat:nginx:accesslog"
db: 0
timeout: 5
  部署成功后,查看redis數據:
  
  風(fēng)險評估
  Monitor 服務(wù)是用 Java 編寫(xiě)的,使用 docker 部署,并通過(guò) http 與 Actuator 服務(wù)交互。
  風(fēng)險評估需要整合多個(gè)維度:
  序列號維度策略
  1
  知識產(chǎn)權歸屬
  中文網(wǎng)站的用戶(hù)群通常屬于中國。如果IP屬于國外,就需要警惕了。
  2
  用
  IP獲得使用后,DCH(??數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等,增加風(fēng)險評分。
  3
  訪(fǎng)問(wèn)資源
  訪(fǎng)問(wèn)資源不存在且路徑收錄敏感詞,如admin、login、phpMyAdmin、backup等,提高風(fēng)險評分。
  4
  訪(fǎng)問(wèn)的頻率和持續時(shí)間
  頻繁和持續的請求,考慮提高分數。
  5
  歷史成績(jì)
  歷史分數被整合到當前分數中。
  獲取 IP 歸屬
  獲取IP歸屬地相對容易。許多數據服務(wù)網(wǎng)站提供免費的包,例如IpInfo。還有免費版本的 IP 數據庫可以下載,例如 ip2location。
  作者使用了免費版的ip2location數據庫:
  
  ip_from 和 ip_to 是IP段的開(kāi)始和結束,存儲格式為十進(jìn)制。在 MySQL 中,可以通過(guò) inet_aton('your ip') 函數將 IP 轉換為十進(jìn)制。例如:
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_db11 WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocountry_codecountry_nameregion_namecity_namelatitudelongitudezip_codetime_zone
  2899902464
  2899910655
  我們
  美國
  加利福尼亞州
  山頂風(fēng)光
  37.405992
  -122.07852
  94043
  -07:00
  獲取AS、ASN和用法
  網(wǎng)站提供的大部分免費服務(wù)都無(wú)法查詢(xún)ASN或者沒(méi)有目的。ASN數據也有免費的數據庫,但還是沒(méi)有目的和類(lèi)型等,這時(shí)候作者通過(guò)其他方式救國。
  ip2location 提供免費版本的 IP2Location?LITE IP-ASN 和 IP2Proxy?LITE 數據庫。
  IP2Location?LITE IP-ASN:該數據庫提供了對肯定自治系統和編號 (ASN) 的參考。
  IP2Proxy?LITE:數據庫收錄用作開(kāi)放代理的 IP 地址。該數據庫包括所有公共 IPv4 和 IPv6 地址的代理類(lèi)型、國家、地區、城市、ISP、域、使用類(lèi)型、ASN 和最新記錄。
  IP2Location?LITE IP-ASN 無(wú)法找出所使用的 IP 類(lèi)型。如果數據較少,IP2Proxy?LITE 不一定收錄指定的 IP。但是可以結合這兩個(gè)庫來(lái)粗略猜測IP的用途:
  首先,在 IP2Proxy?LITE 中查找 IP 的 ASN。
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_asn WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocidrasnas
  2899904000
  2899904255
  172.217.6.0/24
  15169
  谷歌有限責任公司
  結合ASN和IP,查詢(xún)與指定IP最近的同一個(gè)ASN的兩條記錄:
<p>set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2proxy_px8 WHERE ip_from >= @a AND asn = 15169 ORDER BY ip_from ASC LIMIT 1;
SELECT * FROM ip2proxy_px8 WHERE ip_from 查看全部

  實(shí)時(shí)文章采集(實(shí)時(shí)采集并分析Nginx日志,自動(dòng)化封禁封禁風(fēng)險IP方案
)
  實(shí)時(shí)采集并分析Nginx日志,自動(dòng)攔截有風(fēng)險的IP程序php
  文章地址:html
  前言
  本文分享了自動(dòng)化采集、分析Nginx日志、實(shí)時(shí)封禁風(fēng)險IP的解決方案和實(shí)踐。節點(diǎn)
  閱讀這個(gè)文章你可以得到:nginx
  閱讀這篇文章你需要:git
  背景
  分析nginx訪(fǎng)問(wèn)日志時(shí),看到大量無(wú)效的404請求,URL都是隨機的敏感詞。這些請求最近變得更加頻繁。手動(dòng)批量禁止部分IP后,新的IP很快就會(huì )進(jìn)來(lái)。 web
  于是萌生了自動(dòng)分析Nginx日志后實(shí)時(shí)封禁IP的想法。
  
  需求序號需求備注
  1
  Nginx 日志采集
  解決方案很多,我選擇了最適合我服務(wù)器的方案:filebeat+redis
  2
  實(shí)時(shí)日志分析
  實(shí)時(shí)消費redis日志,分析需要的數據進(jìn)行分析
  3
  知識產(chǎn)權風(fēng)險評估
  IP風(fēng)險評估,多維度:訪(fǎng)問(wèn)次數、IP歸屬、使用等。
  4
  實(shí)時(shí)禁止
  阻止風(fēng)險 IP 不同的時(shí)間長(cháng)度
  分析
  簡(jiǎn)單從日志中總結了幾個(gè)特點(diǎn):sql
  序列號功能說(shuō)明備注
  1
  經(jīng)常來(lái)訪(fǎng)
  每秒數次甚至數十次
  正常的流量行為也有突發(fā)流量,但不會(huì )持續太久
  2
  連續請求
  持久的
  和上面一樣
  3
  多數 404
  大部分請求的URL可能不存在,還有admin、login、phpMyAdmin、backup等敏感詞。
  這種情況下正常的交通行為并不多
  4
  IP異常
  在A(yíng)SN之后,我們可以看到一些線(xiàn)索,通常這種請求的IP不是普通??的我的用戶(hù)。
  查詢(xún)其用途通常是COM(商業(yè))、DCH(數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等。
  備注:這里分析的IP是通過(guò)ip2location的免費版數據庫,后面會(huì )詳細介紹。
  項目日志采集
  來(lái)源:作者網(wǎng)站由docker部署,Nginx為唯一入口,記錄所有訪(fǎng)問(wèn)日志。
  采集:由于資源有限,我選擇了一個(gè)輕量級的日志工具Filebeat,它采集Nginx的日志并寫(xiě)入Redis。
  風(fēng)險評估
  Monitor服務(wù)根據URL、IP、歷史分數等進(jìn)行風(fēng)險評估,計算出最終的風(fēng)險系數。
  知識產(chǎn)權禁令
  Monitor發(fā)現危險IP(風(fēng)險系數超過(guò)閾值)后,調用Actuator對該IP進(jìn)行封堵,根據風(fēng)險系數計算封禁時(shí)長(cháng)。
  實(shí)現日志采集
  Filebeat 的使用非常簡(jiǎn)單。筆者通過(guò)swarm進(jìn)行部署,部署文件如下(為防止代碼過(guò)長(cháng),其余服務(wù)在此省略):
  version: '3.5'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:7.4.2
deploy:
resources:
limits:
memory: 64M
restart_policy:
condition: on-failure
volumes:
- $PWD/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- $PWD/filebeat/data:/usr/share/filebeat/data:rw
- $PWD/nginx/logs:/logs/nginx:ro
environment:
TZ: Asia/Shanghai
depends_on:
- nginx
  filebeat.yml 文件內容如下:
  filebeat.inputs:
- type: log
enabled: true
paths:
- /logs/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.redis:
hosts: ["redis-server"]
password: "{your redis password}"
key: "filebeat:nginx:accesslog"
db: 0
timeout: 5
  部署成功后,查看redis數據:
  
  風(fēng)險評估
  Monitor 服務(wù)是用 Java 編寫(xiě)的,使用 docker 部署,并通過(guò) http 與 Actuator 服務(wù)交互。
  風(fēng)險評估需要整合多個(gè)維度:
  序列號維度策略
  1
  知識產(chǎn)權歸屬
  中文網(wǎng)站的用戶(hù)群通常屬于中國。如果IP屬于國外,就需要警惕了。
  2
  用
  IP獲得使用后,DCH(??數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等,增加風(fēng)險評分。
  3
  訪(fǎng)問(wèn)資源
  訪(fǎng)問(wèn)資源不存在且路徑收錄敏感詞,如admin、login、phpMyAdmin、backup等,提高風(fēng)險評分。
  4
  訪(fǎng)問(wèn)的頻率和持續時(shí)間
  頻繁和持續的請求,考慮提高分數。
  5
  歷史成績(jì)
  歷史分數被整合到當前分數中。
  獲取 IP 歸屬
  獲取IP歸屬地相對容易。許多數據服務(wù)網(wǎng)站提供免費的包,例如IpInfo。還有免費版本的 IP 數據庫可以下載,例如 ip2location。
  作者使用了免費版的ip2location數據庫:
  
  ip_from 和 ip_to 是IP段的開(kāi)始和結束,存儲格式為十進(jìn)制。在 MySQL 中,可以通過(guò) inet_aton('your ip') 函數將 IP 轉換為十進(jìn)制。例如:
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_db11 WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocountry_codecountry_nameregion_namecity_namelatitudelongitudezip_codetime_zone
  2899902464
  2899910655
  我們
  美國
  加利福尼亞州
  山頂風(fēng)光
  37.405992
  -122.07852
  94043
  -07:00
  獲取AS、ASN和用法
  網(wǎng)站提供的大部分免費服務(wù)都無(wú)法查詢(xún)ASN或者沒(méi)有目的。ASN數據也有免費的數據庫,但還是沒(méi)有目的和類(lèi)型等,這時(shí)候作者通過(guò)其他方式救國。
  ip2location 提供免費版本的 IP2Location?LITE IP-ASN 和 IP2Proxy?LITE 數據庫。
  IP2Location?LITE IP-ASN:該數據庫提供了對肯定自治系統和編號 (ASN) 的參考。
  IP2Proxy?LITE:數據庫收錄用作開(kāi)放代理的 IP 地址。該數據庫包括所有公共 IPv4 和 IPv6 地址的代理類(lèi)型、國家、地區、城市、ISP、域、使用類(lèi)型、ASN 和最新記錄。
  IP2Location?LITE IP-ASN 無(wú)法找出所使用的 IP 類(lèi)型。如果數據較少,IP2Proxy?LITE 不一定收錄指定的 IP。但是可以結合這兩個(gè)庫來(lái)粗略猜測IP的用途:
  首先,在 IP2Proxy?LITE 中查找 IP 的 ASN。
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_asn WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocidrasnas
  2899904000
  2899904255
  172.217.6.0/24
  15169
  谷歌有限責任公司
  結合ASN和IP,查詢(xún)與指定IP最近的同一個(gè)ASN的兩條記錄:
<p>set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2proxy_px8 WHERE ip_from >= @a AND asn = 15169 ORDER BY ip_from ASC LIMIT 1;
SELECT * FROM ip2proxy_px8 WHERE ip_from

實(shí)時(shí)文章采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 169 次瀏覽 ? 2021-12-09 23:08 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計)
  本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,利用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
  一、解決方案描述(一)概述
  本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,傳輸到CKafka,再連接CKafka數據流計算 Oceanus (Flink) ,經(jīng)過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理,輸出到 Elasticsearch,最后通過(guò) Kibana 頁(yè)面查詢(xún)結果。方案中使用Promethus監控流計算Oceanus作業(yè)運行狀態(tài)等系統指標,使用云Grafana監控CVM或業(yè)務(wù)應用指標。
  (二)方案結構二、前期準備
  實(shí)施本方案前,請確保已創(chuàng )建并配置好相應的大數據組件。
  (一)創(chuàng )建私網(wǎng)VPC
  私有網(wǎng)絡(luò )(VPC)是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間。在搭建CKafka、流計算Oceanus、Elasticsearch集群等服務(wù)時(shí),選擇推薦同一個(gè)VPC。具體創(chuàng )建步驟請參考幫助文檔()。
  (二)創(chuàng )建CKafka實(shí)例
  Kafka建議選擇最新的2.4.1版本,與Filebeat 采集工具有更好的兼容性。
  購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info
  (三)創(chuàng )建流計算Oceanus集群
  流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具。它是基于A(yíng)pache Flink構建的企業(yè)級實(shí)時(shí)大數據分析平臺,具有一站式開(kāi)發(fā)、無(wú)縫連接、亞秒級延遲、低成本、安全穩定等特點(diǎn)。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。
  在Streaming Oceanus控制臺的【集群管理】-&gt;【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (四)創(chuàng )建 Elasticsearch 實(shí)例
  在 Elasticsearch 控制臺中,點(diǎn)擊左上角的【新建】,創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (五)創(chuàng )建云監控Prometheus實(shí)例
  為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
  進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
  (六)創(chuàng )建獨立的 Grafana 資源
  單機Grafana需要在灰度發(fā)布的Grafana管理頁(yè)面()中單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
  (七)安裝和配置 Filebeat
  Filebeat是一款輕量級的日志數據采集工具,通過(guò)監控指定位置的文件來(lái)采集信息。在需要監控該VPC下的主機信息和應用信息的云服務(wù)器上安裝Filebeat。安裝方法一:下載Filebeat并安裝。下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】--&gt;【beats管理】中提供的Filebeat。本例使用方法一。下載到CVM并配置Filebeat,在filebeat.yml文件中添加如下配置項:
  # 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:\programdata\elasticsearch\logs\*
  # 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的IP地址+端口topic: &#x27;topic-app-info&#x27; # 請填寫(xiě)實(shí)際的topic
  請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
  注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
  三、項目實(shí)現
  接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
  (一)Filebeat 采集 數據
  1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集 jar 應用日志、JVM 使用情況、監聽(tīng)端口等,詳情請參考 Filebeat 官網(wǎng)
  ().
  # filebeat啟動(dòng)
./filebeat -e -c filebeat.yml
# 監控系統信息寫(xiě)入test.log文件
top -d 10 >>/tmp/test.log
  2、進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
  Filebeat采集中Kafka的數據格式:
  { "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
  (二)創(chuàng )建 Flink SQL 作業(yè)
  使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。
  1、定義源
  根據 Filebeat 中的 json 消息格式構建 Flink Table Source。
  CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( &#x27;connector&#x27; = &#x27;kafka&#x27;, -- 可選 &#x27;kafka&#x27;,&#x27;kafka-0.11&#x27;. 注意選擇對應的內置 Connector &#x27;topic&#x27; = &#x27;topic-app-info&#x27;, -- 替換為您要消費的 Topic &#x27;scan.startup.mode&#x27; = &#x27;earliest-offset&#x27;, &#x27;properties.bootstrap.servers&#x27; = &#x27;10.0.0.29:9092&#x27;, &#x27;properties.group.id&#x27; = &#x27;oceanus_group2&#x27;, -- 必選參數, 一定要指定 Group ID &#x27;format&#x27; = &#x27;json&#x27;, &#x27;json.ignore-parse-errors&#x27; = &#x27;true&#x27;, -- 忽略 JSON 結構解析異常 &#x27;json.fail-on-missing-field&#x27; = &#x27;false&#x27; -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
  2、定義接收器
  CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( &#x27;connector.type&#x27; = &#x27;elasticsearch&#x27;, &#x27;connector.version&#x27; = &#x27;6&#x27;, &#x27;connector.hosts&#x27; = &#x27;http://10.0.0.175:9200&#x27;, &#x27;connector.index&#x27; = &#x27;oceanus_test2&#x27;, &#x27;connector.document-type&#x27; = &#x27;_doc&#x27;, &#x27;connector.username&#x27; = &#x27;elastic&#x27;, &#x27;connector.password&#x27; = &#x27;yourpassword&#x27;, &#x27;update-mode&#x27; = &#x27;upsert&#x27;, -- 可選無(wú)主鍵的 &#x27;append&#x27; 模式,或有主鍵的 &#x27;upsert&#x27; 模式 &#x27;connector.key-null-literal&#x27; = &#x27;n/a&#x27;, -- 主鍵為 null 時(shí)的替代字符串,默認是 &#x27;null&#x27; &#x27;format.type&#x27; = &#x27;json&#x27; -- 輸出數據格式, 目前只支持 &#x27;json&#x27;);
  3、處理業(yè)務(wù)數據
  INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
  4、配置作業(yè)參數
  【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka
  注:根據實(shí)際版本選擇
  5、查詢(xún)ES數據
  在ES控制臺的Kibana頁(yè)面查詢(xún)數據,或者輸入同一子網(wǎng)的CVM,使用如下命令查詢(xún):
  # 查詢(xún)索引 username:password請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H &#x27;Content-Type: application/json&#x27; -d&#x27;{ "query": { "match_all": {}}, "size": 10}&#x27;
  更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。
  (三)系統指示燈監控
  本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。
  Prometheus 是一個(gè)非常靈活的時(shí)間序列數據庫,通常用于監控數據的存儲、計算和報警。流計算 Oceanus 建議用戶(hù)使用騰訊云監控提供的 Prometheus 服務(wù),避免部署和運維成本。同時(shí),還支持騰訊云通知模板,可以輕松通過(guò)短信、電話(huà)、郵件、企業(yè)微信機器人等方式將報警信息發(fā)送到不同的收件人。
  監控配置
  流計算 Oceanus 作業(yè)監控
  除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。
  1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
  pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
  2、 在任意流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(這里不能輸入灰度的Grafana),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
  ().
  3、 3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【Edit】設置不同的Panels來(lái)優(yōu)化顯示效果。
  報警配置
  1、 進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】,配置相關(guān)信息. 具體操作參考訪(fǎng)問(wèn)Prometheus自定義監控
  ().
  2、設置報警通知。選擇【選擇模板】或【新建】設置通知模板。
  3、短信通知信息
  (四)業(yè)務(wù)指標監控
  使用Filebeat采集應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
  1、Grafana 配置 ES 數據源?;叶劝l(fā)布中進(jìn)入Grafana控制臺
  (),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址,打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,并添加數據源。
  2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
  3、 顯示效果如下:
  注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
  四、總結
  本方案同時(shí)嘗試了系統監控指標和業(yè)務(wù)監控指標兩種監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Promethus相關(guān)操作。
  此外,需要注意的是: 查看全部

  實(shí)時(shí)文章采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計)
  本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,利用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
  一、解決方案描述(一)概述
  本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,傳輸到CKafka,再連接CKafka數據流計算 Oceanus (Flink) ,經(jīng)過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理,輸出到 Elasticsearch,最后通過(guò) Kibana 頁(yè)面查詢(xún)結果。方案中使用Promethus監控流計算Oceanus作業(yè)運行狀態(tài)等系統指標,使用云Grafana監控CVM或業(yè)務(wù)應用指標。
  (二)方案結構二、前期準備
  實(shí)施本方案前,請確保已創(chuàng )建并配置好相應的大數據組件。
  (一)創(chuàng )建私網(wǎng)VPC
  私有網(wǎng)絡(luò )(VPC)是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間。在搭建CKafka、流計算Oceanus、Elasticsearch集群等服務(wù)時(shí),選擇推薦同一個(gè)VPC。具體創(chuàng )建步驟請參考幫助文檔()。
  (二)創(chuàng )建CKafka實(shí)例
  Kafka建議選擇最新的2.4.1版本,與Filebeat 采集工具有更好的兼容性。
  購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info
  (三)創(chuàng )建流計算Oceanus集群
  流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具。它是基于A(yíng)pache Flink構建的企業(yè)級實(shí)時(shí)大數據分析平臺,具有一站式開(kāi)發(fā)、無(wú)縫連接、亞秒級延遲、低成本、安全穩定等特點(diǎn)。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。
  在Streaming Oceanus控制臺的【集群管理】-&gt;【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (四)創(chuàng )建 Elasticsearch 實(shí)例
  在 Elasticsearch 控制臺中,點(diǎn)擊左上角的【新建】,創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (五)創(chuàng )建云監控Prometheus實(shí)例
  為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
  進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
  (六)創(chuàng )建獨立的 Grafana 資源
  單機Grafana需要在灰度發(fā)布的Grafana管理頁(yè)面()中單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
  (七)安裝和配置 Filebeat
  Filebeat是一款輕量級的日志數據采集工具,通過(guò)監控指定位置的文件來(lái)采集信息。在需要監控該VPC下的主機信息和應用信息的云服務(wù)器上安裝Filebeat。安裝方法一:下載Filebeat并安裝。下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】--&gt;【beats管理】中提供的Filebeat。本例使用方法一。下載到CVM并配置Filebeat,在filebeat.yml文件中添加如下配置項:
  # 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:\programdata\elasticsearch\logs\*
  # 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的IP地址+端口topic: &#x27;topic-app-info&#x27; # 請填寫(xiě)實(shí)際的topic
  請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
  注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
  三、項目實(shí)現
  接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
  (一)Filebeat 采集 數據
  1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集 jar 應用日志、JVM 使用情況、監聽(tīng)端口等,詳情請參考 Filebeat 官網(wǎng)
  ().
  # filebeat啟動(dòng)
./filebeat -e -c filebeat.yml
# 監控系統信息寫(xiě)入test.log文件
top -d 10 >>/tmp/test.log
  2、進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
  Filebeat采集中Kafka的數據格式:
  { "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
  (二)創(chuàng )建 Flink SQL 作業(yè)
  使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。
  1、定義源
  根據 Filebeat 中的 json 消息格式構建 Flink Table Source。
  CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( &#x27;connector&#x27; = &#x27;kafka&#x27;, -- 可選 &#x27;kafka&#x27;,&#x27;kafka-0.11&#x27;. 注意選擇對應的內置 Connector &#x27;topic&#x27; = &#x27;topic-app-info&#x27;, -- 替換為您要消費的 Topic &#x27;scan.startup.mode&#x27; = &#x27;earliest-offset&#x27;, &#x27;properties.bootstrap.servers&#x27; = &#x27;10.0.0.29:9092&#x27;, &#x27;properties.group.id&#x27; = &#x27;oceanus_group2&#x27;, -- 必選參數, 一定要指定 Group ID &#x27;format&#x27; = &#x27;json&#x27;, &#x27;json.ignore-parse-errors&#x27; = &#x27;true&#x27;, -- 忽略 JSON 結構解析異常 &#x27;json.fail-on-missing-field&#x27; = &#x27;false&#x27; -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
  2、定義接收器
  CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( &#x27;connector.type&#x27; = &#x27;elasticsearch&#x27;, &#x27;connector.version&#x27; = &#x27;6&#x27;, &#x27;connector.hosts&#x27; = &#x27;http://10.0.0.175:9200&#x27;, &#x27;connector.index&#x27; = &#x27;oceanus_test2&#x27;, &#x27;connector.document-type&#x27; = &#x27;_doc&#x27;, &#x27;connector.username&#x27; = &#x27;elastic&#x27;, &#x27;connector.password&#x27; = &#x27;yourpassword&#x27;, &#x27;update-mode&#x27; = &#x27;upsert&#x27;, -- 可選無(wú)主鍵的 &#x27;append&#x27; 模式,或有主鍵的 &#x27;upsert&#x27; 模式 &#x27;connector.key-null-literal&#x27; = &#x27;n/a&#x27;, -- 主鍵為 null 時(shí)的替代字符串,默認是 &#x27;null&#x27; &#x27;format.type&#x27; = &#x27;json&#x27; -- 輸出數據格式, 目前只支持 &#x27;json&#x27;);
  3、處理業(yè)務(wù)數據
  INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
  4、配置作業(yè)參數
  【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka
  注:根據實(shí)際版本選擇
  5、查詢(xún)ES數據
  在ES控制臺的Kibana頁(yè)面查詢(xún)數據,或者輸入同一子網(wǎng)的CVM,使用如下命令查詢(xún):
  # 查詢(xún)索引 username:password請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H &#x27;Content-Type: application/json&#x27; -d&#x27;{ "query": { "match_all": {}}, "size": 10}&#x27;
  更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。
  (三)系統指示燈監控
  本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。
  Prometheus 是一個(gè)非常靈活的時(shí)間序列數據庫,通常用于監控數據的存儲、計算和報警。流計算 Oceanus 建議用戶(hù)使用騰訊云監控提供的 Prometheus 服務(wù),避免部署和運維成本。同時(shí),還支持騰訊云通知模板,可以輕松通過(guò)短信、電話(huà)、郵件、企業(yè)微信機器人等方式將報警信息發(fā)送到不同的收件人。
  監控配置
  流計算 Oceanus 作業(yè)監控
  除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。
  1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
  pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
  2、 在任意流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(這里不能輸入灰度的Grafana),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
  ().
  3、 3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【Edit】設置不同的Panels來(lái)優(yōu)化顯示效果。
  報警配置
  1、 進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】,配置相關(guān)信息. 具體操作參考訪(fǎng)問(wèn)Prometheus自定義監控
  ().
  2、設置報警通知。選擇【選擇模板】或【新建】設置通知模板。
  3、短信通知信息
  (四)業(yè)務(wù)指標監控
  使用Filebeat采集應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
  1、Grafana 配置 ES 數據源?;叶劝l(fā)布中進(jìn)入Grafana控制臺
  (),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址,打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,并添加數據源。
  2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
  3、 顯示效果如下:
  注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
  四、總結
  本方案同時(shí)嘗試了系統監控指標和業(yè)務(wù)監控指標兩種監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Promethus相關(guān)操作。
  此外,需要注意的是:

實(shí)時(shí)文章采集(看新聞?wù)腋杏X(jué)有用就行,澎湃新聞海天盛筵)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2021-12-09 13:04 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(看新聞?wù)腋杏X(jué)有用就行,澎湃新聞海天盛筵)
  實(shí)時(shí)文章采集推薦——金山詞霸財經(jīng)文章推薦--薦讀--薦讀——澎湃新聞
  海天盛筵
  有個(gè)app叫芝麻醬
  雪球,
  看網(wǎng)上新聞好像都是抄襲其他媒體的稿子,沒(méi)有自己的東西,
  當當市場(chǎng)、e大電商、阿里知乎都可以,
  點(diǎn)睛經(jīng)常做這些的,
  和訊,獵豹清晰。
  看新聞?wù)腋杏X(jué)有用就行,
  快本,和虎嗅,
  個(gè)人喜歡:海天盛筵、芝麻醬、萬(wàn)家客
  虎嗅網(wǎng)
  我是搜狐傳媒部做電商的,負責搜狐自媒體頻道。這些都是我發(fā)現的,沒(méi)有深挖的,跟網(wǎng)站、平臺運營(yíng)聯(lián)系都很多,沒(méi)有局限性。但有些在知乎上沒(méi)有流傳開(kāi)來(lái),是因為1.有些文章不是同一天發(fā)布的。2.流傳開(kāi)了,被刪了。
  uc資訊
  米讀app,您可以試一下,不僅可以看資訊,還可以提供一些閱讀體驗。
  虎嗅網(wǎng),36氪,
  我覺(jué)得吃喝玩樂(lè )都可以啊
  淘點(diǎn)點(diǎn)
  嗯,澎湃新聞新聞必須要有的,然后就是當當市場(chǎng)。我做起來(lái)了這個(gè)平臺,搜狐新聞也有部分資訊??梢哉椅伊牧?。這問(wèn)題。
  那么問(wèn)題來(lái)了,你說(shuō)說(shuō)哪一個(gè)對于你來(lái)說(shuō)是可以有價(jià)值的,
  這很簡(jiǎn)單,我個(gè)人比較喜歡看每日新聞,推薦一個(gè)tt工場(chǎng)/,每日新聞介紹了中國首屈一指的原創(chuàng )新聞網(wǎng)站,為每一篇原創(chuàng )新聞提供定制化的內容。 查看全部

  實(shí)時(shí)文章采集(看新聞?wù)腋杏X(jué)有用就行,澎湃新聞海天盛筵)
  實(shí)時(shí)文章采集推薦——金山詞霸財經(jīng)文章推薦--薦讀--薦讀——澎湃新聞
  海天盛筵
  有個(gè)app叫芝麻醬
  雪球,
  看網(wǎng)上新聞好像都是抄襲其他媒體的稿子,沒(méi)有自己的東西,
  當當市場(chǎng)、e大電商、阿里知乎都可以,
  點(diǎn)睛經(jīng)常做這些的,
  和訊,獵豹清晰。
  看新聞?wù)腋杏X(jué)有用就行,
  快本,和虎嗅,
  個(gè)人喜歡:海天盛筵、芝麻醬、萬(wàn)家客
  虎嗅網(wǎng)
  我是搜狐傳媒部做電商的,負責搜狐自媒體頻道。這些都是我發(fā)現的,沒(méi)有深挖的,跟網(wǎng)站、平臺運營(yíng)聯(lián)系都很多,沒(méi)有局限性。但有些在知乎上沒(méi)有流傳開(kāi)來(lái),是因為1.有些文章不是同一天發(fā)布的。2.流傳開(kāi)了,被刪了。
  uc資訊
  米讀app,您可以試一下,不僅可以看資訊,還可以提供一些閱讀體驗。
  虎嗅網(wǎng),36氪,
  我覺(jué)得吃喝玩樂(lè )都可以啊
  淘點(diǎn)點(diǎn)
  嗯,澎湃新聞新聞必須要有的,然后就是當當市場(chǎng)。我做起來(lái)了這個(gè)平臺,搜狐新聞也有部分資訊??梢哉椅伊牧?。這問(wèn)題。
  那么問(wèn)題來(lái)了,你說(shuō)說(shuō)哪一個(gè)對于你來(lái)說(shuō)是可以有價(jià)值的,
  這很簡(jiǎn)單,我個(gè)人比較喜歡看每日新聞,推薦一個(gè)tt工場(chǎng)/,每日新聞介紹了中國首屈一指的原創(chuàng )新聞網(wǎng)站,為每一篇原創(chuàng )新聞提供定制化的內容。

實(shí)時(shí)文章采集(實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另外一個(gè)(多個(gè)))

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 195 次瀏覽 ? 2021-12-05 15:14 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另外一個(gè)(多個(gè)))
  場(chǎng)景描述
  將實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另一個(gè)(多個(gè))播放終端,完成遠距離實(shí)時(shí)視頻播放功能。典型場(chǎng)景:
 ?。?)遠程查看監控攝像機。選擇指定的攝像機,將攝像機采集的實(shí)時(shí)數據推送到指定的回放終端,供值班人員(監控中心)查看。包括實(shí)時(shí)上墻視頻,推送至大屏指定;
 ?。?)直播系統。用戶(hù)在PC上安裝流媒體工具,從屏幕(麥克風(fēng))抓取實(shí)時(shí)數據,推送給觀(guān)看直播的觀(guān)眾。
  解決方案
  完成端到端的流推送,需要借助中間件來(lái)完成,常用的NginxRtmp模塊用于傳輸視頻數據。實(shí)時(shí)流媒體采集端根據給定地址推送數據到Nginx流媒體服務(wù)器,播放端根據給定地址從Nginx流媒體服務(wù)器拉取數據呈現給用戶(hù).
  
  實(shí)時(shí)流結構圖
  如果多個(gè)用戶(hù)需要播放同一個(gè)實(shí)時(shí)流數據,那么理想情況下,流端的數據應該是復用的,即流端只需要為多個(gè)播放終端推送一個(gè)流。此時(shí),流端和播放端處于pair-N關(guān)系。
  
  多個(gè)用戶(hù)播放相同的實(shí)時(shí)流數據
  如果廣播用戶(hù)很多,推送和廣播端的數量很多,僅僅依靠流媒體服務(wù)器轉發(fā)數據肯定是不夠的。這時(shí)候就需要多臺流媒體服務(wù)器協(xié)同工作。當有多個(gè)流媒體服務(wù)器時(shí),就會(huì )出現一個(gè)問(wèn)題:當用戶(hù)請求實(shí)時(shí)流媒體時(shí),如何為其分配一個(gè)流媒體服務(wù)器?這時(shí)候會(huì )引入另一個(gè)概念:負載均衡。當有多個(gè)流媒體服務(wù)器時(shí),我們需要通過(guò)一定的策略來(lái)計算出最合適的流媒體服務(wù)器,比如找到當前負載最小的服務(wù)器,交給用戶(hù)。
  
  多個(gè)流媒體服務(wù)器
  如上圖所示,當有多個(gè)流媒體服務(wù)器時(shí),負載均衡需要根據指定的策略計算出最佳服務(wù)器地址,然后推送端和播放端根據地址分別推拉流。該數字是使用流媒體服務(wù)器1計算得到的。
  實(shí)現技術(shù)
  使用的技術(shù)和工具:
 ?。?)CentOS6.5+Tomacat8.0+Mysql+Spring,javaweb后臺,接收用戶(hù)請求,負載計算,流狀態(tài)同步,發(fā)送推流指令等;
 ?。?)ffmpeg,C++調用的流媒體工具;
 ?。?)RabbitMQ,web后臺和推送端傳遞消息;
 ?。?)Nginx1.12.0+rtmpmodule,詳情可查看官方第三方模塊列表、流媒體轉發(fā);
 ?。?)VLCC#開(kāi)發(fā)工具,用來(lái)拉流,網(wǎng)上有公開(kāi)的API調用方法,用來(lái)做客戶(hù)端demo,以下截圖基于這個(gè)demo;
 ?。?)jwplayer,真正的web前端實(shí)時(shí)流控。
  詳細實(shí)施
 ?。?)關(guān)于Nginx+rtmp模塊實(shí)現實(shí)時(shí)流轉發(fā)的內容就不寫(xiě)了,網(wǎng)上很多教程也很簡(jiǎn)單,不需要寫(xiě)任何代碼;
 ?。?)Javaweb后端采用SpringMVC+Mybatis,只需要實(shí)現一些http接口即可;
  這里詳細描述了負載計算的邏輯。該模塊與Web后端分離,可以單獨部署。
  
  這個(gè)模塊是java后端的一部分,當然也可以單獨部署。它通過(guò)數據庫中的請求表與 Web 后端同步數據。接下來(lái)是負載均衡中生成rtmp的邏輯,rtmp就是本文開(kāi)頭提到的push/pull地址。
  
  push 和 pull 端可以通過(guò)給定的 rtmp 進(jìn)行推拉。Nginx流媒體服務(wù)器(具體為rtmp模塊)接收推送開(kāi)始(publish_start)、推送結束(publish_done)、拉取開(kāi)始(play_start)。) 并且當流結束(play_done)時(shí),會(huì )根據配置文件中的配置進(jìn)行http回調,回調地址配置為java負載均衡后臺。我們需要在這個(gè)回調中更新流媒體服務(wù)器的狀態(tài),比如當前流媒體服務(wù)器的負載數,以便下次負載計算。
  
  有時(shí)http回調會(huì )失敗,導致負載均衡模塊中保存的流媒體服務(wù)器狀態(tài)出錯,所以我們需要主動(dòng)同步流媒體服務(wù)器的負載狀態(tài):
  
  負載計算的另一個(gè)非常重要的標準是檢查流媒體服務(wù)器是否在線(xiàn)。如果不在線(xiàn),那么流媒體服務(wù)器不在我們考慮范圍內。主動(dòng)檢查流媒體服務(wù)器的狀態(tài):
  
  演示演示
  由于種種原因,這里只能掛一些演示圖片:
  演示1
  在百度地圖中按區域搜索攝像頭,選擇攝像頭,查看攝像頭實(shí)時(shí)視頻數據。流程是:請求視頻-&gt;
  
  演示2
  選擇攝像機,將攝像機的實(shí)時(shí)流推送到大屏幕。流程為:請求大屏上墻(攜帶大屏ID)-&gt;計算rtmp-&gt;開(kāi)始流媒體-&gt;開(kāi)始流媒體。下圖為大屏模擬管理器:
  
  大屏準備好后,開(kāi)始播放,管理員狀態(tài)更新:
  
  大屏模擬器界面支持斷線(xiàn)恢復。關(guān)閉終端并再次打開(kāi)后,流媒體不會(huì )中斷:
  
  程序概要
 ?。?)push端和pull端有1-&gt;N的關(guān)系,對于每個(gè)push流,可以同時(shí)有多個(gè)pull端,即push流可以復用。當多個(gè)用戶(hù)請求時(shí)同一個(gè)資源(比如同一個(gè)camera),只需要推一個(gè)流,此時(shí)每個(gè)用戶(hù)的拉流地址rtmp是一樣的。
 ?。?)需要一個(gè)流媒體服務(wù)器作為push和pull之間的橋梁,負責實(shí)時(shí)流的轉發(fā)。這里使用的是Nginx+rtmpmodule,網(wǎng)上有詳細教程。
 ?。?)流媒體服務(wù)器的選擇需要通過(guò)負載均衡計算。負載計算策略包括:流媒體服務(wù)器是否在線(xiàn),負載數(當前播放鏈接)是否達到服務(wù)器的上限,以及請求的資源是否已經(jīng)被推流(即可以復用,這種情況下直接返回之前的rtmp,不需要重新分配服務(wù)器)。
 ?。?)Nginx+rtmp模塊的配置文件中,有一項是配置'狀態(tài)回調'的地址。當流媒體服務(wù)器的狀態(tài)發(fā)生變化時(shí),會(huì )通過(guò)這個(gè)通知java后端打回來(lái)。
  不提供源碼,有問(wèn)題的朋友可以留言或私信。 查看全部

  實(shí)時(shí)文章采集(實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另外一個(gè)(多個(gè)))
  場(chǎng)景描述
  將實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另一個(gè)(多個(gè))播放終端,完成遠距離實(shí)時(shí)視頻播放功能。典型場(chǎng)景:
 ?。?)遠程查看監控攝像機。選擇指定的攝像機,將攝像機采集的實(shí)時(shí)數據推送到指定的回放終端,供值班人員(監控中心)查看。包括實(shí)時(shí)上墻視頻,推送至大屏指定;
 ?。?)直播系統。用戶(hù)在PC上安裝流媒體工具,從屏幕(麥克風(fēng))抓取實(shí)時(shí)數據,推送給觀(guān)看直播的觀(guān)眾。
  解決方案
  完成端到端的流推送,需要借助中間件來(lái)完成,常用的NginxRtmp模塊用于傳輸視頻數據。實(shí)時(shí)流媒體采集端根據給定地址推送數據到Nginx流媒體服務(wù)器,播放端根據給定地址從Nginx流媒體服務(wù)器拉取數據呈現給用戶(hù).
  
  實(shí)時(shí)流結構圖
  如果多個(gè)用戶(hù)需要播放同一個(gè)實(shí)時(shí)流數據,那么理想情況下,流端的數據應該是復用的,即流端只需要為多個(gè)播放終端推送一個(gè)流。此時(shí),流端和播放端處于pair-N關(guān)系。
  
  多個(gè)用戶(hù)播放相同的實(shí)時(shí)流數據
  如果廣播用戶(hù)很多,推送和廣播端的數量很多,僅僅依靠流媒體服務(wù)器轉發(fā)數據肯定是不夠的。這時(shí)候就需要多臺流媒體服務(wù)器協(xié)同工作。當有多個(gè)流媒體服務(wù)器時(shí),就會(huì )出現一個(gè)問(wèn)題:當用戶(hù)請求實(shí)時(shí)流媒體時(shí),如何為其分配一個(gè)流媒體服務(wù)器?這時(shí)候會(huì )引入另一個(gè)概念:負載均衡。當有多個(gè)流媒體服務(wù)器時(shí),我們需要通過(guò)一定的策略來(lái)計算出最合適的流媒體服務(wù)器,比如找到當前負載最小的服務(wù)器,交給用戶(hù)。
  
  多個(gè)流媒體服務(wù)器
  如上圖所示,當有多個(gè)流媒體服務(wù)器時(shí),負載均衡需要根據指定的策略計算出最佳服務(wù)器地址,然后推送端和播放端根據地址分別推拉流。該數字是使用流媒體服務(wù)器1計算得到的。
  實(shí)現技術(shù)
  使用的技術(shù)和工具:
 ?。?)CentOS6.5+Tomacat8.0+Mysql+Spring,javaweb后臺,接收用戶(hù)請求,負載計算,流狀態(tài)同步,發(fā)送推流指令等;
 ?。?)ffmpeg,C++調用的流媒體工具;
 ?。?)RabbitMQ,web后臺和推送端傳遞消息;
 ?。?)Nginx1.12.0+rtmpmodule,詳情可查看官方第三方模塊列表、流媒體轉發(fā);
 ?。?)VLCC#開(kāi)發(fā)工具,用來(lái)拉流,網(wǎng)上有公開(kāi)的API調用方法,用來(lái)做客戶(hù)端demo,以下截圖基于這個(gè)demo;
 ?。?)jwplayer,真正的web前端實(shí)時(shí)流控。
  詳細實(shí)施
 ?。?)關(guān)于Nginx+rtmp模塊實(shí)現實(shí)時(shí)流轉發(fā)的內容就不寫(xiě)了,網(wǎng)上很多教程也很簡(jiǎn)單,不需要寫(xiě)任何代碼;
 ?。?)Javaweb后端采用SpringMVC+Mybatis,只需要實(shí)現一些http接口即可;
  這里詳細描述了負載計算的邏輯。該模塊與Web后端分離,可以單獨部署。
  
  這個(gè)模塊是java后端的一部分,當然也可以單獨部署。它通過(guò)數據庫中的請求表與 Web 后端同步數據。接下來(lái)是負載均衡中生成rtmp的邏輯,rtmp就是本文開(kāi)頭提到的push/pull地址。
  
  push 和 pull 端可以通過(guò)給定的 rtmp 進(jìn)行推拉。Nginx流媒體服務(wù)器(具體為rtmp模塊)接收推送開(kāi)始(publish_start)、推送結束(publish_done)、拉取開(kāi)始(play_start)。) 并且當流結束(play_done)時(shí),會(huì )根據配置文件中的配置進(jìn)行http回調,回調地址配置為java負載均衡后臺。我們需要在這個(gè)回調中更新流媒體服務(wù)器的狀態(tài),比如當前流媒體服務(wù)器的負載數,以便下次負載計算。
  
  有時(shí)http回調會(huì )失敗,導致負載均衡模塊中保存的流媒體服務(wù)器狀態(tài)出錯,所以我們需要主動(dòng)同步流媒體服務(wù)器的負載狀態(tài):
  
  負載計算的另一個(gè)非常重要的標準是檢查流媒體服務(wù)器是否在線(xiàn)。如果不在線(xiàn),那么流媒體服務(wù)器不在我們考慮范圍內。主動(dòng)檢查流媒體服務(wù)器的狀態(tài):
  
  演示演示
  由于種種原因,這里只能掛一些演示圖片:
  演示1
  在百度地圖中按區域搜索攝像頭,選擇攝像頭,查看攝像頭實(shí)時(shí)視頻數據。流程是:請求視頻-&gt;
  
  演示2
  選擇攝像機,將攝像機的實(shí)時(shí)流推送到大屏幕。流程為:請求大屏上墻(攜帶大屏ID)-&gt;計算rtmp-&gt;開(kāi)始流媒體-&gt;開(kāi)始流媒體。下圖為大屏模擬管理器:
  
  大屏準備好后,開(kāi)始播放,管理員狀態(tài)更新:
  
  大屏模擬器界面支持斷線(xiàn)恢復。關(guān)閉終端并再次打開(kāi)后,流媒體不會(huì )中斷:
  
  程序概要
 ?。?)push端和pull端有1-&gt;N的關(guān)系,對于每個(gè)push流,可以同時(shí)有多個(gè)pull端,即push流可以復用。當多個(gè)用戶(hù)請求時(shí)同一個(gè)資源(比如同一個(gè)camera),只需要推一個(gè)流,此時(shí)每個(gè)用戶(hù)的拉流地址rtmp是一樣的。
 ?。?)需要一個(gè)流媒體服務(wù)器作為push和pull之間的橋梁,負責實(shí)時(shí)流的轉發(fā)。這里使用的是Nginx+rtmpmodule,網(wǎng)上有詳細教程。
 ?。?)流媒體服務(wù)器的選擇需要通過(guò)負載均衡計算。負載計算策略包括:流媒體服務(wù)器是否在線(xiàn),負載數(當前播放鏈接)是否達到服務(wù)器的上限,以及請求的資源是否已經(jīng)被推流(即可以復用,這種情況下直接返回之前的rtmp,不需要重新分配服務(wù)器)。
 ?。?)Nginx+rtmp模塊的配置文件中,有一項是配置'狀態(tài)回調'的地址。當流媒體服務(wù)器的狀態(tài)發(fā)生變化時(shí),會(huì )通過(guò)這個(gè)通知java后端打回來(lái)。
  不提供源碼,有問(wèn)題的朋友可以留言或私信。

實(shí)時(shí)文章采集(帝國采集插件好用嗎?帝國是免費開(kāi)源的CMS系統!)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 182 次瀏覽 ? 2021-12-02 04:11 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(帝國采集插件好用嗎?帝國是免費開(kāi)源的CMS系統!)
  Empire采集 插件好用嗎?Empire是一個(gè)免費開(kāi)源的cms系統,那么多網(wǎng)站都是Empire cms建站系統,那么Empire 采集插件好用嗎?如果你只是采集,沒(méi)關(guān)系。填入數據,但是你要找到不同的采集 源寫(xiě)入規則。如果你能熟練使用HTML+css編寫(xiě)規則,也不是特別難。如果不懂代碼規則,使用Empire采集插件,會(huì )比較麻煩!這時(shí)候肯定有很多朋友說(shuō)我看不懂代碼了。我該怎么辦?
  
  帝國采集
  不懂HTML+css如何采集發(fā)布:
  1、 只要輸入關(guān)鍵詞 就可以采集:搜狗新聞-搜狗知乎-投文章-公眾號-百度新聞-百度知道-新浪新聞-360新聞-鳳凰新聞(可同時(shí)設置多個(gè)采集來(lái)源采集)
  
  帝國cms采集
  2、根據關(guān)鍵詞采集文章,一次可以導入1000個(gè)關(guān)鍵詞,可以創(chuàng )建幾十個(gè)或幾百個(gè)采集任務(wù)同時(shí)。繼續掛斷采集。
  2、可設置關(guān)鍵詞采集文章數-支持本地預覽-支持采集鏈接預覽-支持查看采集狀態(tài)
  二、不同的網(wǎng)站cms發(fā)布
  監控文件夾發(fā)布:您在桌面上創(chuàng )建一個(gè)文件夾,使用軟件監控該文件夾,一旦文件夾中有新內容,將立即發(fā)布到網(wǎng)站。(支持復制粘貼修改后的文檔)
  cms發(fā)布:支持Empire、易游、ZBLOG、織夢(mèng)、WP、PB、Apple、搜外等各大cms,可同時(shí)管理和發(fā)布
  
  帝國cms 發(fā)布
  對應欄目:不同的文章可以發(fā)布不同的欄目
  定時(shí)發(fā)布:可以控制多少分鐘發(fā)表一篇文章
  監控數據:發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序等。
  
  網(wǎng)站詳情
  為什么我不使用 Empire 插件?一是用Empire采集插件來(lái)拖延時(shí)間,二來(lái)要寫(xiě)很多規則,每天管理10個(gè)網(wǎng)站。時(shí)間不夠用,很累。. 最后我改變了使用方式,效率提高了好幾倍。我也有更多的時(shí)間去做SEO的細節,大大增加了網(wǎng)站的流量。
  
  以上是小編采集網(wǎng)站的帝國,只要用心管理網(wǎng)站的帝國,采集的網(wǎng)站的流量也不錯!如果你想認識其他朋友,可以留言或私信我??赐赀@篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!您的一舉一動(dòng)都將成為編輯源源不斷的動(dòng)力! 查看全部

  實(shí)時(shí)文章采集(帝國采集插件好用嗎?帝國是免費開(kāi)源的CMS系統!)
  Empire采集 插件好用嗎?Empire是一個(gè)免費開(kāi)源的cms系統,那么多網(wǎng)站都是Empire cms建站系統,那么Empire 采集插件好用嗎?如果你只是采集,沒(méi)關(guān)系。填入數據,但是你要找到不同的采集 源寫(xiě)入規則。如果你能熟練使用HTML+css編寫(xiě)規則,也不是特別難。如果不懂代碼規則,使用Empire采集插件,會(huì )比較麻煩!這時(shí)候肯定有很多朋友說(shuō)我看不懂代碼了。我該怎么辦?
  
  帝國采集
  不懂HTML+css如何采集發(fā)布:
  1、 只要輸入關(guān)鍵詞 就可以采集:搜狗新聞-搜狗知乎-投文章-公眾號-百度新聞-百度知道-新浪新聞-360新聞-鳳凰新聞(可同時(shí)設置多個(gè)采集來(lái)源采集)
  
  帝國cms采集
  2、根據關(guān)鍵詞采集文章,一次可以導入1000個(gè)關(guān)鍵詞,可以創(chuàng )建幾十個(gè)或幾百個(gè)采集任務(wù)同時(shí)。繼續掛斷采集。
  2、可設置關(guān)鍵詞采集文章數-支持本地預覽-支持采集鏈接預覽-支持查看采集狀態(tài)
  二、不同的網(wǎng)站cms發(fā)布
  監控文件夾發(fā)布:您在桌面上創(chuàng )建一個(gè)文件夾,使用軟件監控該文件夾,一旦文件夾中有新內容,將立即發(fā)布到網(wǎng)站。(支持復制粘貼修改后的文檔)
  cms發(fā)布:支持Empire、易游、ZBLOG、織夢(mèng)、WP、PB、Apple、搜外等各大cms,可同時(shí)管理和發(fā)布
  
  帝國cms 發(fā)布
  對應欄目:不同的文章可以發(fā)布不同的欄目
  定時(shí)發(fā)布:可以控制多少分鐘發(fā)表一篇文章
  監控數據:發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序等。
  
  網(wǎng)站詳情
  為什么我不使用 Empire 插件?一是用Empire采集插件來(lái)拖延時(shí)間,二來(lái)要寫(xiě)很多規則,每天管理10個(gè)網(wǎng)站。時(shí)間不夠用,很累。. 最后我改變了使用方式,效率提高了好幾倍。我也有更多的時(shí)間去做SEO的細節,大大增加了網(wǎng)站的流量。
  
  以上是小編采集網(wǎng)站的帝國,只要用心管理網(wǎng)站的帝國,采集的網(wǎng)站的流量也不錯!如果你想認識其他朋友,可以留言或私信我??赐赀@篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!您的一舉一動(dòng)都將成為編輯源源不斷的動(dòng)力!

實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-11-29 21:09 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和實(shí)例(有些硬件實(shí)例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后根據它介紹的SDK開(kāi)發(fā)流程閱讀它提供的例子,并根據自己的需要修改相應的例子。自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,前面分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  
  加載相機對象
  卸載相機對象
  加載數據流以抓取對象
  卸載數據流以抓取對象
  單幀或連續捕捉過(guò)程
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,并封裝了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut完成圖像數據的重組,然后MIL自動(dòng)顯示。
  --------------------- 查看全部

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和實(shí)例(有些硬件實(shí)例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后根據它介紹的SDK開(kāi)發(fā)流程閱讀它提供的例子,并根據自己的需要修改相應的例子。自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,前面分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  
  加載相機對象
  卸載相機對象
  加載數據流以抓取對象
  卸載數據流以抓取對象
  單幀或連續捕捉過(guò)程
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,并封裝了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut完成圖像數據的重組,然后MIL自動(dòng)顯示。
  ---------------------

實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2021-11-27 06:12 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝和配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和示例(有些硬件示例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有。)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后再閱讀他們介紹的SDK開(kāi)發(fā)流程提供的例子,修改相應的例子供自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,之前分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  加載相機對象
  
  卸載相機對象
  
  加載數據流以抓取對象
  
  卸載數據流以抓取對象
  
  單幀或連續捕捉過(guò)程
  
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,打包了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut來(lái)完成圖像數據的重組,然后MIL自動(dòng)顯示出來(lái)。 查看全部

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝和配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和示例(有些硬件示例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有。)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后再閱讀他們介紹的SDK開(kāi)發(fā)流程提供的例子,修改相應的例子供自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,之前分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  加載相機對象
  
  卸載相機對象
  
  加載數據流以抓取對象
  
  卸載數據流以抓取對象
  
  單幀或連續捕捉過(guò)程
  
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,打包了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut來(lái)完成圖像數據的重組,然后MIL自動(dòng)顯示出來(lái)。

實(shí)時(shí)文章采集(環(huán)境說(shuō)明準備工作flume安裝暫略,后續更新(組圖) )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 153 次瀏覽 ? 2021-11-26 16:32 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(環(huán)境說(shuō)明準備工作flume安裝暫略,后續更新(組圖)
)
  環(huán)境說(shuō)明準備水槽安裝
  暫時(shí)省略,后續更新
  水槽介紹
  Apache Flume 是一個(gè)分布式、可靠且可用的系統,用于有效地采集、聚合大量日志數據,并將其從許多不同來(lái)源移動(dòng)到集中式數據存儲。在大數據生態(tài)中,flume經(jīng)常被用來(lái)完成數據采集的工作。
  
  它的實(shí)時(shí)性非常高,延遲在1-2s左右,可以是準實(shí)時(shí)的。
  并且因為mysql是程序員常用的數據庫,所以以flume實(shí)時(shí)采集mysql數據庫為例。要了解flume 采集 數據是如何處理的,我們必須先探索它的架構:
  Flume運行的核心是Agent。Flume 以 agent 為最小的獨立運行單元。代理是一個(gè) JVM。它是一個(gè)完整的數據采集工具,具有三個(gè)核心組件,即
  源,通道,匯。通過(guò)這些組件,Event 可以從一處流向另一處,如下圖所示。
  
  三大組件
  來(lái)源
  Source是數據采集端,負責在數據被捕獲后進(jìn)行特殊格式化,將數據封裝在一個(gè)事件中,然后將事件推送到Channel中。
  Flume提供了多種源碼實(shí)現,包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source等,如果內置的Source不能滿(mǎn)足你的需求, Flume 還支持自定義 Source。
  可以看到原生flume的源碼不支持sql源碼,所以我們需要添加一個(gè)插件,如何添加后面會(huì )講到。
  渠道
  Channel是連接Source和Sink的組件。您可以將其視為數據緩沖區(數據隊列)。它可以將事件臨時(shí)存儲在內存中或將其持久保存在本地磁盤(pán)上,直到接收器處理完事件。
  對于Channel,Flume提供了Memory Channel、JDBC Chanel、File Channel等。
  下沉
  Flume Sink 取出Channel 中的數據,存儲在文件系統、數據庫中,或者提交到遠程服務(wù)器。
  Flume 還提供了各種 sink 實(shí)現,包括 HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink 等。
  當 Flume Sink 設置為存儲數據時(shí),您可以將數據存儲在文件系統、數據庫和 hadoop 中。當日志數據較小時(shí),可以將數據存儲在文件系統中,并設置一定的時(shí)間間隔來(lái)保存數據。當日志數據較多時(shí),可以將相應的日志數據存儲在Hadoop中,方便日后進(jìn)行相應的數據分析。
  在這個(gè)例子中,我使用 kafka 作為接收器
  下載flume-ng-sql-source插件
  在此下載flume-ng-sql-source,最新版本為1.5.3。
  下載后解壓,通過(guò)idea運行程序,用maven打包成jar包,重命名為flume-ng-sql-source-1.5.3.jar
  編譯好的jar包應該放在FLUME_HOME/lib下,FLUME_HOME是你linux下flume的文件夾,比如我的是/opt/install/flume
  卡夫卡安裝
  我們使用flume將數據采集傳輸到kafka,并啟動(dòng)kafak消費監控,可以看到實(shí)時(shí)數據
  jdk1.8 安裝
  暫時(shí)省略,后續更新
  動(dòng)物園管理員安裝
  暫時(shí)省略,后續更新
  卡夫卡安裝
  暫時(shí)省略,后續更新
  mysql5.7.24安裝
  暫時(shí)省略,后續更新
  Flume提取mysql數據到Kafka新建數據庫和表
  完成以上安裝工作后,就可以開(kāi)始實(shí)現demo了。
  首先,如果我們要抓取mysql數據,必須要有一個(gè)數據庫和表,并且記住數據庫和表的名稱(chēng),然后把這個(gè)信息寫(xiě)入flume配置文件中。
  創(chuàng )建數據庫:
  create database test
  創(chuàng )建一個(gè)表:
  create table fk(
id int UNSIGNED AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY ( id )
);
  新建配置文件(重要)
  cd到flume的conf文件夾并添加一個(gè)新文件mysql-flume.conf
  [root@localhost ~]# cd /opt/install/flume
[root@localhost flume]# ls
bin conf doap_Flume.rdf lib NOTICE RELEASE-NOTES tools
CHANGELOG DEVNOTES docs LICENSE README.md status
[root@localhost flume]# cd conf
[root@localhost conf]# ls
flume-conf.properties.template log4j.properties
flume-env.ps1.template mysql-connector-java-5.1.35
flume-env.sh mysql-connector-java-5.1.35.tar.gz
flume-env.sh.template mysql-flume.conf
  注:mysql-flume.conf原本不存在,是我自己生成的,具體配置如下
  在這個(gè)文件中寫(xiě)入:
  a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
a1.sources.src-1.hibernate.connection.user = root
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = testTopic
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  這是我的文件。一些私人信息已被其他字符串替換。寫(xiě)mysql-flume.conf的時(shí)候可以復制上面這段代碼。下面是這段代碼的詳細注釋?zhuān)憧梢杂酶嘧⑨尠姹镜拇a修改你的conf文件
  # a1表示agent的名稱(chēng)
# source是a1的輸入源
# channels是緩沖區
# sinks是a1輸出目的地,本例子sinks使用了kafka
a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
# 連接mysql的一系列操作,youhost改為你虛擬機的ip地址,可以通過(guò)ifconfig或者ip addr查看
# url中要加入?useUnicode=true&characterEncoding=utf-8&useSSL=false,否則有可能連接失敗
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
# mysql賬號,一般都是root
a1.sources.src-1.hibernate.connection.user = root
# 填入你的mysql密碼
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
# mysql驅動(dòng)
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# 驅動(dòng)版本過(guò)低會(huì )無(wú)法使用,驅動(dòng)安裝下文會(huì )提及
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
# 存放status文件
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
# 填寫(xiě)需要采集的數據表信息,你也可以使用下面的方法:
# agent.sources.sql-source.table =table_name
# agent.sources.sql-source.columns.to.select = *
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
# 使用kafka
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
# 這個(gè)項目中你創(chuàng )建的或使用的topic名字
a1.sinks.k1.topic = testTopic
# kafka集群,broker列表,由于我沒(méi)有使用集群所以只有一個(gè)
# 如果你搭建了集群,代碼如下:agent.sinks.k1.brokerList = kafka-node1:9092,kafka-node2:9092,kafka-node3:9092
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  將mysql驅動(dòng)添加到flume的lib目錄下
  wget https://dev.mysql.com/get/Down ... ar.gz
tar xzf mysql-connector-java-5.1.35.tar.gz
cp mysql-connector-java-5.1.35-bin.jar /你flume的位置/lib/
  啟動(dòng)動(dòng)物園管理員
  在啟動(dòng)kafka之前啟動(dòng)zookeeper
  cd到zookeeper的bin目錄
  啟動(dòng):
  ./zkServer.sh start
  等待運行
  ./zkCli.sh
  啟動(dòng)卡夫卡
  在xshell中打開(kāi)一個(gè)新窗口,cd到kafka目錄,啟動(dòng)kafka
  bin/kafka-server-start.sh config/server.properties &
  創(chuàng )建一個(gè)新主題
  bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
  注1:testTopic是你使用的主題名稱(chēng),對應上面mysql-flume.conf中的內容。
  注2:可以使用bin/kafka-topics.sh --list --zookeeper localhost:2181 查看創(chuàng )建的topic。
  啟動(dòng)水槽
  在xshell中打開(kāi)一個(gè)新窗口,cd到flume目錄,啟動(dòng)flume
  bin/flume-ng agent -n a1 -c conf -f conf/mysql-flume.conf -Dflume.root.logger=INFO,console
  等待他運行,同時(shí)我們可以打開(kāi)一個(gè)新窗口連接數據庫,使用我們新創(chuàng )建的test數據庫和fk表。
  實(shí)時(shí)采集數據
  Flume會(huì )實(shí)時(shí)將采集數據發(fā)送到kafka,我們可以啟動(dòng)一個(gè)kafak消費監控,用于查看mysql的實(shí)時(shí)數據
  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning
  這時(shí)候就可以查看數據了,kafka會(huì )打印mysql中的數據
  然后我們改變數據庫中的一條數據,新讀取的數據也會(huì )改變
  前:
  
  后:
   查看全部

  實(shí)時(shí)文章采集(環(huán)境說(shuō)明準備工作flume安裝暫略,后續更新(組圖)
)
  環(huán)境說(shuō)明準備水槽安裝
  暫時(shí)省略,后續更新
  水槽介紹
  Apache Flume 是一個(gè)分布式、可靠且可用的系統,用于有效地采集、聚合大量日志數據,并將其從許多不同來(lái)源移動(dòng)到集中式數據存儲。在大數據生態(tài)中,flume經(jīng)常被用來(lái)完成數據采集的工作。
  
  它的實(shí)時(shí)性非常高,延遲在1-2s左右,可以是準實(shí)時(shí)的。
  并且因為mysql是程序員常用的數據庫,所以以flume實(shí)時(shí)采集mysql數據庫為例。要了解flume 采集 數據是如何處理的,我們必須先探索它的架構:
  Flume運行的核心是Agent。Flume 以 agent 為最小的獨立運行單元。代理是一個(gè) JVM。它是一個(gè)完整的數據采集工具,具有三個(gè)核心組件,即
  源,通道,匯。通過(guò)這些組件,Event 可以從一處流向另一處,如下圖所示。
  
  三大組件
  來(lái)源
  Source是數據采集端,負責在數據被捕獲后進(jìn)行特殊格式化,將數據封裝在一個(gè)事件中,然后將事件推送到Channel中。
  Flume提供了多種源碼實(shí)現,包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source等,如果內置的Source不能滿(mǎn)足你的需求, Flume 還支持自定義 Source。
  可以看到原生flume的源碼不支持sql源碼,所以我們需要添加一個(gè)插件,如何添加后面會(huì )講到。
  渠道
  Channel是連接Source和Sink的組件。您可以將其視為數據緩沖區(數據隊列)。它可以將事件臨時(shí)存儲在內存中或將其持久保存在本地磁盤(pán)上,直到接收器處理完事件。
  對于Channel,Flume提供了Memory Channel、JDBC Chanel、File Channel等。
  下沉
  Flume Sink 取出Channel 中的數據,存儲在文件系統、數據庫中,或者提交到遠程服務(wù)器。
  Flume 還提供了各種 sink 實(shí)現,包括 HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink 等。
  當 Flume Sink 設置為存儲數據時(shí),您可以將數據存儲在文件系統、數據庫和 hadoop 中。當日志數據較小時(shí),可以將數據存儲在文件系統中,并設置一定的時(shí)間間隔來(lái)保存數據。當日志數據較多時(shí),可以將相應的日志數據存儲在Hadoop中,方便日后進(jìn)行相應的數據分析。
  在這個(gè)例子中,我使用 kafka 作為接收器
  下載flume-ng-sql-source插件
  在此下載flume-ng-sql-source,最新版本為1.5.3。
  下載后解壓,通過(guò)idea運行程序,用maven打包成jar包,重命名為flume-ng-sql-source-1.5.3.jar
  編譯好的jar包應該放在FLUME_HOME/lib下,FLUME_HOME是你linux下flume的文件夾,比如我的是/opt/install/flume
  卡夫卡安裝
  我們使用flume將數據采集傳輸到kafka,并啟動(dòng)kafak消費監控,可以看到實(shí)時(shí)數據
  jdk1.8 安裝
  暫時(shí)省略,后續更新
  動(dòng)物園管理員安裝
  暫時(shí)省略,后續更新
  卡夫卡安裝
  暫時(shí)省略,后續更新
  mysql5.7.24安裝
  暫時(shí)省略,后續更新
  Flume提取mysql數據到Kafka新建數據庫和表
  完成以上安裝工作后,就可以開(kāi)始實(shí)現demo了。
  首先,如果我們要抓取mysql數據,必須要有一個(gè)數據庫和表,并且記住數據庫和表的名稱(chēng),然后把這個(gè)信息寫(xiě)入flume配置文件中。
  創(chuàng )建數據庫:
  create database test
  創(chuàng )建一個(gè)表:
  create table fk(
id int UNSIGNED AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY ( id )
);
  新建配置文件(重要)
  cd到flume的conf文件夾并添加一個(gè)新文件mysql-flume.conf
  [root@localhost ~]# cd /opt/install/flume
[root@localhost flume]# ls
bin conf doap_Flume.rdf lib NOTICE RELEASE-NOTES tools
CHANGELOG DEVNOTES docs LICENSE README.md status
[root@localhost flume]# cd conf
[root@localhost conf]# ls
flume-conf.properties.template log4j.properties
flume-env.ps1.template mysql-connector-java-5.1.35
flume-env.sh mysql-connector-java-5.1.35.tar.gz
flume-env.sh.template mysql-flume.conf
  注:mysql-flume.conf原本不存在,是我自己生成的,具體配置如下
  在這個(gè)文件中寫(xiě)入:
  a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
a1.sources.src-1.hibernate.connection.user = root
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = testTopic
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  這是我的文件。一些私人信息已被其他字符串替換。寫(xiě)mysql-flume.conf的時(shí)候可以復制上面這段代碼。下面是這段代碼的詳細注釋?zhuān)憧梢杂酶嘧⑨尠姹镜拇a修改你的conf文件
  # a1表示agent的名稱(chēng)
# source是a1的輸入源
# channels是緩沖區
# sinks是a1輸出目的地,本例子sinks使用了kafka
a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
# 連接mysql的一系列操作,youhost改為你虛擬機的ip地址,可以通過(guò)ifconfig或者ip addr查看
# url中要加入?useUnicode=true&characterEncoding=utf-8&useSSL=false,否則有可能連接失敗
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
# mysql賬號,一般都是root
a1.sources.src-1.hibernate.connection.user = root
# 填入你的mysql密碼
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
# mysql驅動(dòng)
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# 驅動(dòng)版本過(guò)低會(huì )無(wú)法使用,驅動(dòng)安裝下文會(huì )提及
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
# 存放status文件
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
# 填寫(xiě)需要采集的數據表信息,你也可以使用下面的方法:
# agent.sources.sql-source.table =table_name
# agent.sources.sql-source.columns.to.select = *
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
# 使用kafka
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
# 這個(gè)項目中你創(chuàng )建的或使用的topic名字
a1.sinks.k1.topic = testTopic
# kafka集群,broker列表,由于我沒(méi)有使用集群所以只有一個(gè)
# 如果你搭建了集群,代碼如下:agent.sinks.k1.brokerList = kafka-node1:9092,kafka-node2:9092,kafka-node3:9092
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  將mysql驅動(dòng)添加到flume的lib目錄下
  wget https://dev.mysql.com/get/Down ... ar.gz
tar xzf mysql-connector-java-5.1.35.tar.gz
cp mysql-connector-java-5.1.35-bin.jar /你flume的位置/lib/
  啟動(dòng)動(dòng)物園管理員
  在啟動(dòng)kafka之前啟動(dòng)zookeeper
  cd到zookeeper的bin目錄
  啟動(dòng):
  ./zkServer.sh start
  等待運行
  ./zkCli.sh
  啟動(dòng)卡夫卡
  在xshell中打開(kāi)一個(gè)新窗口,cd到kafka目錄,啟動(dòng)kafka
  bin/kafka-server-start.sh config/server.properties &
  創(chuàng )建一個(gè)新主題
  bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
  注1:testTopic是你使用的主題名稱(chēng),對應上面mysql-flume.conf中的內容。
  注2:可以使用bin/kafka-topics.sh --list --zookeeper localhost:2181 查看創(chuàng )建的topic。
  啟動(dòng)水槽
  在xshell中打開(kāi)一個(gè)新窗口,cd到flume目錄,啟動(dòng)flume
  bin/flume-ng agent -n a1 -c conf -f conf/mysql-flume.conf -Dflume.root.logger=INFO,console
  等待他運行,同時(shí)我們可以打開(kāi)一個(gè)新窗口連接數據庫,使用我們新創(chuàng )建的test數據庫和fk表。
  實(shí)時(shí)采集數據
  Flume會(huì )實(shí)時(shí)將采集數據發(fā)送到kafka,我們可以啟動(dòng)一個(gè)kafak消費監控,用于查看mysql的實(shí)時(shí)數據
  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning
  這時(shí)候就可以查看數據了,kafka會(huì )打印mysql中的數據
  然后我們改變數據庫中的一條數據,新讀取的數據也會(huì )改變
  前:
  
  后:
  

實(shí)時(shí)文章采集(實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 115 次瀏覽 ? 2022-01-26 09:05 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多)
  實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多,可以嘗試下實(shí)時(shí)爬蟲(chóng)任務(wù),可以獲取到最新文章而且實(shí)時(shí)獲取文章比較方便,不用設置分頁(yè),方便直接提取有價(jià)值的信息。有感興趣的可以點(diǎn)擊我,獲取學(xué)習資料及源碼下載。對于任務(wù)是采集信息,作者是從以下幾個(gè)角度出發(fā)的。1.搜索排名2.帖子內容3.新聞來(lái)源4.熱門(mén)分類(lèi)5.標簽分析6.閱讀時(shí)間7.群組排名8.個(gè)人排名以下是簡(jiǎn)單爬蟲(chóng)的代碼和效果展示:根據內容爬取網(wǎng)絡(luò )信息列舉一些案例:1.實(shí)時(shí)文章及群組排名2.某篇文章【發(fā)布信息】【收藏】【閱讀次數】【在線(xiàn)閱讀次數】【點(diǎn)贊】【轉發(fā)】【評論】【小組討論】【說(shuō)說(shuō)】【文章微博】【學(xué)術(shù)論文】某實(shí)時(shí)排名3.某某廠(chǎng)商產(chǎn)品相關(guān)消息實(shí)時(shí)爬取。
  用戶(hù)的屬性信息,也就是分析的對象是人;還有時(shí)間上的區分也有助于抓取時(shí)間上的信息;還有就是操作規律,有很多第三方網(wǎng)站可以抓取到數據,比如飯統官網(wǎng)的爬蟲(chóng)接口,有很多實(shí)時(shí)抓取數據。有興趣的朋友可以和大家分享下,外出開(kāi)會(huì )不是很方便。
  既然是自己寫(xiě)的,那建議還是腳本,也就是單人的小任務(wù),基本的功能足夠用的。
  我也曾經(jīng)做過(guò)類(lèi)似的任務(wù),既然是單人,那么需要專(zhuān)人來(lái)完成,如果不專(zhuān)人,那么我建議可以使用手機聯(lián)網(wǎng)電腦都可以打開(kāi)的軟件;例如anycast,當然實(shí)現起來(lái)比較麻煩,但是成本很低的。 查看全部

  實(shí)時(shí)文章采集(實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多)
  實(shí)時(shí)文章采集網(wǎng)絡(luò )爬蟲(chóng),excel格式的數據爬蟲(chóng)任務(wù)可能非常多,可以嘗試下實(shí)時(shí)爬蟲(chóng)任務(wù),可以獲取到最新文章而且實(shí)時(shí)獲取文章比較方便,不用設置分頁(yè),方便直接提取有價(jià)值的信息。有感興趣的可以點(diǎn)擊我,獲取學(xué)習資料及源碼下載。對于任務(wù)是采集信息,作者是從以下幾個(gè)角度出發(fā)的。1.搜索排名2.帖子內容3.新聞來(lái)源4.熱門(mén)分類(lèi)5.標簽分析6.閱讀時(shí)間7.群組排名8.個(gè)人排名以下是簡(jiǎn)單爬蟲(chóng)的代碼和效果展示:根據內容爬取網(wǎng)絡(luò )信息列舉一些案例:1.實(shí)時(shí)文章及群組排名2.某篇文章【發(fā)布信息】【收藏】【閱讀次數】【在線(xiàn)閱讀次數】【點(diǎn)贊】【轉發(fā)】【評論】【小組討論】【說(shuō)說(shuō)】【文章微博】【學(xué)術(shù)論文】某實(shí)時(shí)排名3.某某廠(chǎng)商產(chǎn)品相關(guān)消息實(shí)時(shí)爬取。
  用戶(hù)的屬性信息,也就是分析的對象是人;還有時(shí)間上的區分也有助于抓取時(shí)間上的信息;還有就是操作規律,有很多第三方網(wǎng)站可以抓取到數據,比如飯統官網(wǎng)的爬蟲(chóng)接口,有很多實(shí)時(shí)抓取數據。有興趣的朋友可以和大家分享下,外出開(kāi)會(huì )不是很方便。
  既然是自己寫(xiě)的,那建議還是腳本,也就是單人的小任務(wù),基本的功能足夠用的。
  我也曾經(jīng)做過(guò)類(lèi)似的任務(wù),既然是單人,那么需要專(zhuān)人來(lái)完成,如果不專(zhuān)人,那么我建議可以使用手機聯(lián)網(wǎng)電腦都可以打開(kāi)的軟件;例如anycast,當然實(shí)現起來(lái)比較麻煩,但是成本很低的。

實(shí)時(shí)文章采集(電商實(shí)時(shí)數倉的比較離線(xiàn)計算與實(shí)時(shí)需求種類(lèi) )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 118 次瀏覽 ? 2022-01-20 20:02 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(電商實(shí)時(shí)數倉的比較離線(xiàn)計算與實(shí)時(shí)需求種類(lèi)
)
  一、電商實(shí)時(shí)數倉介紹1.1、普通實(shí)時(shí)計算與實(shí)時(shí)數倉對比
  普通實(shí)時(shí)計算優(yōu)先考慮及時(shí)性,所以直接從數據源采集通過(guò)實(shí)時(shí)計算得到結果。這樣比較省時(shí),但缺點(diǎn)是計算過(guò)程中的中間結果沒(méi)有沉淀出來(lái),所以在面對大量實(shí)時(shí)性需求時(shí),計算的復用性較差,開(kāi)發(fā)成本線(xiàn)性增加隨著(zhù)需求的增加。
  
  實(shí)時(shí)數倉基于一定的數據倉庫概念,對數據處理過(guò)程進(jìn)行規劃和分層,以提高數據的可重用性。
  
  1.2 實(shí)時(shí)電商數據倉庫,項目分為以下幾層
  ? 消耗臭氧層物質(zhì)
  ? DWD
  ? 昏暗
  ? DWM
  ? DWS
  ? ADS
  二、實(shí)時(shí)需求概覽2.1 離線(xiàn)與實(shí)時(shí)計算對比
  離線(xiàn)計算:即在計算開(kāi)始前所有輸入數據都是已知的,輸入數據不會(huì )改變。一般計算量大,計算時(shí)間長(cháng)。例如,今天早上 1 點(diǎn),從昨天積累的日志中計算出所需的結果。最經(jīng)典的是MR/Spark/Hive。通常,報告是根據前一天的數據生成的。統計指標和報表雖多,但對時(shí)效性不敏感。從技術(shù)操作上看,這部分屬于批量操作。即一次計算是基于一定范圍的數據。
  實(shí)時(shí)計算:輸入數據可以以序列化的方式一個(gè)一個(gè)地輸入和處理,也就是說(shuō)一開(kāi)始不需要知道所有的輸入數據。與離線(xiàn)計算相比,運行時(shí)間短,計算量較小。強調計算過(guò)程的時(shí)間要短,即在調查的那一刻給出結果。主要關(guān)注當日數據的實(shí)時(shí)監控。通常,業(yè)務(wù)邏輯比線(xiàn)下需求簡(jiǎn)單,統計指標較少,但更注重數據的及時(shí)性和用戶(hù)的交互性。從技術(shù)操作來(lái)看,這部分屬于流處理的操作。
  2.2 實(shí)時(shí)需求類(lèi)型2.2.1 每日統計報表或分析圖表需收錄當日
  
  對于日常的企業(yè)和網(wǎng)站運營(yíng)管理來(lái)說(shuō),如果僅僅依靠離線(xiàn)計算,數據的時(shí)效性往往不盡如人意。通過(guò)實(shí)時(shí)計算獲取日、分、秒甚至亞秒級的數據,讓企業(yè)更容易快速響應和調整業(yè)務(wù)。
  因此,實(shí)時(shí)計算結果往往與線(xiàn)下數據相結合或展示在BI或統計平臺中。
  2.2.2 實(shí)時(shí)數據大屏監控
  大數據屏幕是比 BI 工具或數據分析平臺更直觀(guān)的數據可視化方式。尤其是一些大型的促銷(xiāo)活動(dòng),已經(jīng)成為必備的營(yíng)銷(xiāo)手段。此外,還有一些特殊的行業(yè),比如交通、電信行業(yè),那么大屏監控幾乎是必不可少的監控手段。
  2.2.3 數據警告或提醒
  一些通過(guò)大數據實(shí)時(shí)計算得到的風(fēng)控預警和營(yíng)銷(xiāo)信息提示,可以讓風(fēng)控或營(yíng)銷(xiāo)部門(mén)快速獲取信息,從而采取各種應對措施。比如用戶(hù)在電商、金融平臺進(jìn)行一些違法或欺詐的操作,大數據的實(shí)時(shí)計算可以快速篩選出情況并發(fā)送給風(fēng)控部門(mén)處理,甚至自動(dòng)屏蔽它?;蛘邫z測到用戶(hù)的行為對某些產(chǎn)品有強烈的購買(mǎi)意愿,那么可以將這些“商機”推送給客服部,讓客服主動(dòng)跟進(jìn)。
  2.2.4 實(shí)時(shí)推薦系統
  實(shí)時(shí)推薦是根據用戶(hù)自身屬性結合當前訪(fǎng)問(wèn)行為,通過(guò)實(shí)時(shí)推薦算法計算,將用戶(hù)可能喜歡的產(chǎn)品、新聞、視頻等推送給用戶(hù)。這類(lèi)系統一般由用戶(hù)畫(huà)像的批處理和用戶(hù)行為分析的流處理組成。
  三、統計架構分析3.1 離線(xiàn)架構
  
  3.2、實(shí)時(shí)架構
   查看全部

  實(shí)時(shí)文章采集(電商實(shí)時(shí)數倉的比較離線(xiàn)計算與實(shí)時(shí)需求種類(lèi)
)
  一、電商實(shí)時(shí)數倉介紹1.1、普通實(shí)時(shí)計算與實(shí)時(shí)數倉對比
  普通實(shí)時(shí)計算優(yōu)先考慮及時(shí)性,所以直接從數據源采集通過(guò)實(shí)時(shí)計算得到結果。這樣比較省時(shí),但缺點(diǎn)是計算過(guò)程中的中間結果沒(méi)有沉淀出來(lái),所以在面對大量實(shí)時(shí)性需求時(shí),計算的復用性較差,開(kāi)發(fā)成本線(xiàn)性增加隨著(zhù)需求的增加。
  
  實(shí)時(shí)數倉基于一定的數據倉庫概念,對數據處理過(guò)程進(jìn)行規劃和分層,以提高數據的可重用性。
  
  1.2 實(shí)時(shí)電商數據倉庫,項目分為以下幾層
  ? 消耗臭氧層物質(zhì)
  ? DWD
  ? 昏暗
  ? DWM
  ? DWS
  ? ADS
  二、實(shí)時(shí)需求概覽2.1 離線(xiàn)與實(shí)時(shí)計算對比
  離線(xiàn)計算:即在計算開(kāi)始前所有輸入數據都是已知的,輸入數據不會(huì )改變。一般計算量大,計算時(shí)間長(cháng)。例如,今天早上 1 點(diǎn),從昨天積累的日志中計算出所需的結果。最經(jīng)典的是MR/Spark/Hive。通常,報告是根據前一天的數據生成的。統計指標和報表雖多,但對時(shí)效性不敏感。從技術(shù)操作上看,這部分屬于批量操作。即一次計算是基于一定范圍的數據。
  實(shí)時(shí)計算:輸入數據可以以序列化的方式一個(gè)一個(gè)地輸入和處理,也就是說(shuō)一開(kāi)始不需要知道所有的輸入數據。與離線(xiàn)計算相比,運行時(shí)間短,計算量較小。強調計算過(guò)程的時(shí)間要短,即在調查的那一刻給出結果。主要關(guān)注當日數據的實(shí)時(shí)監控。通常,業(yè)務(wù)邏輯比線(xiàn)下需求簡(jiǎn)單,統計指標較少,但更注重數據的及時(shí)性和用戶(hù)的交互性。從技術(shù)操作來(lái)看,這部分屬于流處理的操作。
  2.2 實(shí)時(shí)需求類(lèi)型2.2.1 每日統計報表或分析圖表需收錄當日
  
  對于日常的企業(yè)和網(wǎng)站運營(yíng)管理來(lái)說(shuō),如果僅僅依靠離線(xiàn)計算,數據的時(shí)效性往往不盡如人意。通過(guò)實(shí)時(shí)計算獲取日、分、秒甚至亞秒級的數據,讓企業(yè)更容易快速響應和調整業(yè)務(wù)。
  因此,實(shí)時(shí)計算結果往往與線(xiàn)下數據相結合或展示在BI或統計平臺中。
  2.2.2 實(shí)時(shí)數據大屏監控
  大數據屏幕是比 BI 工具或數據分析平臺更直觀(guān)的數據可視化方式。尤其是一些大型的促銷(xiāo)活動(dòng),已經(jīng)成為必備的營(yíng)銷(xiāo)手段。此外,還有一些特殊的行業(yè),比如交通、電信行業(yè),那么大屏監控幾乎是必不可少的監控手段。
  2.2.3 數據警告或提醒
  一些通過(guò)大數據實(shí)時(shí)計算得到的風(fēng)控預警和營(yíng)銷(xiāo)信息提示,可以讓風(fēng)控或營(yíng)銷(xiāo)部門(mén)快速獲取信息,從而采取各種應對措施。比如用戶(hù)在電商、金融平臺進(jìn)行一些違法或欺詐的操作,大數據的實(shí)時(shí)計算可以快速篩選出情況并發(fā)送給風(fēng)控部門(mén)處理,甚至自動(dòng)屏蔽它?;蛘邫z測到用戶(hù)的行為對某些產(chǎn)品有強烈的購買(mǎi)意愿,那么可以將這些“商機”推送給客服部,讓客服主動(dòng)跟進(jìn)。
  2.2.4 實(shí)時(shí)推薦系統
  實(shí)時(shí)推薦是根據用戶(hù)自身屬性結合當前訪(fǎng)問(wèn)行為,通過(guò)實(shí)時(shí)推薦算法計算,將用戶(hù)可能喜歡的產(chǎn)品、新聞、視頻等推送給用戶(hù)。這類(lèi)系統一般由用戶(hù)畫(huà)像的批處理和用戶(hù)行為分析的流處理組成。
  三、統計架構分析3.1 離線(xiàn)架構
  
  3.2、實(shí)時(shí)架構
  

實(shí)時(shí)文章采集( 帝國CMS如何免費采集信息,本篇文章分享收獲)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 108 次瀏覽 ? 2022-01-15 01:12 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(
帝國CMS如何免費采集信息,本篇文章分享收獲)
  
  帝國cms如何免費采集信息,本文文章主要介紹帝國cms如何免費采集信息,有一定的參考價(jià)值,需要的朋友可以參考下。希望看完這篇文章你會(huì )受益匪淺。小編帶大家一探究竟。Empirecms是站長(cháng)大量使用PHP的建站系統。在建站的過(guò)程中,如果沒(méi)有信息源,只能手動(dòng)復制粘貼,費時(shí)費力,所以需要用到自由帝國cms@ &gt;采集函數完成信息的錄入。對于帝國cms,站長(cháng)們接觸過(guò)很多,對比織夢(mèng)cms,織夢(mèng) 在處理超過(guò)一百萬(wàn)個(gè)數據時(shí)確實(shí)有更高的負載。許多網(wǎng)站管理員將Empirecms 用于采集 站。眾所周知,建一個(gè)采集網(wǎng)站不像做一個(gè)公司官網(wǎng),需要手動(dòng)更新。采集 站點(diǎn)越自動(dòng)化越好,最好不要讓人管理它。
  
  自由帝國cms采集如何實(shí)現呢?首先,您不需要了解代碼和技術(shù)技能,也不需要編寫(xiě)復雜的 采集 規則。畢竟大部分站長(cháng)都不知道怎么寫(xiě)采集規則。二、極簡(jiǎn)主義,配置簡(jiǎn)單,沒(méi)有復雜的功能設置,簡(jiǎn)單易懂,主要是按鍵的性質(zhì),點(diǎn)擊選擇與否。三、掛機采集,無(wú)需人工干預,設置采集規則,即可實(shí)現自動(dòng)批量掛機采集,無(wú)縫發(fā)布,自帶發(fā)布功能,采集后即自動(dòng)批量發(fā)布到網(wǎng)站,發(fā)布時(shí)支持自動(dòng)偽原創(chuàng ),使采集偽原創(chuàng )發(fā)布實(shí)現全自動(dòng)掛機。
  
  一旦你用 Empire cms 建立了你的站,恢復整個(gè) 采集 過(guò)程。
  1.點(diǎn)擊批處理采集管理,選擇添加采集任務(wù)
  2.新建采集任務(wù)標題,以zjxseo為例,選擇采集數據源,同時(shí)支持十多個(gè)數據源采集,點(diǎn)擊選擇。
  3. 選擇采集文件存放目錄,在D盤(pán)新建文件夾,在數據源中設置關(guān)鍵詞篇采集篇,10篇/ 關(guān)鍵詞例如。 查看全部

  實(shí)時(shí)文章采集(
帝國CMS如何免費采集信息,本篇文章分享收獲)
  
  帝國cms如何免費采集信息,本文文章主要介紹帝國cms如何免費采集信息,有一定的參考價(jià)值,需要的朋友可以參考下。希望看完這篇文章你會(huì )受益匪淺。小編帶大家一探究竟。Empirecms是站長(cháng)大量使用PHP的建站系統。在建站的過(guò)程中,如果沒(méi)有信息源,只能手動(dòng)復制粘貼,費時(shí)費力,所以需要用到自由帝國cms@ &gt;采集函數完成信息的錄入。對于帝國cms,站長(cháng)們接觸過(guò)很多,對比織夢(mèng)cms,織夢(mèng) 在處理超過(guò)一百萬(wàn)個(gè)數據時(shí)確實(shí)有更高的負載。許多網(wǎng)站管理員將Empirecms 用于采集 站。眾所周知,建一個(gè)采集網(wǎng)站不像做一個(gè)公司官網(wǎng),需要手動(dòng)更新。采集 站點(diǎn)越自動(dòng)化越好,最好不要讓人管理它。
  
  自由帝國cms采集如何實(shí)現呢?首先,您不需要了解代碼和技術(shù)技能,也不需要編寫(xiě)復雜的 采集 規則。畢竟大部分站長(cháng)都不知道怎么寫(xiě)采集規則。二、極簡(jiǎn)主義,配置簡(jiǎn)單,沒(méi)有復雜的功能設置,簡(jiǎn)單易懂,主要是按鍵的性質(zhì),點(diǎn)擊選擇與否。三、掛機采集,無(wú)需人工干預,設置采集規則,即可實(shí)現自動(dòng)批量掛機采集,無(wú)縫發(fā)布,自帶發(fā)布功能,采集后即自動(dòng)批量發(fā)布到網(wǎng)站,發(fā)布時(shí)支持自動(dòng)偽原創(chuàng ),使采集偽原創(chuàng )發(fā)布實(shí)現全自動(dòng)掛機。
  
  一旦你用 Empire cms 建立了你的站,恢復整個(gè) 采集 過(guò)程。
  1.點(diǎn)擊批處理采集管理,選擇添加采集任務(wù)
  2.新建采集任務(wù)標題,以zjxseo為例,選擇采集數據源,同時(shí)支持十多個(gè)數據源采集,點(diǎn)擊選擇。
  3. 選擇采集文件存放目錄,在D盤(pán)新建文件夾,在數據源中設置關(guān)鍵詞篇采集篇,10篇/ 關(guān)鍵詞例如。

實(shí)時(shí)文章采集(一下zblog插件采集方式(一)(1)_國內_光明網(wǎng)(組圖) )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 132 次瀏覽 ? 2022-01-14 06:15 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(一下zblog插件采集方式(一)(1)_國內_光明網(wǎng)(組圖)
)
  Zblog采集插件是為了幫助網(wǎng)站快速豐富網(wǎng)站內容;減少手動(dòng)內容發(fā)布的繁瑣;主要是給網(wǎng)站添加很多內容,方便快捷。 網(wǎng)站發(fā)布文章的時(shí)候,如果把文章一一發(fā)布到網(wǎng)上,不僅浪費時(shí)間,而且效率低下。這時(shí)候為了提高更新網(wǎng)站的效率,出現了zblog采集插件,但是常規的zblog插件都需要寫(xiě)規則。今天博主就來(lái)說(shuō)說(shuō)zblog插件采集方法:第一個(gè)是付費插件,需要寫(xiě)規則,第二個(gè)是免費工具,不需要寫(xiě)規則!
  
  Zblog采集規則介紹
  第一步:創(chuàng )建一個(gè)新的文章采集節點(diǎn)
  登錄后臺,點(diǎn)擊采集>>>采集節點(diǎn)管理>>添加新節點(diǎn)>>選擇普通文章>>確定
  第二步:填寫(xiě)采集列表規則
  1.節點(diǎn)名:隨便(注意要能區分,因為節點(diǎn)太多可能會(huì )造成混亂)
  2.查看目標頁(yè)面的編碼:查看目標頁(yè)面的編碼
  3.匹配網(wǎng)址:進(jìn)入采集目標列表頁(yè)面查看其列表規則!比如很多網(wǎng)站列表的首頁(yè)和其他的內頁(yè)差別很大,所以我一般不會(huì )采集定位到列表的首頁(yè)!
  
  最好從第二頁(yè)開(kāi)始(雖然第一頁(yè)可以找到,但是很多網(wǎng)站根本沒(méi)有第一頁(yè),這里就不講怎么找到第一頁(yè)了)
  4.區域末尾的HTML:在采集目標列表頁(yè)面打開(kāi)源代碼!在 文章 的標題附近尋找一個(gè) html 標記,該標記將是 采集,并且對于該頁(yè)面和其他將成為 采集 的頁(yè)面來(lái)說(shuō)是唯一的!
  再次按下一步!輸入并填寫(xiě)采集內容規則
  第 3 步:采集內容規則
  1.文章標題:尋找文章標題前后兩個(gè)標簽,即可識別標題!
  2.文章內容:尋找文章內容前后的兩個(gè)標簽來(lái)識別內容!我的 采集 的 網(wǎng)站 的 文章 內容前后的唯一標簽是
  [內容]
  其他功能,不用擔心!這就是 zblog 可以訪(fǎng)問(wèn) 文章 的方式!然后,單擊以保存配置并進(jìn)行預覽。如果之前的列表規則和內容規則都寫(xiě)對了,現在可以采集文章!
  二、通過(guò)關(guān)鍵詞采集文章
  
  無(wú)需學(xué)習更多專(zhuān)業(yè)技能,簡(jiǎn)單幾步輕松搞定采集網(wǎng)頁(yè)數據,精準數據發(fā)布,關(guān)鍵詞用戶(hù)只需在軟件中進(jìn)行簡(jiǎn)單設置,完成后系統根據用戶(hù)設置關(guān)鍵詞進(jìn)行采集,高精度匹配內容和圖片并自動(dòng)執行文章采集發(fā)布,提供方便快捷的數據服務(wù)! !
  
  相對規則采集門(mén)檻低,無(wú)需花大量時(shí)間學(xué)習軟件操作,無(wú)需配置采集規則即可一分鐘上手,輸入關(guān)鍵詞采集.無(wú)需人工干預,將任務(wù)設置為自動(dòng)執行采集releases。幾十萬(wàn)個(gè)不同的cms網(wǎng)站可以統一管理。一個(gè)人維護數百個(gè) 網(wǎng)站文章 更新也不是問(wèn)題。
  
<p>這類(lèi)工具還是很強大的,只要輸入關(guān)鍵詞采集,完全可以通過(guò)軟件 查看全部

  實(shí)時(shí)文章采集(一下zblog插件采集方式(一)(1)_國內_光明網(wǎng)(組圖)
)
  Zblog采集插件是為了幫助網(wǎng)站快速豐富網(wǎng)站內容;減少手動(dòng)內容發(fā)布的繁瑣;主要是給網(wǎng)站添加很多內容,方便快捷。 網(wǎng)站發(fā)布文章的時(shí)候,如果把文章一一發(fā)布到網(wǎng)上,不僅浪費時(shí)間,而且效率低下。這時(shí)候為了提高更新網(wǎng)站的效率,出現了zblog采集插件,但是常規的zblog插件都需要寫(xiě)規則。今天博主就來(lái)說(shuō)說(shuō)zblog插件采集方法:第一個(gè)是付費插件,需要寫(xiě)規則,第二個(gè)是免費工具,不需要寫(xiě)規則!
  
  Zblog采集規則介紹
  第一步:創(chuàng )建一個(gè)新的文章采集節點(diǎn)
  登錄后臺,點(diǎn)擊采集>>>采集節點(diǎn)管理>>添加新節點(diǎn)>>選擇普通文章>>確定
  第二步:填寫(xiě)采集列表規則
  1.節點(diǎn)名:隨便(注意要能區分,因為節點(diǎn)太多可能會(huì )造成混亂)
  2.查看目標頁(yè)面的編碼:查看目標頁(yè)面的編碼
  3.匹配網(wǎng)址:進(jìn)入采集目標列表頁(yè)面查看其列表規則!比如很多網(wǎng)站列表的首頁(yè)和其他的內頁(yè)差別很大,所以我一般不會(huì )采集定位到列表的首頁(yè)!
  
  最好從第二頁(yè)開(kāi)始(雖然第一頁(yè)可以找到,但是很多網(wǎng)站根本沒(méi)有第一頁(yè),這里就不講怎么找到第一頁(yè)了)
  4.區域末尾的HTML:在采集目標列表頁(yè)面打開(kāi)源代碼!在 文章 的標題附近尋找一個(gè) html 標記,該標記將是 采集,并且對于該頁(yè)面和其他將成為 采集 的頁(yè)面來(lái)說(shuō)是唯一的!
  再次按下一步!輸入并填寫(xiě)采集內容規則
  第 3 步:采集內容規則
  1.文章標題:尋找文章標題前后兩個(gè)標簽,即可識別標題!
  2.文章內容:尋找文章內容前后的兩個(gè)標簽來(lái)識別內容!我的 采集 的 網(wǎng)站 的 文章 內容前后的唯一標簽是
  [內容]
  其他功能,不用擔心!這就是 zblog 可以訪(fǎng)問(wèn) 文章 的方式!然后,單擊以保存配置并進(jìn)行預覽。如果之前的列表規則和內容規則都寫(xiě)對了,現在可以采集文章!
  二、通過(guò)關(guān)鍵詞采集文章
  
  無(wú)需學(xué)習更多專(zhuān)業(yè)技能,簡(jiǎn)單幾步輕松搞定采集網(wǎng)頁(yè)數據,精準數據發(fā)布,關(guān)鍵詞用戶(hù)只需在軟件中進(jìn)行簡(jiǎn)單設置,完成后系統根據用戶(hù)設置關(guān)鍵詞進(jìn)行采集,高精度匹配內容和圖片并自動(dòng)執行文章采集發(fā)布,提供方便快捷的數據服務(wù)! !
  
  相對規則采集門(mén)檻低,無(wú)需花大量時(shí)間學(xué)習軟件操作,無(wú)需配置采集規則即可一分鐘上手,輸入關(guān)鍵詞采集.無(wú)需人工干預,將任務(wù)設置為自動(dòng)執行采集releases。幾十萬(wàn)個(gè)不同的cms網(wǎng)站可以統一管理。一個(gè)人維護數百個(gè) 網(wǎng)站文章 更新也不是問(wèn)題。
  
<p>這類(lèi)工具還是很強大的,只要輸入關(guān)鍵詞采集,完全可以通過(guò)軟件

實(shí)時(shí)文章采集(絕對能使你眼前一亮,通過(guò)這篇文章介紹希望你能有所收獲)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 114 次瀏覽 ? 2022-01-13 18:04 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(絕對能使你眼前一亮,通過(guò)這篇文章介紹希望你能有所收獲)
  本文文章向你展示了如何在TX1上使用OpenCV3.1實(shí)時(shí)采集視頻圖像分析。內容簡(jiǎn)潔易懂,一定會(huì )讓你眼前一亮。文章文章的詳細介紹希望你有所收獲。
  嵌入式平臺(目標): Jeston TX1
  OpenCV:OpenCV3.1
  攝像頭:USB 800W 攝像頭
  1 簡(jiǎn)介
  Jetpack3.0安裝的OpenCV是OpenCV2.4.13,而OpenCV2.4.13不支持USB攝像頭。未來(lái)NVIDIA更新的Jetpack將解決USB攝像頭支持不佳的問(wèn)題。在官方解決之前,臨時(shí)的解決辦法是自己編譯OpenCV3.1。
  2 下載 OpenCV3
  網(wǎng)址:
  點(diǎn)擊 Sources 下載源代碼:
  
  3 安裝依賴(lài)庫
  #?Some?general?development?librariessudo?apt-get?install?-y?build-essential?make?cmake?cmake-curses-gui?g++#?libav?video?input/output?development?librariessudo?apt-get?install?-y?libavformat-dev?libavutil-dev?libswscale-dev#?Video4Linux?camera?development?librariessudo?apt-get?install?-y?libv4l-dev#?Eigen3?math?development?librariessudo?apt-get?install?-y?libeigen3-dev#?OpenGL?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libglew1.6-dev#?GTK?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libgtk2.0-dev
  4 編譯安裝OpenCV3
  cd?~
mkdir?src
cd?src
unzip?~/Downloads/opencv-3.1.0.zip
cd?opencv-3.1.0mkdir?build
cd?build
cmake?-DWITH_CUDA=ON?-DCUDA_ARCH_BIN="5.3"?-DCUDA_ARCH_PTX=""?-DBUILD_TESTS=OFF?-DBUILD_PERF_TESTS=OFF?-DCUDA_FAST_MATH=ON?-DCMAKE_INSTALL_PREFIX=/home/ubuntu/opencv-3.1.0?..make?-j4?install
  5 運行 hog 例程5.1 編譯并運行例程
  cd?~/src/opencv-3.1.0/samples/gpu
g++?-o?hog?-I?/home/ubuntu/opencv-3.1.0/include?-O2?-g?-Wall?hog.cpp?-L?/home/ubuntu/opencv-3.1.0/lib?-lopencv_core?-lopencv_imgproc?-l?opencv_flann?-l?opencv_imgcodecs?-lopencv_videoio?-lopencv_highgui?-lopencv_ml?-lopencv_video?-lopencv_objdetect?-lopencv_photo?-lopencv_features2d?-lopencv_calib3d?-lopencv_stitching?-lopencv_videostab?-lopencv_shape?-lopencv_cudaobjdetect?-lopencv_cudawarping?-lopencv_cudaimgprocexport?LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATH./hog?--camera?0
  
  5.2 運行結果
  
  6 寫(xiě)一個(gè)簡(jiǎn)單的相機采集程序6.1 代碼如下
  #include???#include???using?namespace?cv;??
using?namespace?std;??
int?main(int?argc,?char**?argv)??
{??
????VideoCapture?cap("nvcamerasrc?!?video/x-raw(memory:NVMM),?width=(int)1280,?height=(int)720,format=(string)I420,?framerate=(fraction)24/1?!?nvvidconv?flip-method=2?!?video/x-raw,?format=(string)BGRx?!?videoconvert?!?video/x-raw,?format=(string)BGR?!?appsink");??if?(!cap.isOpened())??
????{??cout?=?8000)
  如下所示:
  
  以上內容是如何使用OpenCV分析TX13.1實(shí)時(shí)采集視頻圖像,你有學(xué)到什么知識或技巧嗎?如果您想學(xué)習更多技能或豐富知識儲備,請關(guān)注易宿云行業(yè)資訊頻道。 查看全部

  實(shí)時(shí)文章采集(絕對能使你眼前一亮,通過(guò)這篇文章介紹希望你能有所收獲)
  本文文章向你展示了如何在TX1上使用OpenCV3.1實(shí)時(shí)采集視頻圖像分析。內容簡(jiǎn)潔易懂,一定會(huì )讓你眼前一亮。文章文章的詳細介紹希望你有所收獲。
  嵌入式平臺(目標): Jeston TX1
  OpenCV:OpenCV3.1
  攝像頭:USB 800W 攝像頭
  1 簡(jiǎn)介
  Jetpack3.0安裝的OpenCV是OpenCV2.4.13,而OpenCV2.4.13不支持USB攝像頭。未來(lái)NVIDIA更新的Jetpack將解決USB攝像頭支持不佳的問(wèn)題。在官方解決之前,臨時(shí)的解決辦法是自己編譯OpenCV3.1。
  2 下載 OpenCV3
  網(wǎng)址:
  點(diǎn)擊 Sources 下載源代碼:
  
  3 安裝依賴(lài)庫
  #?Some?general?development?librariessudo?apt-get?install?-y?build-essential?make?cmake?cmake-curses-gui?g++#?libav?video?input/output?development?librariessudo?apt-get?install?-y?libavformat-dev?libavutil-dev?libswscale-dev#?Video4Linux?camera?development?librariessudo?apt-get?install?-y?libv4l-dev#?Eigen3?math?development?librariessudo?apt-get?install?-y?libeigen3-dev#?OpenGL?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libglew1.6-dev#?GTK?development?libraries?(to?allow?creating?graphical?windows)sudo?apt-get?install?-y?libgtk2.0-dev
  4 編譯安裝OpenCV3
  cd?~
mkdir?src
cd?src
unzip?~/Downloads/opencv-3.1.0.zip
cd?opencv-3.1.0mkdir?build
cd?build
cmake?-DWITH_CUDA=ON?-DCUDA_ARCH_BIN="5.3"?-DCUDA_ARCH_PTX=""?-DBUILD_TESTS=OFF?-DBUILD_PERF_TESTS=OFF?-DCUDA_FAST_MATH=ON?-DCMAKE_INSTALL_PREFIX=/home/ubuntu/opencv-3.1.0?..make?-j4?install
  5 運行 hog 例程5.1 編譯并運行例程
  cd?~/src/opencv-3.1.0/samples/gpu
g++?-o?hog?-I?/home/ubuntu/opencv-3.1.0/include?-O2?-g?-Wall?hog.cpp?-L?/home/ubuntu/opencv-3.1.0/lib?-lopencv_core?-lopencv_imgproc?-l?opencv_flann?-l?opencv_imgcodecs?-lopencv_videoio?-lopencv_highgui?-lopencv_ml?-lopencv_video?-lopencv_objdetect?-lopencv_photo?-lopencv_features2d?-lopencv_calib3d?-lopencv_stitching?-lopencv_videostab?-lopencv_shape?-lopencv_cudaobjdetect?-lopencv_cudawarping?-lopencv_cudaimgprocexport?LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATH./hog?--camera?0
  
  5.2 運行結果
  
  6 寫(xiě)一個(gè)簡(jiǎn)單的相機采集程序6.1 代碼如下
  #include???#include???using?namespace?cv;??
using?namespace?std;??
int?main(int?argc,?char**?argv)??
{??
????VideoCapture?cap("nvcamerasrc?!?video/x-raw(memory:NVMM),?width=(int)1280,?height=(int)720,format=(string)I420,?framerate=(fraction)24/1?!?nvvidconv?flip-method=2?!?video/x-raw,?format=(string)BGRx?!?videoconvert?!?video/x-raw,?format=(string)BGR?!?appsink");??if?(!cap.isOpened())??
????{??cout?=?8000)
  如下所示:
  
  以上內容是如何使用OpenCV分析TX13.1實(shí)時(shí)采集視頻圖像,你有學(xué)到什么知識或技巧嗎?如果您想學(xué)習更多技能或豐富知識儲備,請關(guān)注易宿云行業(yè)資訊頻道。

實(shí)時(shí)文章采集( Oxylabs定位的3款工具:SERPAPI、電商爬蟲(chóng)API )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 230 次瀏覽 ? 2022-01-08 15:00 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(
Oxylabs定位的3款工具:SERPAPI、電商爬蟲(chóng)API
)
  
  在過(guò)去的幾個(gè)月里,我們一直在改進(jìn)我們的實(shí)時(shí)爬蟲(chóng)產(chǎn)品?,F在,Oxylabs 很高興地宣布,我們即將帶來(lái)一款新的爬蟲(chóng)產(chǎn)品!雖然上一代產(chǎn)品的單一解決方案非常出色,但為了滿(mǎn)足客戶(hù)不同場(chǎng)景的需求,我們將推出3款定位不同的工具:SERP爬蟲(chóng)API、電商爬蟲(chóng)API和網(wǎng)頁(yè)爬蟲(chóng)API。今天的文章文章帶你了解新品的獨特之處。
  有什么變化?
  實(shí)時(shí)爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)行業(yè)最早的數據采集工具之一,專(zhuān)用于大規模的采集電子商務(wù)公共數據和搜索引擎數據。它幫助許多公司輕松采集公共數據,現在我們的產(chǎn)品表現更好。
  “我們針對實(shí)時(shí)爬蟲(chóng)的不同功能,開(kāi)發(fā)了3款專(zhuān)用爬蟲(chóng)工具,這樣我們就可以有針對性地進(jìn)行產(chǎn)品開(kāi)發(fā),從而為客戶(hù)提供整體性能和用戶(hù)體驗更好的產(chǎn)品?!?br />   – Aleksandras ?ul?enko,Oxylabs 的 Crawler API 產(chǎn)品經(jīng)理
  從現在開(kāi)始,實(shí)時(shí)爬蟲(chóng)已經(jīng)衍生為一組健壯的爬蟲(chóng) API,每個(gè) API 都有特定的優(yōu)勢:
  ● SERP爬蟲(chóng)API
  ● 電商爬蟲(chóng)API
  ● 網(wǎng)絡(luò )爬蟲(chóng)API
  產(chǎn)品功能優(yōu)化
  所有爬蟲(chóng) API 的共同特點(diǎn)和優(yōu)勢在于,它們可以幫助企業(yè)輕松采集公開(kāi)數據:
  ● 100% 的數據傳輸成功率
  ● 專(zhuān)利代理人切換工具
  ● 高擴展性
  ● 可輕松集成
  ● 超過(guò)1.02億個(gè)IP
  ● 以用戶(hù)首選格式(AWS S3 或 GCS)交付數據
  ● 24/7 實(shí)時(shí)支持
  當然,每種產(chǎn)品都有自己的針對性?xún)?yōu)勢:
  SERP 爬蟲(chóng) API
  電商爬蟲(chóng)API
  網(wǎng)絡(luò )爬蟲(chóng) API
  ●本地化搜索結果●實(shí)時(shí)可靠的數據●不受SERP布局變化的影響
  ●數以千計的電子商務(wù)公司網(wǎng)站可用于數據捕獲●自適應解析器●JSON格式的結構化數據
  ●請求參數可自定義●JavaScript渲染●便捷的數據傳遞
  “最好的部分是爬蟲(chóng) API 將您從管理代理的麻煩中解放出來(lái),并專(zhuān)注于數據分析?!?br />   氧實(shí)驗室
  新面貌
  所有 3 個(gè)爬蟲(chóng) API 現在都有新徽標,顯示其特定用途,以便于識別:
  
  繼續之前的集成
  為了方便我們現有客戶(hù)和在本次更新之前嘗試過(guò)我們產(chǎn)品的潛在客戶(hù),我們決定使用之前的集成和身份驗證方法,以及相同的請求參數。
  SERP爬蟲(chóng)API認證方式
  SERP Crawler API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。這是啟用此工具的最簡(jiǎn)單方法之一。以下代碼示例展示了如何通過(guò)實(shí)時(shí)發(fā)送 GET 請求從搜索引擎獲取公共數據。有關(guān)更多信息,請查看 SERP Crawler API 快速指南。
  
  *對于此示例,您必須指定確切的來(lái)源才能找到可用的來(lái)源。有關(guān)詳細信息,請參閱 SERP Crawler API 文檔。
  電商爬蟲(chóng)API認證方式
  電子商務(wù)爬蟲(chóng) API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。以下代碼示例顯示了如何將 GET 請求發(fā)送到 .
   查看全部

  實(shí)時(shí)文章采集(
Oxylabs定位的3款工具:SERPAPI、電商爬蟲(chóng)API
)
  
  在過(guò)去的幾個(gè)月里,我們一直在改進(jìn)我們的實(shí)時(shí)爬蟲(chóng)產(chǎn)品?,F在,Oxylabs 很高興地宣布,我們即將帶來(lái)一款新的爬蟲(chóng)產(chǎn)品!雖然上一代產(chǎn)品的單一解決方案非常出色,但為了滿(mǎn)足客戶(hù)不同場(chǎng)景的需求,我們將推出3款定位不同的工具:SERP爬蟲(chóng)API、電商爬蟲(chóng)API和網(wǎng)頁(yè)爬蟲(chóng)API。今天的文章文章帶你了解新品的獨特之處。
  有什么變化?
  實(shí)時(shí)爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)行業(yè)最早的數據采集工具之一,專(zhuān)用于大規模的采集電子商務(wù)公共數據和搜索引擎數據。它幫助許多公司輕松采集公共數據,現在我們的產(chǎn)品表現更好。
  “我們針對實(shí)時(shí)爬蟲(chóng)的不同功能,開(kāi)發(fā)了3款專(zhuān)用爬蟲(chóng)工具,這樣我們就可以有針對性地進(jìn)行產(chǎn)品開(kāi)發(fā),從而為客戶(hù)提供整體性能和用戶(hù)體驗更好的產(chǎn)品?!?br />   – Aleksandras ?ul?enko,Oxylabs 的 Crawler API 產(chǎn)品經(jīng)理
  從現在開(kāi)始,實(shí)時(shí)爬蟲(chóng)已經(jīng)衍生為一組健壯的爬蟲(chóng) API,每個(gè) API 都有特定的優(yōu)勢:
  ● SERP爬蟲(chóng)API
  ● 電商爬蟲(chóng)API
  ● 網(wǎng)絡(luò )爬蟲(chóng)API
  產(chǎn)品功能優(yōu)化
  所有爬蟲(chóng) API 的共同特點(diǎn)和優(yōu)勢在于,它們可以幫助企業(yè)輕松采集公開(kāi)數據:
  ● 100% 的數據傳輸成功率
  ● 專(zhuān)利代理人切換工具
  ● 高擴展性
  ● 可輕松集成
  ● 超過(guò)1.02億個(gè)IP
  ● 以用戶(hù)首選格式(AWS S3 或 GCS)交付數據
  ● 24/7 實(shí)時(shí)支持
  當然,每種產(chǎn)品都有自己的針對性?xún)?yōu)勢:
  SERP 爬蟲(chóng) API
  電商爬蟲(chóng)API
  網(wǎng)絡(luò )爬蟲(chóng) API
  ●本地化搜索結果●實(shí)時(shí)可靠的數據●不受SERP布局變化的影響
  ●數以千計的電子商務(wù)公司網(wǎng)站可用于數據捕獲●自適應解析器●JSON格式的結構化數據
  ●請求參數可自定義●JavaScript渲染●便捷的數據傳遞
  “最好的部分是爬蟲(chóng) API 將您從管理代理的麻煩中解放出來(lái),并專(zhuān)注于數據分析?!?br />   氧實(shí)驗室
  新面貌
  所有 3 個(gè)爬蟲(chóng) API 現在都有新徽標,顯示其特定用途,以便于識別:
  
  繼續之前的集成
  為了方便我們現有客戶(hù)和在本次更新之前嘗試過(guò)我們產(chǎn)品的潛在客戶(hù),我們決定使用之前的集成和身份驗證方法,以及相同的請求參數。
  SERP爬蟲(chóng)API認證方式
  SERP Crawler API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。這是啟用此工具的最簡(jiǎn)單方法之一。以下代碼示例展示了如何通過(guò)實(shí)時(shí)發(fā)送 GET 請求從搜索引擎獲取公共數據。有關(guān)更多信息,請查看 SERP Crawler API 快速指南。
  
  *對于此示例,您必須指定確切的來(lái)源才能找到可用的來(lái)源。有關(guān)詳細信息,請參閱 SERP Crawler API 文檔。
  電商爬蟲(chóng)API認證方式
  電子商務(wù)爬蟲(chóng) API 使用基本的 HTTP 身份驗證,只需要用戶(hù)名和密碼。以下代碼示例顯示了如何將 GET 請求發(fā)送到 .
  

實(shí)時(shí)文章采集(免費迅睿CMS采集插件怎么使用?怎么批量采集文章到迅睿)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 130 次瀏覽 ? 2022-01-01 17:07 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(免費迅睿CMS采集插件怎么使用?怎么批量采集文章到迅睿)
  問(wèn):如何使用免費的迅睿cms采集插件?如何批量采集文章到迅睿cms
  答:一鍵創(chuàng )建多個(gè)采集任務(wù)實(shí)現批量文章采集發(fā)布,每個(gè)網(wǎng)站只需要設置關(guān)鍵詞即可實(shí)現自動(dòng)采集發(fā)布文章
  問(wèn):迅睿免費cms采集可以應用多少個(gè)網(wǎng)站插件?
  答:網(wǎng)站的數量沒(méi)有限制,添加新的網(wǎng)站只需要創(chuàng )建一個(gè)任務(wù)即可實(shí)現采集發(fā)布
  問(wèn)題:迅睿有多少免費的cms插件采集文章
  答案:采集每天幾千萬(wàn)條數據(根據我自己的網(wǎng)站設置)
  問(wèn):如何發(fā)布免費的迅睿cms插件采集?
  答:該工具有迅睿cms自動(dòng)發(fā)布功能,打開(kāi)采集后可以自動(dòng)發(fā)布到站點(diǎn)。迅睿cms新舊版本都可以使用,不用擔心網(wǎng)站版本沒(méi)有更新,采集功能不可用!
  問(wèn):免費的迅睿cms采集插件安裝復雜嗎?
  答:直接在本地電腦上安裝,雙擊直接運行!由于是本地采集工具,與服務(wù)器無(wú)關(guān),不會(huì )造成服務(wù)器死機,從而保證服務(wù)器有良好的訪(fǎng)問(wèn)速度,有利于搜索的爬取引擎!
  
  一、免費迅睿cms采集插件如何使用?
  
  1、打開(kāi)軟件導入關(guān)鍵詞到采集文章,自動(dòng)發(fā)布網(wǎng)站
  2、可以同時(shí)創(chuàng )建數百個(gè)采集發(fā)布任務(wù)
  二、免費迅睿cms發(fā)布插件如何使用?
  
  1、 直接通過(guò)迅睿cms發(fā)布工具發(fā)布,可以直接查看發(fā)布的數據數量文章,發(fā)布數量文章,并設置每日發(fā)布總量,是否偽原創(chuàng ),發(fā)布網(wǎng)址等,同時(shí)也支持除迅銳以外的所有主流cms平臺。還為SEO人員配備了定時(shí)發(fā)布功能(設置定時(shí)發(fā)帖文章,讓搜索引擎抓取更頻繁,讓整個(gè)網(wǎng)站持續抓取收錄提升排名,一 文章 @網(wǎng)站排名越高,流量越高。)
  2、發(fā)布工具還支持Empire、易游、ZBLOG、織夢(mèng)、迅睿cms、PB、Apple、搜外等各大專(zhuān)業(yè)cms
  3、自動(dòng)內鏈、標題插入關(guān)鍵詞、內容插入關(guān)鍵詞、隨機作者、隨機閱讀數
  
  以后就不用擔心了,因為網(wǎng)站太多了,你又著(zhù)急了!千萬(wàn)不要用它切換回網(wǎng)站后端,反復登錄后端很痛苦。再也不用擔心 網(wǎng)站 沒(méi)有內容了。
  網(wǎng)站的流量取決于網(wǎng)站收錄的比例。 收錄關(guān)鍵詞越多,排名越高,流量越大。
  為什么那么多人選擇迅銳cms?
  迅睿cms免費開(kāi)源系統是一款簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)者框架管理軟件。本軟件是基于PHP7語(yǔ)言使用CodeIgniter4創(chuàng )建的。為電腦、手機、APP提供多種接口和一體化操作方式,不會(huì )因用戶(hù)二次開(kāi)發(fā)而損壞程序核心。 web和PHP建站功能都可以完美運行,堪稱(chēng)PHP通用建站框架。 而迅睿cms采用了由研發(fā)資助的全新模板技術(shù),可以幫助用戶(hù)快速分離MVC設計模型的業(yè)務(wù)層和表現層,支持原生態(tài)PHP語(yǔ)法,支持CI框架語(yǔ)法,以及各種模板方面。用戶(hù)只要分析一次,就可以快速添加和下次使用,讓您設計出理想的模板。迅睿cms免費開(kāi)源系統,可以自定義各種頁(yè)面、表格、鏈接表的文本字段,讓你自己做的更好網(wǎng)站,如果你有需要這個(gè)的小伙伴是的
  
  看完這篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!你的一舉一動(dòng)都會(huì )成為編輯源源不斷的動(dòng)力! 查看全部

  實(shí)時(shí)文章采集(免費迅睿CMS采集插件怎么使用?怎么批量采集文章到迅睿)
  問(wèn):如何使用免費的迅睿cms采集插件?如何批量采集文章到迅睿cms
  答:一鍵創(chuàng )建多個(gè)采集任務(wù)實(shí)現批量文章采集發(fā)布,每個(gè)網(wǎng)站只需要設置關(guān)鍵詞即可實(shí)現自動(dòng)采集發(fā)布文章
  問(wèn):迅睿免費cms采集可以應用多少個(gè)網(wǎng)站插件?
  答:網(wǎng)站的數量沒(méi)有限制,添加新的網(wǎng)站只需要創(chuàng )建一個(gè)任務(wù)即可實(shí)現采集發(fā)布
  問(wèn)題:迅睿有多少免費的cms插件采集文章
  答案:采集每天幾千萬(wàn)條數據(根據我自己的網(wǎng)站設置)
  問(wèn):如何發(fā)布免費的迅睿cms插件采集?
  答:該工具有迅睿cms自動(dòng)發(fā)布功能,打開(kāi)采集后可以自動(dòng)發(fā)布到站點(diǎn)。迅睿cms新舊版本都可以使用,不用擔心網(wǎng)站版本沒(méi)有更新,采集功能不可用!
  問(wèn):免費的迅睿cms采集插件安裝復雜嗎?
  答:直接在本地電腦上安裝,雙擊直接運行!由于是本地采集工具,與服務(wù)器無(wú)關(guān),不會(huì )造成服務(wù)器死機,從而保證服務(wù)器有良好的訪(fǎng)問(wèn)速度,有利于搜索的爬取引擎!
  
  一、免費迅睿cms采集插件如何使用?
  
  1、打開(kāi)軟件導入關(guān)鍵詞到采集文章,自動(dòng)發(fā)布網(wǎng)站
  2、可以同時(shí)創(chuàng )建數百個(gè)采集發(fā)布任務(wù)
  二、免費迅睿cms發(fā)布插件如何使用?
  
  1、 直接通過(guò)迅睿cms發(fā)布工具發(fā)布,可以直接查看發(fā)布的數據數量文章,發(fā)布數量文章,并設置每日發(fā)布總量,是否偽原創(chuàng ),發(fā)布網(wǎng)址等,同時(shí)也支持除迅銳以外的所有主流cms平臺。還為SEO人員配備了定時(shí)發(fā)布功能(設置定時(shí)發(fā)帖文章,讓搜索引擎抓取更頻繁,讓整個(gè)網(wǎng)站持續抓取收錄提升排名,一 文章 @網(wǎng)站排名越高,流量越高。)
  2、發(fā)布工具還支持Empire、易游、ZBLOG、織夢(mèng)、迅睿cms、PB、Apple、搜外等各大專(zhuān)業(yè)cms
  3、自動(dòng)內鏈、標題插入關(guān)鍵詞、內容插入關(guān)鍵詞、隨機作者、隨機閱讀數
  
  以后就不用擔心了,因為網(wǎng)站太多了,你又著(zhù)急了!千萬(wàn)不要用它切換回網(wǎng)站后端,反復登錄后端很痛苦。再也不用擔心 網(wǎng)站 沒(méi)有內容了。
  網(wǎng)站的流量取決于網(wǎng)站收錄的比例。 收錄關(guān)鍵詞越多,排名越高,流量越大。
  為什么那么多人選擇迅銳cms?
  迅睿cms免費開(kāi)源系統是一款簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)者框架管理軟件。本軟件是基于PHP7語(yǔ)言使用CodeIgniter4創(chuàng )建的。為電腦、手機、APP提供多種接口和一體化操作方式,不會(huì )因用戶(hù)二次開(kāi)發(fā)而損壞程序核心。 web和PHP建站功能都可以完美運行,堪稱(chēng)PHP通用建站框架。 而迅睿cms采用了由研發(fā)資助的全新模板技術(shù),可以幫助用戶(hù)快速分離MVC設計模型的業(yè)務(wù)層和表現層,支持原生態(tài)PHP語(yǔ)法,支持CI框架語(yǔ)法,以及各種模板方面。用戶(hù)只要分析一次,就可以快速添加和下次使用,讓您設計出理想的模板。迅睿cms免費開(kāi)源系統,可以自定義各種頁(yè)面、表格、鏈接表的文本字段,讓你自己做的更好網(wǎng)站,如果你有需要這個(gè)的小伙伴是的
  
  看完這篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!你的一舉一動(dòng)都會(huì )成為編輯源源不斷的動(dòng)力!

實(shí)時(shí)文章采集(愛(ài)奇藝開(kāi)放式故障值守系統)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2021-12-26 13:03 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(愛(ài)奇藝開(kāi)放式故障值守系統)
  本文為愛(ài)奇藝臺灣智能內容系列手稿之首。我們將繼續為您帶來(lái)愛(ài)奇藝智能內容生產(chǎn)運營(yíng)的一系列探索,敬請期待。
  無(wú)人值守系統是愛(ài)奇藝內容中心的重要智能組件。
  首先,對于業(yè)務(wù)密度高、流程長(cháng)、業(yè)務(wù)多的業(yè)務(wù)系統,在實(shí)際運行中,故障的發(fā)生是普遍現象,在某種程度上也是一種正常狀態(tài)。因此,能夠及時(shí)發(fā)現和處理故障是在線(xiàn)業(yè)務(wù)系統的必然要求。常規方法是報警+人工干預。這種方式導致需要有人值班,人工干預的及時(shí)性得不到保障,人力成本必然增加。
  愛(ài)奇藝內容中臺也面臨著(zhù)上述問(wèn)題。試圖通過(guò)技術(shù)手段解決系統復雜性帶來(lái)的問(wèn)題,是本系統的基本思想,也是中臺智能化的一個(gè)重要方向。與傳統的監控系統相比,我們需要更多的智能服務(wù)來(lái)完成監控,同時(shí)兼顧故障的智能處理,同時(shí)方便其他處理方式的介入。無(wú)人值守系統是愛(ài)奇藝內容中心研發(fā)團隊在上述背景下設計開(kāi)發(fā)的智能開(kāi)放式故障值班系統。
  一、無(wú)人值守的目標
  無(wú)人值守系統的目標是協(xié)助業(yè)務(wù)系統實(shí)現流程自動(dòng)化、結果可靠、無(wú)需人工值守。
  在項目設計之初,我們的初衷是:愛(ài)奇藝中泰節目制作過(guò)程中,無(wú)需人工看盤(pán),確保節目制作過(guò)程正常,按時(shí)上線(xiàn)。出現問(wèn)題時(shí),可及時(shí)發(fā)現、自動(dòng)修復、風(fēng)險提示、通知人工處理等,確保程序按時(shí)上線(xiàn)。
  基于系統的目標,系統需要具備以下能力:
  
  二、整體結構介紹
  總結起來(lái),基本思路是:首先實(shí)現業(yè)務(wù)系統運行的監控功能,將業(yè)務(wù)運行數據和異常情況采集到無(wú)人值守系統,在此基礎上,通過(guò)對數據的實(shí)時(shí)智能分析,及時(shí)發(fā)現系統運行故障和業(yè)務(wù)數據異常。然后交給故障和業(yè)務(wù)異常處理模塊進(jìn)行異常的智能處理,從而實(shí)現異常和故障的自動(dòng)處理,最終實(shí)現無(wú)人值守、智能系統恢復的目的。
  
  系統運行流程介紹:
  生產(chǎn)環(huán)節數據采集到無(wú)人值守系統,主要通過(guò)愛(ài)奇藝的眾泰數據中心采集。業(yè)務(wù)系統向中臺數據中心下發(fā)數據,無(wú)人值守系統從中臺數據中心采集數據。決策引擎對采集到的數據進(jìn)行實(shí)時(shí)分析,根據SLA、異常、閾值的配置對異常數據進(jìn)行分析,形成單獨的事件。事件被傳遞到事件處理引擎 Beacon。事件處理引擎根據不同事件配置的處理流程進(jìn)行處理。事件處理流程完全可配置,支持故障修復、告警通知、故障恢復檢測、故障統計等。訓練引擎利用中泰數據中心的離線(xiàn)數據訓練系統故障分析模型,然后將模型數據提供給決策引擎進(jìn)行決策。三、核心模塊介紹
  下面對系統的核心功能模塊一一介紹:
  3.1 運營(yíng)數據實(shí)時(shí)采集模塊(基于中泰數據中心)
  通過(guò)愛(ài)奇藝內容中臺團隊實(shí)施的OLTP基礎組件(中臺數據中心),實(shí)時(shí)采集各功能模塊的運行狀態(tài)以及業(yè)務(wù)數據的進(jìn)度和狀態(tài)。OLTP基礎組件(臺灣中部數據中心)為愛(ài)奇藝內容的實(shí)時(shí)分析和處理提供支持。運行在中心平臺的各種數據都可以方便的下發(fā)到這個(gè)組件上,并且還提供了數據監控和查詢(xún)功能,可以支持TB整合海量數據的管理和維護。中泰數據中心系統將在后續系列文章中詳細介紹,此處不再展開(kāi)。
  數據采集??過(guò)程:
  
  以專(zhuān)業(yè)內容制作流程(PPC)為例:
  生產(chǎn)和交付:生產(chǎn)服務(wù)運行過(guò)程中,生產(chǎn)狀態(tài)和件的生產(chǎn)狀態(tài)將交付到中臺數據中心。
  業(yè)務(wù)流制作交付:業(yè)務(wù)流制作過(guò)程中,視頻流制作狀態(tài)、音頻制作狀態(tài)、字幕制作狀態(tài)下發(fā)至中臺數據中心。
  審核下發(fā):審核系統將審核狀態(tài)、審核時(shí)間等信息下發(fā)給眾泰數據中心。
  發(fā)布與交付:發(fā)布系統會(huì )在平臺數據中列出碼流的發(fā)布狀態(tài)。
  中泰數據中心獲取數據后,向RMQ隊列發(fā)送數據變化通知,無(wú)人值守系統監控數據變化,將數據拉取到無(wú)人值守系統。為獲取程序從生產(chǎn)到最終發(fā)布的運行數據,完成數據采集。
  3.2 決策引擎
  基于采集到的數據,對系統和業(yè)務(wù)運行進(jìn)行實(shí)時(shí)分析,決策引擎主要提供以下功能:
  錯誤檢測:實(shí)時(shí)檢測系統和業(yè)務(wù)錯誤,統一管理錯誤,發(fā)送事件。
  超時(shí)告警:基于業(yè)務(wù)節點(diǎn)的SLA配置,檢測和管理超時(shí)業(yè)務(wù)行為,并發(fā)送事件。
  可配置策略:主要包括業(yè)務(wù)功能的無(wú)人值守訪(fǎng)問(wèn)配置和業(yè)務(wù)功能的SLA配置、權限配置、統計通知配置。
  決策引擎的運行是在服務(wù)工作的同時(shí)采集
進(jìn)度和系統運行信息,不斷檢查服務(wù)進(jìn)度是否正常,有無(wú)異?;虺瑫r(shí)情況,以便及時(shí)發(fā)現問(wèn)題一旦出現問(wèn)題。
  按照下圖的邏輯繼續工作:
  服務(wù)模塊啟動(dòng)后,當發(fā)現失敗或超時(shí)時(shí),將失敗和超時(shí)事件通知外部。同時(shí)檢測系統業(yè)務(wù)單元的運行進(jìn)度,判斷進(jìn)度是否正常,并向外界通報異常進(jìn)度滯后事件。
  
  上面介紹了邏輯流程,下面介紹服務(wù)模塊的操作邏輯:
  服務(wù)模塊的主要概念:
  數據來(lái)源:數據來(lái)源主要是中臺數據中心,部分廣播控制數據采集自RMQ。數據源的數據由業(yè)務(wù)系統下發(fā)給眾泰數據中心。
  流程:完成從數據源到無(wú)人值守系統的數據采集。不同的業(yè)務(wù)有不同的流程,不同的業(yè)務(wù)有不同的采集和處理方式。
  過(guò)濾:完成數據過(guò)濾。有些采集到的數據是系統不需要的,有些字段是不需要關(guān)心的。過(guò)濾器負責過(guò)濾掉無(wú)效數據。
  Transform:數據轉換,統一轉換為決策所需的數據結構。
  Rule模塊:規則的執行,承擔transform數據,執行配置好的規則,輸出成功、失敗、啟動(dòng)三個(gè)規則結果。
  決策模塊:決策模塊進(jìn)行超時(shí)判斷。超時(shí)判斷不同于普通的成功和失敗。需要不斷的比較當前時(shí)間和進(jìn)度來(lái)判斷任務(wù)是否超時(shí)。
  延遲消息模塊:通過(guò)延遲消息,在未來(lái)的某個(gè)時(shí)間用來(lái)檢查業(yè)務(wù)操作是否超時(shí)。
  Sink回寫(xiě):將超時(shí)、超出預期在線(xiàn)時(shí)間等結論回寫(xiě)數據源。
  服務(wù)模塊按照上述概念的順序運行,將運行中發(fā)現的事件傳遞到外部。下圖:
  
  3.3 Beacon,事件處理引擎
  事件處理引擎Beacon是自主研發(fā)的模塊,從決策引擎接收事件,并在一個(gè)流程中進(jìn)行處理。對于不同的事件,處理方法有很大的不同。比如常見(jiàn)的轉碼異常就有50多種,根據處理方式的不同,分為很多組。每組都有不同的處理程序。通知不同的研發(fā)人員,通知模塊的內容不同。. 有的事件有規范的治愈,有的沒(méi)有治愈,需要通知業(yè)務(wù)人員。針對這種多樣化的需求,專(zhuān)門(mén)設計了事件處理引擎(Beacon)進(jìn)行無(wú)人值守事件處理。引擎支持流程的配置和定制,并預留了高抽象的業(yè)務(wù)對接接口、處理能力擴展方式、流程配置方式。最大限度地降低支持新業(yè)務(wù)的成本。
  常見(jiàn)故障以事件的形式發(fā)送到 Beacon 處理引擎。
  基本結構:
  事件處理引擎主要有以下幾個(gè)部分:
  上下文功能:流程執行過(guò)程中上下文參數的獲取和存儲。上下文的保存和獲取在Step基類(lèi)中實(shí)現。
  執行引擎:一個(gè)簡(jiǎn)單可靠的執行引擎,收錄
流程執行、執行延遲、執行日志等基本功能,可以執行索引Step類(lèi)型對象。
  流程配置:JSON格式的流程配置,包括Step、StopStrategy、StepAction、WaitTimeAfter等概念,流程按照StepIndex的順序執行。
  Step:Steps,steps是組成流程的單元,每一步都會(huì )執行配置好的StepAction和StopStrategy。
  StopStrategy:進(jìn)程終止判斷策略,Step類(lèi)的子類(lèi),繼承context函數。根據配置的狀態(tài),確定事件處理的最終形式,例如故障是否恢復。
  StepAction:要執行的Action,Step類(lèi)的子類(lèi),如發(fā)送郵件、發(fā)送消息、調用業(yè)務(wù)接口等,都可以打包成StepAction。
  WaitTimeAfter:本步執行完畢后,執行下一步的等待時(shí)間。
  郵件等通知功能的對接:與企業(yè)郵件系統等對接,這是通知功能的基本組成部分。
  業(yè)務(wù)功能組件:業(yè)務(wù)功能組件是構成處理流程的基礎組件,是系統處理能力的載體。為支持新業(yè)務(wù)問(wèn)題的處理,需要在業(yè)務(wù)功能組件池中擴展流程處理引擎,擴展無(wú)人值守處理能力。
  
  下面是一個(gè)簡(jiǎn)單的進(jìn)程配置示例:
  
  在實(shí)際使用過(guò)程中,針對特定事件,配置故障處理Action和治愈判斷的StopStrategy,實(shí)現故障的自恢復和治愈。這里的失敗實(shí)際上是一種事件。最后,系統可以根據運行數據分析故障數量和固化百分比。
  四、機器學(xué)習應用:生產(chǎn)時(shí)間估算
  根據無(wú)人值守系統的目標設計,無(wú)人值守系統應提供對生產(chǎn)過(guò)程的預見(jiàn)性管理,以達到業(yè)務(wù)運營(yíng)的可預見(jiàn)目的?;诓杉?br /> 到的數據,應用機器學(xué)習技術(shù)訓練各種預測模型,針對耗時(shí)的業(yè)務(wù)運營(yíng)提供各種預測能力,提升無(wú)人值守體驗。
  注意:無(wú)人值守系統的預測模型只適用于資源穩定或有保障的任務(wù),沒(méi)有考慮資源變化對運行時(shí)間的影響。
  以下是對預計生產(chǎn)時(shí)間的解釋?zhuān)?br />   問(wèn)題類(lèi)型分析:無(wú)人值守系統可以獲得豐富的視頻制作歷史數據,期望形成特征向量,用歷史數據計算訓練模型,估計視頻制作完成時(shí)間進(jìn)行剪輯。
  
  特征分析:排除空數據,過(guò)濾有價(jià)值的特征。
  例如:類(lèi)別特征:
  'businessType', "channel", 'cloudEncode', 'trancodeType', "priority", "programType",
  “serviceCode”、“needAIInsertFrame”、“needAudit”、“bitrateCode”、“平臺”、“分辨率”...
  數字特征:'持續時(shí)間'
  分類(lèi)特征值分布分析
  
  算法選擇:
  訓練數據用于去除異常值,使用XGBoost回歸模型。
  XGBoost:實(shí)現了GBDT算法,在算法和工程上做了很多改進(jìn),(GBDT(Gradient Boosting Decision Tree)梯度提升決策樹(shù))。所以它被稱(chēng)為 X (Extreme) GBoosted。
  它的基本思想是將基礎分類(lèi)器逐層疊加。每一層在訓練時(shí),都會(huì )為上一層基分類(lèi)器的樣本調整不同的權重。在測試過(guò)程中,根據各層分類(lèi)器結果的權重得到最終結果。所有弱分類(lèi)器的結果之和等于預測值,然后下一個(gè)弱分類(lèi)器將誤差函數的殘差擬合到預測值(這個(gè)殘差就是預測值與真實(shí)值之間的誤差)。
  
  五、業(yè)務(wù)系統反饋
  無(wú)人值守系統為所有連接的業(yè)務(wù)系統生成日常業(yè)務(wù)系統運行狀態(tài)報告,并推送到業(yè)務(wù)系統。數據主要包括錯誤、故障統計數據和詳細數據,以及是否滿(mǎn)足SLA等信息。業(yè)務(wù)系統根據無(wú)人值守反饋的運營(yíng)數據進(jìn)行業(yè)務(wù)改進(jìn)和系統優(yōu)化?;谶@種方式,業(yè)務(wù)系統不斷升級改造。
  以下是日常經(jīng)營(yíng)狀況報告的內容示例:
  
  六、在線(xiàn)效果
  在愛(ài)奇藝,無(wú)人值守系統已經(jīng)覆蓋了愛(ài)奇藝內容中期的重要制作環(huán)節,為每天數十萬(wàn)節目的制作提供了可靠的報告。無(wú)人值守率達到99%以上。累計發(fā)現問(wèn)題3000多道,自動(dòng)處理2800多道。大大節省人工成本,提供系統運行穩定性和準時(shí)節目在線(xiàn)率。
  七、未來(lái)方向
  未來(lái),我們希望能夠基于無(wú)人值守采集的數據,提供更加智能的分析,主動(dòng)發(fā)現業(yè)務(wù)系統問(wèn)題,預警并提前解決。
  此外,該系統目前僅針對點(diǎn)事件值班。未來(lái),該項目將以值班和問(wèn)題處理為一體,提供從點(diǎn)到線(xiàn)到面的全方位值班服務(wù)。比如以程序為粒度,可以提供更智能的中斷、恢復等能力,后者更勝一籌。 查看全部

  實(shí)時(shí)文章采集(愛(ài)奇藝開(kāi)放式故障值守系統)
  本文為愛(ài)奇藝臺灣智能內容系列手稿之首。我們將繼續為您帶來(lái)愛(ài)奇藝智能內容生產(chǎn)運營(yíng)的一系列探索,敬請期待。
  無(wú)人值守系統是愛(ài)奇藝內容中心的重要智能組件。
  首先,對于業(yè)務(wù)密度高、流程長(cháng)、業(yè)務(wù)多的業(yè)務(wù)系統,在實(shí)際運行中,故障的發(fā)生是普遍現象,在某種程度上也是一種正常狀態(tài)。因此,能夠及時(shí)發(fā)現和處理故障是在線(xiàn)業(yè)務(wù)系統的必然要求。常規方法是報警+人工干預。這種方式導致需要有人值班,人工干預的及時(shí)性得不到保障,人力成本必然增加。
  愛(ài)奇藝內容中臺也面臨著(zhù)上述問(wèn)題。試圖通過(guò)技術(shù)手段解決系統復雜性帶來(lái)的問(wèn)題,是本系統的基本思想,也是中臺智能化的一個(gè)重要方向。與傳統的監控系統相比,我們需要更多的智能服務(wù)來(lái)完成監控,同時(shí)兼顧故障的智能處理,同時(shí)方便其他處理方式的介入。無(wú)人值守系統是愛(ài)奇藝內容中心研發(fā)團隊在上述背景下設計開(kāi)發(fā)的智能開(kāi)放式故障值班系統。
  一、無(wú)人值守的目標
  無(wú)人值守系統的目標是協(xié)助業(yè)務(wù)系統實(shí)現流程自動(dòng)化、結果可靠、無(wú)需人工值守。
  在項目設計之初,我們的初衷是:愛(ài)奇藝中泰節目制作過(guò)程中,無(wú)需人工看盤(pán),確保節目制作過(guò)程正常,按時(shí)上線(xiàn)。出現問(wèn)題時(shí),可及時(shí)發(fā)現、自動(dòng)修復、風(fēng)險提示、通知人工處理等,確保程序按時(shí)上線(xiàn)。
  基于系統的目標,系統需要具備以下能力:
  
  二、整體結構介紹
  總結起來(lái),基本思路是:首先實(shí)現業(yè)務(wù)系統運行的監控功能,將業(yè)務(wù)運行數據和異常情況采集到無(wú)人值守系統,在此基礎上,通過(guò)對數據的實(shí)時(shí)智能分析,及時(shí)發(fā)現系統運行故障和業(yè)務(wù)數據異常。然后交給故障和業(yè)務(wù)異常處理模塊進(jìn)行異常的智能處理,從而實(shí)現異常和故障的自動(dòng)處理,最終實(shí)現無(wú)人值守、智能系統恢復的目的。
  
  系統運行流程介紹:
  生產(chǎn)環(huán)節數據采集到無(wú)人值守系統,主要通過(guò)愛(ài)奇藝的眾泰數據中心采集。業(yè)務(wù)系統向中臺數據中心下發(fā)數據,無(wú)人值守系統從中臺數據中心采集數據。決策引擎對采集到的數據進(jìn)行實(shí)時(shí)分析,根據SLA、異常、閾值的配置對異常數據進(jìn)行分析,形成單獨的事件。事件被傳遞到事件處理引擎 Beacon。事件處理引擎根據不同事件配置的處理流程進(jìn)行處理。事件處理流程完全可配置,支持故障修復、告警通知、故障恢復檢測、故障統計等。訓練引擎利用中泰數據中心的離線(xiàn)數據訓練系統故障分析模型,然后將模型數據提供給決策引擎進(jìn)行決策。三、核心模塊介紹
  下面對系統的核心功能模塊一一介紹:
  3.1 運營(yíng)數據實(shí)時(shí)采集模塊(基于中泰數據中心)
  通過(guò)愛(ài)奇藝內容中臺團隊實(shí)施的OLTP基礎組件(中臺數據中心),實(shí)時(shí)采集各功能模塊的運行狀態(tài)以及業(yè)務(wù)數據的進(jìn)度和狀態(tài)。OLTP基礎組件(臺灣中部數據中心)為愛(ài)奇藝內容的實(shí)時(shí)分析和處理提供支持。運行在中心平臺的各種數據都可以方便的下發(fā)到這個(gè)組件上,并且還提供了數據監控和查詢(xún)功能,可以支持TB整合海量數據的管理和維護。中泰數據中心系統將在后續系列文章中詳細介紹,此處不再展開(kāi)。
  數據采集??過(guò)程:
  
  以專(zhuān)業(yè)內容制作流程(PPC)為例:
  生產(chǎn)和交付:生產(chǎn)服務(wù)運行過(guò)程中,生產(chǎn)狀態(tài)和件的生產(chǎn)狀態(tài)將交付到中臺數據中心。
  業(yè)務(wù)流制作交付:業(yè)務(wù)流制作過(guò)程中,視頻流制作狀態(tài)、音頻制作狀態(tài)、字幕制作狀態(tài)下發(fā)至中臺數據中心。
  審核下發(fā):審核系統將審核狀態(tài)、審核時(shí)間等信息下發(fā)給眾泰數據中心。
  發(fā)布與交付:發(fā)布系統會(huì )在平臺數據中列出碼流的發(fā)布狀態(tài)。
  中泰數據中心獲取數據后,向RMQ隊列發(fā)送數據變化通知,無(wú)人值守系統監控數據變化,將數據拉取到無(wú)人值守系統。為獲取程序從生產(chǎn)到最終發(fā)布的運行數據,完成數據采集。
  3.2 決策引擎
  基于采集到的數據,對系統和業(yè)務(wù)運行進(jìn)行實(shí)時(shí)分析,決策引擎主要提供以下功能:
  錯誤檢測:實(shí)時(shí)檢測系統和業(yè)務(wù)錯誤,統一管理錯誤,發(fā)送事件。
  超時(shí)告警:基于業(yè)務(wù)節點(diǎn)的SLA配置,檢測和管理超時(shí)業(yè)務(wù)行為,并發(fā)送事件。
  可配置策略:主要包括業(yè)務(wù)功能的無(wú)人值守訪(fǎng)問(wèn)配置和業(yè)務(wù)功能的SLA配置、權限配置、統計通知配置。
  決策引擎的運行是在服務(wù)工作的同時(shí)采集
進(jìn)度和系統運行信息,不斷檢查服務(wù)進(jìn)度是否正常,有無(wú)異?;虺瑫r(shí)情況,以便及時(shí)發(fā)現問(wèn)題一旦出現問(wèn)題。
  按照下圖的邏輯繼續工作:
  服務(wù)模塊啟動(dòng)后,當發(fā)現失敗或超時(shí)時(shí),將失敗和超時(shí)事件通知外部。同時(shí)檢測系統業(yè)務(wù)單元的運行進(jìn)度,判斷進(jìn)度是否正常,并向外界通報異常進(jìn)度滯后事件。
  
  上面介紹了邏輯流程,下面介紹服務(wù)模塊的操作邏輯:
  服務(wù)模塊的主要概念:
  數據來(lái)源:數據來(lái)源主要是中臺數據中心,部分廣播控制數據采集自RMQ。數據源的數據由業(yè)務(wù)系統下發(fā)給眾泰數據中心。
  流程:完成從數據源到無(wú)人值守系統的數據采集。不同的業(yè)務(wù)有不同的流程,不同的業(yè)務(wù)有不同的采集和處理方式。
  過(guò)濾:完成數據過(guò)濾。有些采集到的數據是系統不需要的,有些字段是不需要關(guān)心的。過(guò)濾器負責過(guò)濾掉無(wú)效數據。
  Transform:數據轉換,統一轉換為決策所需的數據結構。
  Rule模塊:規則的執行,承擔transform數據,執行配置好的規則,輸出成功、失敗、啟動(dòng)三個(gè)規則結果。
  決策模塊:決策模塊進(jìn)行超時(shí)判斷。超時(shí)判斷不同于普通的成功和失敗。需要不斷的比較當前時(shí)間和進(jìn)度來(lái)判斷任務(wù)是否超時(shí)。
  延遲消息模塊:通過(guò)延遲消息,在未來(lái)的某個(gè)時(shí)間用來(lái)檢查業(yè)務(wù)操作是否超時(shí)。
  Sink回寫(xiě):將超時(shí)、超出預期在線(xiàn)時(shí)間等結論回寫(xiě)數據源。
  服務(wù)模塊按照上述概念的順序運行,將運行中發(fā)現的事件傳遞到外部。下圖:
  
  3.3 Beacon,事件處理引擎
  事件處理引擎Beacon是自主研發(fā)的模塊,從決策引擎接收事件,并在一個(gè)流程中進(jìn)行處理。對于不同的事件,處理方法有很大的不同。比如常見(jiàn)的轉碼異常就有50多種,根據處理方式的不同,分為很多組。每組都有不同的處理程序。通知不同的研發(fā)人員,通知模塊的內容不同。. 有的事件有規范的治愈,有的沒(méi)有治愈,需要通知業(yè)務(wù)人員。針對這種多樣化的需求,專(zhuān)門(mén)設計了事件處理引擎(Beacon)進(jìn)行無(wú)人值守事件處理。引擎支持流程的配置和定制,并預留了高抽象的業(yè)務(wù)對接接口、處理能力擴展方式、流程配置方式。最大限度地降低支持新業(yè)務(wù)的成本。
  常見(jiàn)故障以事件的形式發(fā)送到 Beacon 處理引擎。
  基本結構:
  事件處理引擎主要有以下幾個(gè)部分:
  上下文功能:流程執行過(guò)程中上下文參數的獲取和存儲。上下文的保存和獲取在Step基類(lèi)中實(shí)現。
  執行引擎:一個(gè)簡(jiǎn)單可靠的執行引擎,收錄
流程執行、執行延遲、執行日志等基本功能,可以執行索引Step類(lèi)型對象。
  流程配置:JSON格式的流程配置,包括Step、StopStrategy、StepAction、WaitTimeAfter等概念,流程按照StepIndex的順序執行。
  Step:Steps,steps是組成流程的單元,每一步都會(huì )執行配置好的StepAction和StopStrategy。
  StopStrategy:進(jìn)程終止判斷策略,Step類(lèi)的子類(lèi),繼承context函數。根據配置的狀態(tài),確定事件處理的最終形式,例如故障是否恢復。
  StepAction:要執行的Action,Step類(lèi)的子類(lèi),如發(fā)送郵件、發(fā)送消息、調用業(yè)務(wù)接口等,都可以打包成StepAction。
  WaitTimeAfter:本步執行完畢后,執行下一步的等待時(shí)間。
  郵件等通知功能的對接:與企業(yè)郵件系統等對接,這是通知功能的基本組成部分。
  業(yè)務(wù)功能組件:業(yè)務(wù)功能組件是構成處理流程的基礎組件,是系統處理能力的載體。為支持新業(yè)務(wù)問(wèn)題的處理,需要在業(yè)務(wù)功能組件池中擴展流程處理引擎,擴展無(wú)人值守處理能力。
  
  下面是一個(gè)簡(jiǎn)單的進(jìn)程配置示例:
  
  在實(shí)際使用過(guò)程中,針對特定事件,配置故障處理Action和治愈判斷的StopStrategy,實(shí)現故障的自恢復和治愈。這里的失敗實(shí)際上是一種事件。最后,系統可以根據運行數據分析故障數量和固化百分比。
  四、機器學(xué)習應用:生產(chǎn)時(shí)間估算
  根據無(wú)人值守系統的目標設計,無(wú)人值守系統應提供對生產(chǎn)過(guò)程的預見(jiàn)性管理,以達到業(yè)務(wù)運營(yíng)的可預見(jiàn)目的?;诓杉?br /> 到的數據,應用機器學(xué)習技術(shù)訓練各種預測模型,針對耗時(shí)的業(yè)務(wù)運營(yíng)提供各種預測能力,提升無(wú)人值守體驗。
  注意:無(wú)人值守系統的預測模型只適用于資源穩定或有保障的任務(wù),沒(méi)有考慮資源變化對運行時(shí)間的影響。
  以下是對預計生產(chǎn)時(shí)間的解釋?zhuān)?br />   問(wèn)題類(lèi)型分析:無(wú)人值守系統可以獲得豐富的視頻制作歷史數據,期望形成特征向量,用歷史數據計算訓練模型,估計視頻制作完成時(shí)間進(jìn)行剪輯。
  
  特征分析:排除空數據,過(guò)濾有價(jià)值的特征。
  例如:類(lèi)別特征:
  'businessType', "channel", 'cloudEncode', 'trancodeType', "priority", "programType",
  “serviceCode”、“needAIInsertFrame”、“needAudit”、“bitrateCode”、“平臺”、“分辨率”...
  數字特征:'持續時(shí)間'
  分類(lèi)特征值分布分析
  
  算法選擇:
  訓練數據用于去除異常值,使用XGBoost回歸模型。
  XGBoost:實(shí)現了GBDT算法,在算法和工程上做了很多改進(jìn),(GBDT(Gradient Boosting Decision Tree)梯度提升決策樹(shù))。所以它被稱(chēng)為 X (Extreme) GBoosted。
  它的基本思想是將基礎分類(lèi)器逐層疊加。每一層在訓練時(shí),都會(huì )為上一層基分類(lèi)器的樣本調整不同的權重。在測試過(guò)程中,根據各層分類(lèi)器結果的權重得到最終結果。所有弱分類(lèi)器的結果之和等于預測值,然后下一個(gè)弱分類(lèi)器將誤差函數的殘差擬合到預測值(這個(gè)殘差就是預測值與真實(shí)值之間的誤差)。
  
  五、業(yè)務(wù)系統反饋
  無(wú)人值守系統為所有連接的業(yè)務(wù)系統生成日常業(yè)務(wù)系統運行狀態(tài)報告,并推送到業(yè)務(wù)系統。數據主要包括錯誤、故障統計數據和詳細數據,以及是否滿(mǎn)足SLA等信息。業(yè)務(wù)系統根據無(wú)人值守反饋的運營(yíng)數據進(jìn)行業(yè)務(wù)改進(jìn)和系統優(yōu)化?;谶@種方式,業(yè)務(wù)系統不斷升級改造。
  以下是日常經(jīng)營(yíng)狀況報告的內容示例:
  
  六、在線(xiàn)效果
  在愛(ài)奇藝,無(wú)人值守系統已經(jīng)覆蓋了愛(ài)奇藝內容中期的重要制作環(huán)節,為每天數十萬(wàn)節目的制作提供了可靠的報告。無(wú)人值守率達到99%以上。累計發(fā)現問(wèn)題3000多道,自動(dòng)處理2800多道。大大節省人工成本,提供系統運行穩定性和準時(shí)節目在線(xiàn)率。
  七、未來(lái)方向
  未來(lái),我們希望能夠基于無(wú)人值守采集的數據,提供更加智能的分析,主動(dòng)發(fā)現業(yè)務(wù)系統問(wèn)題,預警并提前解決。
  此外,該系統目前僅針對點(diǎn)事件值班。未來(lái),該項目將以值班和問(wèn)題處理為一體,提供從點(diǎn)到線(xiàn)到面的全方位值班服務(wù)。比如以程序為粒度,可以提供更智能的中斷、恢復等能力,后者更勝一籌。

實(shí)時(shí)文章采集(一種兼容多平臺的小程序日志采集方案(一))

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2021-12-26 11:20 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(一種兼容多平臺的小程序日志采集方案(一))
  01
  背景介紹
  小程序,英文小程序。是一款無(wú)需下載安裝即可在微信中使用的應用。用戶(hù)可以?huà)呙栊〕绦虼a或搜索小程序打開(kāi)。觸手可及,用完即可使用。無(wú)需擔心是否安裝過(guò)多應用程序。
  據阿拉丁統計,截至2021年6月底,微信小程序數量突破430萬(wàn),日活躍用戶(hù)突破4.1億。小程序深度影響了200+個(gè)子行業(yè),11個(gè)主要平臺推出了各自的小程序生態(tài)。小程序已經(jīng)成為中國人定義的真正意義上的“互聯(lián)網(wǎng)技術(shù)新標準”。
  
  由于業(yè)務(wù)發(fā)展需要,我們在微信小程序、百度智能小程序、支付寶小程序、字節小程序、360小程序等多個(gè)小程序平臺都有相應的上線(xiàn)。平臺、系統、機型、版本兼容問(wèn)題導致小程序上線(xiàn)問(wèn)題;
  思考:為什么小程序啟動(dòng)這么慢?為什么不能在線(xiàn)加載白屏數據?在線(xiàn)代碼的質(zhì)量如何?是否有任何錯誤?如何在網(wǎng)上快速查找和解決問(wèn)題?用戶(hù)做了什么?推出這么多平臺小程序后,各個(gè)平臺的效果如何?目前的小程序還有優(yōu)化空間嗎?
  其實(shí)以上問(wèn)題都可以通過(guò)日志文件分析來(lái)回答。每個(gè)小程序的后端也會(huì )采集
一些日志信息。比如微信后臺采集
js異常日志和接口異常日志,但是接口異常日志只有狀態(tài)碼級別的信息和腳本異常日志。缺少當前異常發(fā)生時(shí)的頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等信息的記錄,因此排查起來(lái)相對困難。對于小程序性能數據的采集,各平臺之間并沒(méi)有統一的標準。所以我們需要一個(gè)兼容多平臺的小程序日志采集
方案。
  02
  采集
理念
  要采集
小程序的信息,首先需要了解小程序的基本架構設計。小程序本質(zhì)上是混合體,但它們是有限制的。小程序的渲染層和邏輯層分別由兩個(gè)線(xiàn)程管理:
  這兩個(gè)線(xiàn)程之間的通信是通過(guò)小程序的Native端傳遞的,邏輯層發(fā)送的網(wǎng)絡(luò )請求也是通過(guò)Native端轉發(fā)的。對于平臺端,這種設計大大增加了平臺對應用的控制,降低了各種風(fēng)險。
  當然,采集SDK也在邏輯層,所以可以監控邏輯層的交互響應。主流小程序的JS邏輯層開(kāi)發(fā)主要依賴(lài)以下三個(gè)部分:
  App:每個(gè)小程序都需要調用app.js中的App方法來(lái)注冊一個(gè)小程序實(shí)例,綁定生命周期回調函數,錯誤監控和頁(yè)面不存在監控等功能,整個(gè)小程序只有一個(gè)App實(shí)例,共享所有頁(yè)面。Page:對于小程序中的每個(gè)頁(yè)面,都需要在頁(yè)面對應的js文件中注冊,指定頁(yè)面的初始數據、生命周期回調、事件處理函數等,簡(jiǎn)單的頁(yè)面可以使用Page()來(lái)構造。wx:小程序開(kāi)發(fā)框架提供了豐富的微信原生API,可以輕松調出微信提供的能力,比如獲取用戶(hù)信息、本地存儲、支付功能。
  因此,要想有效監控小程序的運行狀態(tài),就需要對這三個(gè)模塊進(jìn)行有效攔截。在小程序中,App、Page、wx 模塊宏都暴露給全局。如果要攔截,可以直接改寫(xiě)全局中的變量。
  03
  總體方案
  
  SDK用戶(hù)包括小程序原生開(kāi)發(fā)和小程序框架開(kāi)發(fā)兩種:
  SDK 有兩個(gè)主要功能:數據采集
和報告服務(wù)。SDK的主要功能是采集
小程序生成的日志。采集日志可以分為異常日志、正常日志和性能日志3種類(lèi)型。每次上報日志時(shí),也會(huì )上報1類(lèi)通用信息:
  日志類(lèi)型
  二級分類(lèi)
  操作說(shuō)明
  異常日志
  JS錯誤、界面異常、資源下載異常
  監控很關(guān)鍵,需要實(shí)時(shí)上報
  正常日志
  用戶(hù)行為、日志信息、路由信息
  日志量大,用戶(hù)主動(dòng)上報
  性能日志
  首屏時(shí)間、頁(yè)面渲染時(shí)間、PV/UV
  一次上報,同時(shí)統計PV/UV
  一般信息
  系統信息、用戶(hù)信息、網(wǎng)絡(luò )狀態(tài)、場(chǎng)景值
  其他 3 類(lèi)日志的附加一般信息
  我們的目標小程序涵蓋目前主流的小程序,如微信、百度、今日頭條、支付寶、360等。
  公共日志采集
  常規思維
  通過(guò)相關(guān)API獲取環(huán)境信息,主要包括以下幾類(lèi)信息:
  多終端兼容思路
  基本信息API與各個(gè)平臺小程序的接口基本一致。主要區別在于模塊宏的定義。比如微信小程序是wx,百度小程序是天鵝,今日頭條小程序是tt。SDK初始化時(shí),通過(guò)判斷模塊宏是否存在并存儲在上下文變量中來(lái)確定當前的小程序環(huán)境,具體使用時(shí)通過(guò)上下文調用API。
  public get context() {
if (this._context) return this._context;
if (typeof wx !== &#39;undefined&#39;) { this._context = wx; }
if (typeof swan !== &#39;undefined&#39;) { this._context = swan; }
if (typeof tt !== &#39;undefined&#39;) { this._context = tt; }
if (typeof my !== &#39;undefined&#39;) { this._context = my; }
if (typeof qq !== &#39;undefined&#39;) { this._context = qq; }
if (typeof qh !== &#39;undefined&#39;) { this._context = qh; }
return this._context;
}
// 使用示例 用戶(hù)信息獲?。篶tx.getUserInfo()
  當前頁(yè)面的路徑得到多終端兼容處理
  所以這里有一個(gè)獲取當前頁(yè)面路徑的方法,可以平滑各個(gè)平臺小程序之間的差異。
  public get currentPage() {
if (this.appName === &#39;qh&#39;) { // 360小程序兼容
const { path } = $router.history.current;
return path;
}
let pages = getCurrentPages();
if (pages.length > 0) {
return pages[pages.length - 1].route;
} else {
return this._indexPage;
}
}
  異常日志采集
  異常日志分為三種:腳本異常、接口異常、資源異常
  由于小程序的特殊通信機制,接口請求和資源下載都是通過(guò)小程序載體Native進(jìn)行轉發(fā)和執行。因此,要采集
這部分異常,可以攔截wx.request、wx.download等相關(guān)API。
  關(guān)于接口異常信息的上報,主要涉及兩種情況: 在wx.request的成功回調中,如果響應狀態(tài)碼&gt;=400,則表示網(wǎng)絡(luò )請求已發(fā)送,但業(yè)務(wù)響應異常,并報告為異常。; 如果直接去wx.request的fail回調,說(shuō)明網(wǎng)絡(luò )請求異常,會(huì )進(jìn)行異常報告;
  資源異常主要用于攔截downloadFile文件下載API,下載失敗時(shí)上報資源異常日志。
  下面我們重點(diǎn)關(guān)注腳本異常的日志采集
。
  腳本異常_常規思路
  JS 中常見(jiàn)的錯誤有幾種,其中類(lèi)型錯誤、引用錯誤、未捕獲的 Promise 錯誤發(fā)生的頻率更高;其次是越界錯誤和不正確的 URI 錯誤。
  
  前5個(gè)錯誤可以通過(guò)監聽(tīng)小程序App.onError采集
,Promise異??梢酝ㄟ^(guò)App.onUnhandledRejection API采集
,但是這個(gè)API在各個(gè)平臺的支持是不一致的,如下:
  腳本異常_多終端兼容思路
  通過(guò)追蹤異常棧,查看源碼,我們可以看到微信已經(jīng)通過(guò)try...catch把我們業(yè)務(wù)代碼的外層包裹起來(lái)了。當發(fā)生異常時(shí),通過(guò)console.error打印出來(lái),所以在開(kāi)發(fā)過(guò)程中,可以看到發(fā)生異常時(shí),開(kāi)發(fā)者工具控制臺會(huì )打印異常信息。
  因此,我們可以攔截console.error。本次攔截可以采集
到的異常包括:
  實(shí)施過(guò)程中遇到的問(wèn)題
  在具體的實(shí)現過(guò)程中,我們發(fā)現不同平臺的具體實(shí)現是不同的:
  因此,截取console.error后,我們需要對截取的信息進(jìn)行第二次處理,平滑平臺差異。
  具體的解決辦法是通過(guò)正則匹配:
  const ERROR_TYPES_REG = /(((Eval|Reference|Range|Internal|Type|Syntax)Error)|promise)
  判斷當前腳本異常類(lèi)型,格式化信息后分別上報堆棧信息和錯誤內容。最終報告的腳本日志格式如下,包括錯誤類(lèi)型、錯誤內容和堆棧信息。
  "exceptions": [{
"errType": "MiniProgramError",
"content": "app.checkAuthorize1 is not a function",
"message": "TypeError: app.checkAuthorize1 is not a function",
"stacktrace": "MiniProgramErroranonymous> (httpe.p.__callPageLifeTime__ (h"
}]
  性能日志采集
  常規思維
  通過(guò)官方提供的API獲取數據并采集
和報告。微信提供wx.getPerformance() API,獲取小程序啟動(dòng)耗時(shí)、頁(yè)面渲染耗時(shí)、腳本注入耗時(shí);但其他平臺小程序不提供相關(guān)接口。
  多終端兼容思路
  用戶(hù)點(diǎn)擊小程序后,首先會(huì )下載小程序資源包。啟動(dòng)后會(huì )解析app.json文件,注冊App(),然后執行APP的生命周期;然后開(kāi)始加載頁(yè)面,解析頁(yè)面json文件,渲染.wxml文件,執行邏輯層js文件,調用頁(yè)面生命周期。APP和頁(yè)面的生命周期功能是性能日志采集
的重點(diǎn)。
  生命周期鉤子
  等級
  操作說(shuō)明
  主流小程序框架
  360小程序框架
  開(kāi)機
  應用級別
  監控小程序初始化
  支持
  負載
  展出
  應用級別
  監控小程序啟動(dòng)或切換到前臺
  支持
  支持
  負載
  頁(yè)面級別
  監控頁(yè)面加載
  支持
  支持
  展出
  頁(yè)面級別
  監控頁(yè)面顯示
  支持
  支持
  準備就緒
  頁(yè)面級別
  監控頁(yè)面第一次渲染完成
  支持
  支持
  隱藏
  頁(yè)面級別
  監控頁(yè)面隱藏
  支持
  支持
  我們對比了各個(gè)平臺小程序生命周期相關(guān)的API,發(fā)現主流小程序框架的實(shí)現基本一致。360小程序更特別。是基于Vue框架的二次封裝,但大部分API還是一樣的。在360小程序中,小程序初始化后的hook調用的是onLoad,需要特殊處理。
  因此,可以通過(guò)攔截和管理小程序App和Page的相應生命周期來(lái)實(shí)現性能日志采集
。在性能日志采集
方案中,我們主要將其分為應用級性能和頁(yè)面級性能。
  
  應用級性能:我們定義了首屏時(shí)間,即進(jìn)入小程序后第一頁(yè)的渲染完成時(shí)間——SDK初始化時(shí)間。
  由于小程序入口較多,有些是從分享卡進(jìn)入,點(diǎn)擊圖標,搜索。不同的進(jìn)入小程序的方式會(huì )顯示不同的主頁(yè)。因此,我們會(huì )在每個(gè)日志中攜帶當前頁(yè)面入口路徑。
  頁(yè)面級性能主要包括:
  實(shí)現過(guò)程中遇到的問(wèn)題在測試驗證階段,我們發(fā)現使用Taro框架開(kāi)發(fā)轉換的微信小程序無(wú)法采集頁(yè)面級性能數據。經(jīng)過(guò)具體定位,我們發(fā)現在Taro2版本中,小程序頁(yè)面和組件被統一為Component組件。因此,需要攔截Component;在Tar??o3之后,小程序頁(yè)面規范對象暴露在外,可以通過(guò)攔截Page來(lái)實(shí)現。具體實(shí)現邏輯如下:
  private interceptPage = (): void => {
let self = this;
let isTaro = (typeof (process) !== &#39;undefined&#39; && typeof (process.env) !== &#39;undefined&#39; && typeof (process.env.TARO_ENV) !== &#39;undefined&#39;) ? true : false;
const primaryPage = Page;
if (isTaro) {
let primaryComponent = Component;
Component = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
if (typeof obj.methods[name] === &#39;function&#39;) {
const primaryHookFn = obj.methods[name];
obj.methods[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
}
});
primaryComponent && primaryComponent.call(this, obj);
}
}
Page = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
const primaryHookFn = obj[name];
obj[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
});
primaryPage && primaryPage.call(this, obj);
}
}
  行為軌跡采集
  如果只有一些比較隱蔽的錯誤的錯誤堆棧信息,排查起來(lái)會(huì )比較困難。如果有用戶(hù)操作的路徑,排查起來(lái)就容易多了。在行為軌跡日志的采集中,我們會(huì )采集APP函數棧、Page函數棧、HTTP請求棧,并上報最近10條行為軌跡日志,以幫助用戶(hù)在發(fā)生異常時(shí)定位問(wèn)題。
  04
  SDK特性
  多終端、多幀適配
  
  重量輕,支持多種模塊化規格
  SDK由Rollup打包,壓縮體積49KB,支持cmj和es6模塊化規范。
  多種使用形式
  1. 通過(guò) npm 格式使用
  import * as mpMonitor from &#39;mp-monitor&#39;;
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  2. 以單一文件格式使用
  const mpMonitor = require(&#39;./utils/mp-monitor&#39;);
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  支持自定義報告日志
  業(yè)務(wù)方可以使用console.error(\'自定義報告內容\')
  05
  商業(yè)實(shí)踐
  1. SDK現已完成集團北斗前端監控平臺對接,支持微信、百度、今日頭條、支付寶、QQ、360等多端監控;
  2.截至2021.10.15,已接入13個(gè)小程序,覆蓋5條業(yè)務(wù)線(xiàn)
  3. SDK 上報模型與 Sentry 一致。自行搭建Sentry服務(wù)的企業(yè)可以直接使用SDK,配置上報url;
  4. 平臺接入效果展示
  開(kāi)發(fā)者可以通過(guò)首頁(yè)的圖表觀(guān)察小程序當前的運行狀態(tài)
  
  通過(guò)性能圖表,可以考慮當前小程序是否有優(yōu)化空間。如果開(kāi)啟分包加載優(yōu)化,當前首屏性能曲線(xiàn)應該會(huì )明顯降低
  
  觀(guān)察從頁(yè)面 URL 采集
的 pvuv 數據。優(yōu)化業(yè)務(wù)代碼時(shí),可以考慮去掉pv為0的頁(yè)面。
  
  頁(yè)面加載瀑布圖,可以直觀(guān)的看到一個(gè)小程序頁(yè)面的加載過(guò)程
  
  行為軌跡展示可以幫助開(kāi)發(fā)者更快地重現在線(xiàn)問(wèn)題,提高問(wèn)題解決效率
  
  06
  總結
  目前小程序日志采集SDK內部已經(jīng)平滑了多平臺之間的差異,統一了小程序性能數據采集指標。異常時(shí)上報頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等相關(guān)信息,幫助開(kāi)發(fā)者更快定位和解決在線(xiàn)問(wèn)題。
  我們會(huì )繼續優(yōu)化細節,完善功能。也歡迎有興趣的同學(xué)一起交流。
  對源碼感興趣的請點(diǎn)贊+轉發(fā)+關(guān)注+私信【小程序日志采集
】。
  歡迎點(diǎn)贊+轉發(fā)+關(guān)注!您的支持是我分享的最大動(dòng)力?。?! 查看全部

  實(shí)時(shí)文章采集(一種兼容多平臺的小程序日志采集方案(一))
  01
  背景介紹
  小程序,英文小程序。是一款無(wú)需下載安裝即可在微信中使用的應用。用戶(hù)可以?huà)呙栊〕绦虼a或搜索小程序打開(kāi)。觸手可及,用完即可使用。無(wú)需擔心是否安裝過(guò)多應用程序。
  據阿拉丁統計,截至2021年6月底,微信小程序數量突破430萬(wàn),日活躍用戶(hù)突破4.1億。小程序深度影響了200+個(gè)子行業(yè),11個(gè)主要平臺推出了各自的小程序生態(tài)。小程序已經(jīng)成為中國人定義的真正意義上的“互聯(lián)網(wǎng)技術(shù)新標準”。
  
  由于業(yè)務(wù)發(fā)展需要,我們在微信小程序、百度智能小程序、支付寶小程序、字節小程序、360小程序等多個(gè)小程序平臺都有相應的上線(xiàn)。平臺、系統、機型、版本兼容問(wèn)題導致小程序上線(xiàn)問(wèn)題;
  思考:為什么小程序啟動(dòng)這么慢?為什么不能在線(xiàn)加載白屏數據?在線(xiàn)代碼的質(zhì)量如何?是否有任何錯誤?如何在網(wǎng)上快速查找和解決問(wèn)題?用戶(hù)做了什么?推出這么多平臺小程序后,各個(gè)平臺的效果如何?目前的小程序還有優(yōu)化空間嗎?
  其實(shí)以上問(wèn)題都可以通過(guò)日志文件分析來(lái)回答。每個(gè)小程序的后端也會(huì )采集
一些日志信息。比如微信后臺采集
js異常日志和接口異常日志,但是接口異常日志只有狀態(tài)碼級別的信息和腳本異常日志。缺少當前異常發(fā)生時(shí)的頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等信息的記錄,因此排查起來(lái)相對困難。對于小程序性能數據的采集,各平臺之間并沒(méi)有統一的標準。所以我們需要一個(gè)兼容多平臺的小程序日志采集
方案。
  02
  采集
理念
  要采集
小程序的信息,首先需要了解小程序的基本架構設計。小程序本質(zhì)上是混合體,但它們是有限制的。小程序的渲染層和邏輯層分別由兩個(gè)線(xiàn)程管理:
  這兩個(gè)線(xiàn)程之間的通信是通過(guò)小程序的Native端傳遞的,邏輯層發(fā)送的網(wǎng)絡(luò )請求也是通過(guò)Native端轉發(fā)的。對于平臺端,這種設計大大增加了平臺對應用的控制,降低了各種風(fēng)險。
  當然,采集SDK也在邏輯層,所以可以監控邏輯層的交互響應。主流小程序的JS邏輯層開(kāi)發(fā)主要依賴(lài)以下三個(gè)部分:
  App:每個(gè)小程序都需要調用app.js中的App方法來(lái)注冊一個(gè)小程序實(shí)例,綁定生命周期回調函數,錯誤監控和頁(yè)面不存在監控等功能,整個(gè)小程序只有一個(gè)App實(shí)例,共享所有頁(yè)面。Page:對于小程序中的每個(gè)頁(yè)面,都需要在頁(yè)面對應的js文件中注冊,指定頁(yè)面的初始數據、生命周期回調、事件處理函數等,簡(jiǎn)單的頁(yè)面可以使用Page()來(lái)構造。wx:小程序開(kāi)發(fā)框架提供了豐富的微信原生API,可以輕松調出微信提供的能力,比如獲取用戶(hù)信息、本地存儲、支付功能。
  因此,要想有效監控小程序的運行狀態(tài),就需要對這三個(gè)模塊進(jìn)行有效攔截。在小程序中,App、Page、wx 模塊宏都暴露給全局。如果要攔截,可以直接改寫(xiě)全局中的變量。
  03
  總體方案
  
  SDK用戶(hù)包括小程序原生開(kāi)發(fā)和小程序框架開(kāi)發(fā)兩種:
  SDK 有兩個(gè)主要功能:數據采集
和報告服務(wù)。SDK的主要功能是采集
小程序生成的日志。采集日志可以分為異常日志、正常日志和性能日志3種類(lèi)型。每次上報日志時(shí),也會(huì )上報1類(lèi)通用信息:
  日志類(lèi)型
  二級分類(lèi)
  操作說(shuō)明
  異常日志
  JS錯誤、界面異常、資源下載異常
  監控很關(guān)鍵,需要實(shí)時(shí)上報
  正常日志
  用戶(hù)行為、日志信息、路由信息
  日志量大,用戶(hù)主動(dòng)上報
  性能日志
  首屏時(shí)間、頁(yè)面渲染時(shí)間、PV/UV
  一次上報,同時(shí)統計PV/UV
  一般信息
  系統信息、用戶(hù)信息、網(wǎng)絡(luò )狀態(tài)、場(chǎng)景值
  其他 3 類(lèi)日志的附加一般信息
  我們的目標小程序涵蓋目前主流的小程序,如微信、百度、今日頭條、支付寶、360等。
  公共日志采集
  常規思維
  通過(guò)相關(guān)API獲取環(huán)境信息,主要包括以下幾類(lèi)信息:
  多終端兼容思路
  基本信息API與各個(gè)平臺小程序的接口基本一致。主要區別在于模塊宏的定義。比如微信小程序是wx,百度小程序是天鵝,今日頭條小程序是tt。SDK初始化時(shí),通過(guò)判斷模塊宏是否存在并存儲在上下文變量中來(lái)確定當前的小程序環(huán)境,具體使用時(shí)通過(guò)上下文調用API。
  public get context() {
if (this._context) return this._context;
if (typeof wx !== &#39;undefined&#39;) { this._context = wx; }
if (typeof swan !== &#39;undefined&#39;) { this._context = swan; }
if (typeof tt !== &#39;undefined&#39;) { this._context = tt; }
if (typeof my !== &#39;undefined&#39;) { this._context = my; }
if (typeof qq !== &#39;undefined&#39;) { this._context = qq; }
if (typeof qh !== &#39;undefined&#39;) { this._context = qh; }
return this._context;
}
// 使用示例 用戶(hù)信息獲?。篶tx.getUserInfo()
  當前頁(yè)面的路徑得到多終端兼容處理
  所以這里有一個(gè)獲取當前頁(yè)面路徑的方法,可以平滑各個(gè)平臺小程序之間的差異。
  public get currentPage() {
if (this.appName === &#39;qh&#39;) { // 360小程序兼容
const { path } = $router.history.current;
return path;
}
let pages = getCurrentPages();
if (pages.length > 0) {
return pages[pages.length - 1].route;
} else {
return this._indexPage;
}
}
  異常日志采集
  異常日志分為三種:腳本異常、接口異常、資源異常
  由于小程序的特殊通信機制,接口請求和資源下載都是通過(guò)小程序載體Native進(jìn)行轉發(fā)和執行。因此,要采集
這部分異常,可以攔截wx.request、wx.download等相關(guān)API。
  關(guān)于接口異常信息的上報,主要涉及兩種情況: 在wx.request的成功回調中,如果響應狀態(tài)碼&gt;=400,則表示網(wǎng)絡(luò )請求已發(fā)送,但業(yè)務(wù)響應異常,并報告為異常。; 如果直接去wx.request的fail回調,說(shuō)明網(wǎng)絡(luò )請求異常,會(huì )進(jìn)行異常報告;
  資源異常主要用于攔截downloadFile文件下載API,下載失敗時(shí)上報資源異常日志。
  下面我們重點(diǎn)關(guān)注腳本異常的日志采集
。
  腳本異常_常規思路
  JS 中常見(jiàn)的錯誤有幾種,其中類(lèi)型錯誤、引用錯誤、未捕獲的 Promise 錯誤發(fā)生的頻率更高;其次是越界錯誤和不正確的 URI 錯誤。
  
  前5個(gè)錯誤可以通過(guò)監聽(tīng)小程序App.onError采集
,Promise異??梢酝ㄟ^(guò)App.onUnhandledRejection API采集
,但是這個(gè)API在各個(gè)平臺的支持是不一致的,如下:
  腳本異常_多終端兼容思路
  通過(guò)追蹤異常棧,查看源碼,我們可以看到微信已經(jīng)通過(guò)try...catch把我們業(yè)務(wù)代碼的外層包裹起來(lái)了。當發(fā)生異常時(shí),通過(guò)console.error打印出來(lái),所以在開(kāi)發(fā)過(guò)程中,可以看到發(fā)生異常時(shí),開(kāi)發(fā)者工具控制臺會(huì )打印異常信息。
  因此,我們可以攔截console.error。本次攔截可以采集
到的異常包括:
  實(shí)施過(guò)程中遇到的問(wèn)題
  在具體的實(shí)現過(guò)程中,我們發(fā)現不同平臺的具體實(shí)現是不同的:
  因此,截取console.error后,我們需要對截取的信息進(jìn)行第二次處理,平滑平臺差異。
  具體的解決辦法是通過(guò)正則匹配:
  const ERROR_TYPES_REG = /(((Eval|Reference|Range|Internal|Type|Syntax)Error)|promise)
  判斷當前腳本異常類(lèi)型,格式化信息后分別上報堆棧信息和錯誤內容。最終報告的腳本日志格式如下,包括錯誤類(lèi)型、錯誤內容和堆棧信息。
  "exceptions": [{
"errType": "MiniProgramError",
"content": "app.checkAuthorize1 is not a function",
"message": "TypeError: app.checkAuthorize1 is not a function",
"stacktrace": "MiniProgramErroranonymous> (httpe.p.__callPageLifeTime__ (h"
}]
  性能日志采集
  常規思維
  通過(guò)官方提供的API獲取數據并采集
和報告。微信提供wx.getPerformance() API,獲取小程序啟動(dòng)耗時(shí)、頁(yè)面渲染耗時(shí)、腳本注入耗時(shí);但其他平臺小程序不提供相關(guān)接口。
  多終端兼容思路
  用戶(hù)點(diǎn)擊小程序后,首先會(huì )下載小程序資源包。啟動(dòng)后會(huì )解析app.json文件,注冊App(),然后執行APP的生命周期;然后開(kāi)始加載頁(yè)面,解析頁(yè)面json文件,渲染.wxml文件,執行邏輯層js文件,調用頁(yè)面生命周期。APP和頁(yè)面的生命周期功能是性能日志采集
的重點(diǎn)。
  生命周期鉤子
  等級
  操作說(shuō)明
  主流小程序框架
  360小程序框架
  開(kāi)機
  應用級別
  監控小程序初始化
  支持
  負載
  展出
  應用級別
  監控小程序啟動(dòng)或切換到前臺
  支持
  支持
  負載
  頁(yè)面級別
  監控頁(yè)面加載
  支持
  支持
  展出
  頁(yè)面級別
  監控頁(yè)面顯示
  支持
  支持
  準備就緒
  頁(yè)面級別
  監控頁(yè)面第一次渲染完成
  支持
  支持
  隱藏
  頁(yè)面級別
  監控頁(yè)面隱藏
  支持
  支持
  我們對比了各個(gè)平臺小程序生命周期相關(guān)的API,發(fā)現主流小程序框架的實(shí)現基本一致。360小程序更特別。是基于Vue框架的二次封裝,但大部分API還是一樣的。在360小程序中,小程序初始化后的hook調用的是onLoad,需要特殊處理。
  因此,可以通過(guò)攔截和管理小程序App和Page的相應生命周期來(lái)實(shí)現性能日志采集
。在性能日志采集
方案中,我們主要將其分為應用級性能和頁(yè)面級性能。
  
  應用級性能:我們定義了首屏時(shí)間,即進(jìn)入小程序后第一頁(yè)的渲染完成時(shí)間——SDK初始化時(shí)間。
  由于小程序入口較多,有些是從分享卡進(jìn)入,點(diǎn)擊圖標,搜索。不同的進(jìn)入小程序的方式會(huì )顯示不同的主頁(yè)。因此,我們會(huì )在每個(gè)日志中攜帶當前頁(yè)面入口路徑。
  頁(yè)面級性能主要包括:
  實(shí)現過(guò)程中遇到的問(wèn)題在測試驗證階段,我們發(fā)現使用Taro框架開(kāi)發(fā)轉換的微信小程序無(wú)法采集頁(yè)面級性能數據。經(jīng)過(guò)具體定位,我們發(fā)現在Taro2版本中,小程序頁(yè)面和組件被統一為Component組件。因此,需要攔截Component;在Tar??o3之后,小程序頁(yè)面規范對象暴露在外,可以通過(guò)攔截Page來(lái)實(shí)現。具體實(shí)現邏輯如下:
  private interceptPage = (): void => {
let self = this;
let isTaro = (typeof (process) !== &#39;undefined&#39; && typeof (process.env) !== &#39;undefined&#39; && typeof (process.env.TARO_ENV) !== &#39;undefined&#39;) ? true : false;
const primaryPage = Page;
if (isTaro) {
let primaryComponent = Component;
Component = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
if (typeof obj.methods[name] === &#39;function&#39;) {
const primaryHookFn = obj.methods[name];
obj.methods[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
}
});
primaryComponent && primaryComponent.call(this, obj);
}
}
Page = (obj: any) => {
PAGE_LIFE_CYCLE.forEach(name => {
const primaryHookFn = obj[name];
obj[name] = function (info: any) {
return self.rewritePageLifeCycle(name, this, primaryHookFn, info);
}
});
primaryPage && primaryPage.call(this, obj);
}
}
  行為軌跡采集
  如果只有一些比較隱蔽的錯誤的錯誤堆棧信息,排查起來(lái)會(huì )比較困難。如果有用戶(hù)操作的路徑,排查起來(lái)就容易多了。在行為軌跡日志的采集中,我們會(huì )采集APP函數棧、Page函數棧、HTTP請求棧,并上報最近10條行為軌跡日志,以幫助用戶(hù)在發(fā)生異常時(shí)定位問(wèn)題。
  04
  SDK特性
  多終端、多幀適配
  
  重量輕,支持多種模塊化規格
  SDK由Rollup打包,壓縮體積49KB,支持cmj和es6模塊化規范。
  多種使用形式
  1. 通過(guò) npm 格式使用
  import * as mpMonitor from &#39;mp-monitor&#39;;
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  2. 以單一文件格式使用
  const mpMonitor = require(&#39;./utils/mp-monitor&#39;);
mpMonitor.init({
projectId: &#39;&#39;, // 項目標識
url: &#39;&#39;
});
  支持自定義報告日志
  業(yè)務(wù)方可以使用console.error(\'自定義報告內容\')
  05
  商業(yè)實(shí)踐
  1. SDK現已完成集團北斗前端監控平臺對接,支持微信、百度、今日頭條、支付寶、QQ、360等多端監控;
  2.截至2021.10.15,已接入13個(gè)小程序,覆蓋5條業(yè)務(wù)線(xiàn)
  3. SDK 上報模型與 Sentry 一致。自行搭建Sentry服務(wù)的企業(yè)可以直接使用SDK,配置上報url;
  4. 平臺接入效果展示
  開(kāi)發(fā)者可以通過(guò)首頁(yè)的圖表觀(guān)察小程序當前的運行狀態(tài)
  
  通過(guò)性能圖表,可以考慮當前小程序是否有優(yōu)化空間。如果開(kāi)啟分包加載優(yōu)化,當前首屏性能曲線(xiàn)應該會(huì )明顯降低
  
  觀(guān)察從頁(yè)面 URL 采集
的 pvuv 數據。優(yōu)化業(yè)務(wù)代碼時(shí),可以考慮去掉pv為0的頁(yè)面。
  
  頁(yè)面加載瀑布圖,可以直觀(guān)的看到一個(gè)小程序頁(yè)面的加載過(guò)程
  
  行為軌跡展示可以幫助開(kāi)發(fā)者更快地重現在線(xiàn)問(wèn)題,提高問(wèn)題解決效率
  
  06
  總結
  目前小程序日志采集SDK內部已經(jīng)平滑了多平臺之間的差異,統一了小程序性能數據采集指標。異常時(shí)上報頁(yè)面路徑信息、系統信息、網(wǎng)絡(luò )狀態(tài)、用戶(hù)行為軌跡等相關(guān)信息,幫助開(kāi)發(fā)者更快定位和解決在線(xiàn)問(wèn)題。
  我們會(huì )繼續優(yōu)化細節,完善功能。也歡迎有興趣的同學(xué)一起交流。
  對源碼感興趣的請點(diǎn)贊+轉發(fā)+關(guān)注+私信【小程序日志采集
】。
  歡迎點(diǎn)贊+轉發(fā)+關(guān)注!您的支持是我分享的最大動(dòng)力?。?!

實(shí)時(shí)文章采集(一個(gè)實(shí)用采集技能,采集公眾號內容詳解(組圖))

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2021-12-23 19:13 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(一個(gè)實(shí)用采集技能,采集公眾號內容詳解(組圖))
  數據采集-數據采集-java-php-go-Python-Crawler-Automatic-微信公眾號文章查看點(diǎn)擊量-多個(gè)公眾號-實(shí)時(shí)更新、Go語(yǔ)言社區、Golang程序員網(wǎng)社區,Go語(yǔ)言中文社區優(yōu)采云采集軟件采集公眾號文章詳細操作步驟工具/資料優(yōu)采云采集方法/Step 1 Log在優(yōu)采云軟件優(yōu)采云爬取微信公眾號,打開(kāi)采集規則”規則市場(chǎng)微信朋友圈優(yōu)采云AI,搜索關(guān)鍵詞微信規則,查找并下載。2 將規則導入任務(wù)。
  很好:微信采集微信公眾號采集工具,如何閱讀和點(diǎn)贊采集公眾號?3 同意 · 9 條評論和回答優(yōu)采云·云采集服務(wù)平臺微信公眾號內容采集詳細方法在微信公眾號中瀏覽文章的內容。
  大數據信息材料采集:公眾號吳志宏文章評論爬取優(yōu)采云采集器規則大數據信息材料采集公眾號歷史文章 &lt; @采集公眾號評論抓取微信公眾號歷史文章導出并抓取微信公眾號所有文章。官方賬號。摘要:相信每個(gè)運營(yíng)微信公眾號的人都在考慮這個(gè)問(wèn)題。今天優(yōu)采云給大家分享一個(gè)實(shí)用的采集技能,采集公眾號。公眾號內容實(shí)時(shí)監控。如何提高微信文章的打開(kāi)率?文章最火的款式有哪些。
  
  采集 字段:公眾號、文章 標題、內容、閱讀量、點(diǎn)贊數、推送時(shí)間,這里要說(shuō)明一下,優(yōu)采云目前只有采集公開(kāi)網(wǎng)上的數據,微信公眾號采集需要從網(wǎng)頁(yè)采集開(kāi)始。搜索“搜狗微信”并通過(guò)。我專(zhuān)注于優(yōu)采云 第三方采集 工具。由于優(yōu)采云是收費軟件,您只能先申請體驗賬號,體驗采集的基本功能。,不過(guò)個(gè)人覺(jué)得采用這個(gè)工具是因為它與搜狗的接口合作。
  微信優(yōu)采云ai
  前兩年還好,現在采集不行,但是現在用微信公眾號平臺登錄的人不多。目前位置在小紅書(shū)、微博大數據信息資料采集:信息公眾號元芳青木文章評論爬取優(yōu)采云采集大數據信息資料采集公眾號歷史文章采集公眾號評論爬取微信公眾號歷史文章導出抓取所有微信公眾號文章。公眾。
  優(yōu)采云如何采集數據
  還有問(wèn)優(yōu)采云怎么發(fā)朋友圈,怎么抓微信公眾號文章?解決問(wèn)題后,分享優(yōu)采云、優(yōu)采云等具有公眾號功能的第三方工具。您可以自行下載使用。具體的就不多說(shuō)了。第四:基于微信公眾號平臺的方法;這個(gè)方法其實(shí)是最難的,因為中間需要。 查看全部

  實(shí)時(shí)文章采集(一個(gè)實(shí)用采集技能,采集公眾號內容詳解(組圖))
  數據采集-數據采集-java-php-go-Python-Crawler-Automatic-微信公眾號文章查看點(diǎn)擊量-多個(gè)公眾號-實(shí)時(shí)更新、Go語(yǔ)言社區、Golang程序員網(wǎng)社區,Go語(yǔ)言中文社區優(yōu)采云采集軟件采集公眾號文章詳細操作步驟工具/資料優(yōu)采云采集方法/Step 1 Log在優(yōu)采云軟件優(yōu)采云爬取微信公眾號,打開(kāi)采集規則”規則市場(chǎng)微信朋友圈優(yōu)采云AI,搜索關(guān)鍵詞微信規則,查找并下載。2 將規則導入任務(wù)。
  很好:微信采集微信公眾號采集工具,如何閱讀和點(diǎn)贊采集公眾號?3 同意 · 9 條評論和回答優(yōu)采云·云采集服務(wù)平臺微信公眾號內容采集詳細方法在微信公眾號中瀏覽文章的內容。
  大數據信息材料采集:公眾號吳志宏文章評論爬取優(yōu)采云采集器規則大數據信息材料采集公眾號歷史文章 &lt; @采集公眾號評論抓取微信公眾號歷史文章導出并抓取微信公眾號所有文章。官方賬號。摘要:相信每個(gè)運營(yíng)微信公眾號的人都在考慮這個(gè)問(wèn)題。今天優(yōu)采云給大家分享一個(gè)實(shí)用的采集技能,采集公眾號。公眾號內容實(shí)時(shí)監控。如何提高微信文章的打開(kāi)率?文章最火的款式有哪些。
  
  采集 字段:公眾號、文章 標題、內容、閱讀量、點(diǎn)贊數、推送時(shí)間,這里要說(shuō)明一下,優(yōu)采云目前只有采集公開(kāi)網(wǎng)上的數據,微信公眾號采集需要從網(wǎng)頁(yè)采集開(kāi)始。搜索“搜狗微信”并通過(guò)。我專(zhuān)注于優(yōu)采云 第三方采集 工具。由于優(yōu)采云是收費軟件,您只能先申請體驗賬號,體驗采集的基本功能。,不過(guò)個(gè)人覺(jué)得采用這個(gè)工具是因為它與搜狗的接口合作。
  微信優(yōu)采云ai
  前兩年還好,現在采集不行,但是現在用微信公眾號平臺登錄的人不多。目前位置在小紅書(shū)、微博大數據信息資料采集:信息公眾號元芳青木文章評論爬取優(yōu)采云采集大數據信息資料采集公眾號歷史文章采集公眾號評論爬取微信公眾號歷史文章導出抓取所有微信公眾號文章。公眾。
  優(yōu)采云如何采集數據
  還有問(wèn)優(yōu)采云怎么發(fā)朋友圈,怎么抓微信公眾號文章?解決問(wèn)題后,分享優(yōu)采云、優(yōu)采云等具有公眾號功能的第三方工具。您可以自行下載使用。具體的就不多說(shuō)了。第四:基于微信公眾號平臺的方法;這個(gè)方法其實(shí)是最難的,因為中間需要。

實(shí)時(shí)文章采集( 前面Flume和Kafka的實(shí)時(shí)數據源,怎么產(chǎn)生呢??)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2021-12-15 10:10 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(
前面Flume和Kafka的實(shí)時(shí)數據源,怎么產(chǎn)生呢??)
  Flume和Kafka完成實(shí)時(shí)數據采集
  寫(xiě)在前面
  Flume和Kafka通常在生產(chǎn)環(huán)境中結合使用。能夠結合使用兩者來(lái)采集實(shí)時(shí)日志信息非常重要。如果是這樣,你不知道flume和kafka,你可以先查看我寫(xiě)的關(guān)于這兩部分的知識。再學(xué)習一下,這部分操作也是可以的。html
  采集 的實(shí)時(shí)數據面臨一個(gè)問(wèn)題。我們如何生成我們的實(shí)時(shí)數據源?因為我們可能想直接獲取實(shí)時(shí)數據流不是那么方便。在文章之前寫(xiě)過(guò)一篇關(guān)于實(shí)時(shí)數據流的python生成器的文章,文章地址:
  大家可以先看看,如何生成實(shí)時(shí)數據...python
  主意?? 如何開(kāi)始?? nginx
  分析:我們可以從數據的流向開(kāi)始。數據一開(kāi)始就在網(wǎng)絡(luò )服務(wù)器上。我們的訪(fǎng)問(wèn)日志是nginx服務(wù)器實(shí)時(shí)采集到指定文件的。我們從這個(gè)文件中采集日志數據,即:webserver=&gt;flume=&gt;kafkaweb
  網(wǎng)絡(luò )服務(wù)器日志存儲文件位置
  這個(gè)文件的位置通常是我們自己設置的shell
  我們的網(wǎng)絡(luò )日志存儲的目錄是:
  apache下/home/hadoop/data/project/logs/access.log
  [hadoop@hadoop000 logs]$ pwd
/home/hadoop/data/project/logs
[hadoop@hadoop000 logs]$ ls
access.log
[hadoop@hadoop000 logs]$
  氟蟲(chóng)腈
  做flume其實(shí)就是寫(xiě)一個(gè)conf文件,這樣就面臨選擇的問(wèn)題
  來(lái)源選擇?頻道選擇?水槽選擇?紅寶石
  這里我們選擇exec source memory channel kafka sink server
  怎么寫(xiě)?
  按照前面說(shuō)的1234步app
  從官方網(wǎng)站上,我們可以找到我們的選擇應該怎么寫(xiě):
  1) 配置源
  執行源
  # Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
  2) 配置通道
  記憶通道
  a1.channels.c1.type = memory
  3) 配置接收器
  卡夫卡水槽
  水槽1.6 版本可以參考
  a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
  4) 將以上三個(gè)組件串在一起
  a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  **讓我們新建一個(gè)名為 test3.conf 的文件
  粘貼我們分析的代碼:**
  [hadoop@hadoop000 conf]$ vim test3.conf
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
a1.channels.c1.type = memory
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  這里先不展開(kāi)了,因為涉及到kafka,首先要部署kafka,
  Kafka部署
  Kafka是如何部署的??
  按照官網(wǎng)的說(shuō)法,我們先啟動(dòng)一個(gè)zookeeper進(jìn)程,然后就可以啟動(dòng)kafka服務(wù)器了
  第一步:?jiǎn)?dòng)zookeeper
  [hadoop@hadoop000 ~]$
[hadoop@hadoop000 ~]$ jps
29147 Jps
[hadoop@hadoop000 ~]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop000 ~]$ jps
29172 QuorumPeerMain
29189 Jps
[hadoop@hadoop000 ~]$
  第二步:?jiǎn)?dòng)服務(wù)器
  [hadoop@hadoop000 ~]$ kafka-server-start.sh $KAFKA_HOME/config/server.properties
#外開(kāi)一個(gè)窗口,查看jps
[hadoop@hadoop000 ~]$ jps
29330 Jps
29172 QuorumPeerMain
29229 Kafka
[hadoop@hadoop000 ~]$
  如果有,這部分不是很熟悉,可以參考
  第 3 步:創(chuàng )建主題
  [hadoop@hadoop000 ~]$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic flume_kafka
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic "flume_kafka".
[hadoop@hadoop000 ~]$
  第四步:?jiǎn)?dòng)之前的代理
  [hadoop@hadoop000 conf]$ flume-ng agent --name a1 --conf . --conf-file ./test3.conf -Dflume.root.logger=INFO,console
  第 5 步:?jiǎn)?dòng)消費者
  kafka-console-consumer.sh --zookeeper hadoop000:2181 –topic flume-kafka
  執行完上面的第五步,就會(huì )收到刷新屏幕的結果了,哈哈哈??!
  
  上面的消費者會(huì )不斷刷新屏幕,還是蠻有意思的?。?!
  這里的消費者就是把接收到的數據放到屏幕上
  后面會(huì )介紹使用SparkStreaming為消費者實(shí)時(shí)接收數據,并對接收到的數據進(jìn)行簡(jiǎn)單的數據清洗,從隨機生成的日志中過(guò)濾出我們需要的數據…… 查看全部

  實(shí)時(shí)文章采集(
前面Flume和Kafka的實(shí)時(shí)數據源,怎么產(chǎn)生呢??)
  Flume和Kafka完成實(shí)時(shí)數據采集
  寫(xiě)在前面
  Flume和Kafka通常在生產(chǎn)環(huán)境中結合使用。能夠結合使用兩者來(lái)采集實(shí)時(shí)日志信息非常重要。如果是這樣,你不知道flume和kafka,你可以先查看我寫(xiě)的關(guān)于這兩部分的知識。再學(xué)習一下,這部分操作也是可以的。html
  采集 的實(shí)時(shí)數據面臨一個(gè)問(wèn)題。我們如何生成我們的實(shí)時(shí)數據源?因為我們可能想直接獲取實(shí)時(shí)數據流不是那么方便。在文章之前寫(xiě)過(guò)一篇關(guān)于實(shí)時(shí)數據流的python生成器的文章,文章地址:
  大家可以先看看,如何生成實(shí)時(shí)數據...python
  主意?? 如何開(kāi)始?? nginx
  分析:我們可以從數據的流向開(kāi)始。數據一開(kāi)始就在網(wǎng)絡(luò )服務(wù)器上。我們的訪(fǎng)問(wèn)日志是nginx服務(wù)器實(shí)時(shí)采集到指定文件的。我們從這個(gè)文件中采集日志數據,即:webserver=&gt;flume=&gt;kafkaweb
  網(wǎng)絡(luò )服務(wù)器日志存儲文件位置
  這個(gè)文件的位置通常是我們自己設置的shell
  我們的網(wǎng)絡(luò )日志存儲的目錄是:
  apache下/home/hadoop/data/project/logs/access.log
  [hadoop@hadoop000 logs]$ pwd
/home/hadoop/data/project/logs
[hadoop@hadoop000 logs]$ ls
access.log
[hadoop@hadoop000 logs]$
  氟蟲(chóng)腈
  做flume其實(shí)就是寫(xiě)一個(gè)conf文件,這樣就面臨選擇的問(wèn)題
  來(lái)源選擇?頻道選擇?水槽選擇?紅寶石
  這里我們選擇exec source memory channel kafka sink server
  怎么寫(xiě)?
  按照前面說(shuō)的1234步app
  從官方網(wǎng)站上,我們可以找到我們的選擇應該怎么寫(xiě):
  1) 配置源
  執行源
  # Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
  2) 配置通道
  記憶通道
  a1.channels.c1.type = memory
  3) 配置接收器
  卡夫卡水槽
  水槽1.6 版本可以參考
  a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
  4) 將以上三個(gè)組件串在一起
  a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  **讓我們新建一個(gè)名為 test3.conf 的文件
  粘貼我們分析的代碼:**
  [hadoop@hadoop000 conf]$ vim test3.conf
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/data/project/logs/access.log
a1.sources.r1.shell = /bin/sh -c
a1.channels.c1.type = memory
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList = hadoop000:9092
a1.sinks.k1.topic = flume_kafka
a1.sinks.k1.batchSize = 5
a1.sinks.k1.requiredAcks =1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
  這里先不展開(kāi)了,因為涉及到kafka,首先要部署kafka,
  Kafka部署
  Kafka是如何部署的??
  按照官網(wǎng)的說(shuō)法,我們先啟動(dòng)一個(gè)zookeeper進(jìn)程,然后就可以啟動(dòng)kafka服務(wù)器了
  第一步:?jiǎn)?dòng)zookeeper
  [hadoop@hadoop000 ~]$
[hadoop@hadoop000 ~]$ jps
29147 Jps
[hadoop@hadoop000 ~]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop000 ~]$ jps
29172 QuorumPeerMain
29189 Jps
[hadoop@hadoop000 ~]$
  第二步:?jiǎn)?dòng)服務(wù)器
  [hadoop@hadoop000 ~]$ kafka-server-start.sh $KAFKA_HOME/config/server.properties
#外開(kāi)一個(gè)窗口,查看jps
[hadoop@hadoop000 ~]$ jps
29330 Jps
29172 QuorumPeerMain
29229 Kafka
[hadoop@hadoop000 ~]$
  如果有,這部分不是很熟悉,可以參考
  第 3 步:創(chuàng )建主題
  [hadoop@hadoop000 ~]$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic flume_kafka
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic "flume_kafka".
[hadoop@hadoop000 ~]$
  第四步:?jiǎn)?dòng)之前的代理
  [hadoop@hadoop000 conf]$ flume-ng agent --name a1 --conf . --conf-file ./test3.conf -Dflume.root.logger=INFO,console
  第 5 步:?jiǎn)?dòng)消費者
  kafka-console-consumer.sh --zookeeper hadoop000:2181 –topic flume-kafka
  執行完上面的第五步,就會(huì )收到刷新屏幕的結果了,哈哈哈??!
  
  上面的消費者會(huì )不斷刷新屏幕,還是蠻有意思的?。?!
  這里的消費者就是把接收到的數據放到屏幕上
  后面會(huì )介紹使用SparkStreaming為消費者實(shí)時(shí)接收數據,并對接收到的數據進(jìn)行簡(jiǎn)單的數據清洗,從隨機生成的日志中過(guò)濾出我們需要的數據……

實(shí)時(shí)文章采集(Javaflume采集數據輸送到的方案)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 225 次瀏覽 ? 2021-12-12 19:28 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(Javaflume采集數據輸送到的方案)
  注:本文不僅提供了兩個(gè)選項,還詳細記錄了一些相關(guān)信息。 html
  方案一
  這個(gè)方案的核心是flume采集數據之后,根據hive表的結構,將采集數據發(fā)送到對應的地址,達到實(shí)時(shí)數據的目的貯存。這種實(shí)時(shí)實(shí)際上是一種準實(shí)時(shí)。爪哇
  假設hadoop集群已經(jīng)正常啟動(dòng),hive也已經(jīng)正常啟動(dòng),hive的文件地址為/hive/warehouse,然后hive中有如下表創(chuàng )建語(yǔ)句創(chuàng )建的表apache
  create table flume_test(uuid string);
  可以推斷flume_test表的地址在/hive/warehouse/flume_test,下面介紹flume:bash
  Flume 安裝步驟應用
  #下載
cd /opt
mkdir flume
wget http://archive.apache.org/dist ... ar.gz
tar xvzf apache-flume-1.6.0-bin.tar.gz
cd apache-flume-1.6.0-bin/conf
cp flume-env.sh.template flume-env.sh
  打開(kāi)flume-env文件,添加java變量dom
  export JAVA_HOME=/usr/java/jdk1.8.0_111
  然后添加環(huán)境變量,為了一次搞定,分別在profile和bashrc末尾添加eclipse
  export FLUME_HOME=/opt/flume/apache-flume-1.6.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
  然后是 maven
  source /etc/profile
  既然flume安裝好了,下面進(jìn)行配置,切換到conf文件夾,將flume-conf.properties.template復制到agent.conf,然后編輯ide
  #定義活躍列表
agent.sources=avroSrc
agent.channels=memChannel
agent.sinks=hdfsSink
#定義source
agent.sources.avroSrc.type=avro
agent.sources.avroSrc.channels=memChannel
agent.sources.avroSrc.bind=0.0.0.0
agent.sources.avroSrc.port=4353
agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
#定義channel
agent.channels.memChannel.type=memory
agent.channels.memChannel.capacity = 1000
agent.channels.memChannel.transactionCapacity = 100
#定義sink
agent.sinks.hdfsSink.type=hdfs
agent.sinks.hdfsSink.channel=memChannel
#agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/flume/test/%{topic}/%Y%m%d%H
agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/hive/warehouse/flume_test
agent.sinks.hdfsSink.hdfs.filePrefix=stu-flume
agent.sinks.hdfsSink.hdfs.inUsePrefix=inuse-stu-flume
agent.sinks.hdfsSink.hdfs.inUseSuffix=.temp
agent.sinks.hdfsSink.hdfs.rollInterval=0
agent.sinks.hdfsSink.hdfs.rollSize=10240000
agent.sinks.hdfsSink.hdfs.rollCount=0
agent.sinks.hdfsSink.hdfs.idleTimeout=0
agent.sinks.hdfsSink.hdfs.batchSize=100
agent.sinks.hdfsSink.hdfs.minBlockReplicas=1
# agent.sinks.hdfsSink.hdfs.writeFormat = Text
agent.sinks.hdfsSink.hdfs.fileType = DataStream
  各個(gè)項目的具體配置請參考以下博客。需要關(guān)注的四個(gè)屬性分別是rollInterval、rollSize、rollCount、idleTimeout。如果發(fā)現配置不可用,檢查屬性minBlockReplicas是否配置,值為1,原因如下:oop
  配置后即可啟動(dòng),啟動(dòng)命令
  ./flume-ng agent -f ../conf/agent.conf -n agent -c conf -Dflume.monitoring.type=http \-Dflume.monitoring.port=5653 -Dflume.root.logger=DEBUG,console
  注意:-n 是代理的名稱(chēng),需要對應配置文件的第一個(gè)值。這個(gè)啟動(dòng)命令也開(kāi)啟了監控,監控地址:5563/metrics; -f 指的是配置文件的路徑和名稱(chēng)。修改flume的conf后,不需要重啟。默認情況下,它每 30 秒刷新一次并自動(dòng)加載最新配置。
  flume安裝啟動(dòng)后,編寫(xiě)測試程序。打開(kāi)eclipse并創(chuàng )建一個(gè)maven項目
  
4.0.0
scc
stu-flume
0.0.1-SNAPSHOT
war
stu-flume


log4j
log4j
1.2.9


org.apache.flume.flume-ng-clients
flume-ng-log4jappender
1.6.0


  測試 servlet
  public class GenerLogServlet extends HttpServlet {
private static final Logger LOGGER = Logger.getLogger(GenerLogServlet.class);
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
for (;;) {
LOGGER.info(UUID.randomUUID().toString());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
  log4j.properties
  #log4j settings
#log4j.rootLogger=debug, CONSOLE
log4j.logger.scc.stu_flume.GenerLogServlet=debug,GenerLogServlet
#log4j.rootLogger=INFO
log4j.appender.GenerLogServlet=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.GenerLogServlet.Hostname=10.5.3.100
log4j.appender.GenerLogServlet.Port=4353
log4j.appender.GenerLogServletUnsafeMode=false
  啟動(dòng)項目,訪(fǎng)問(wèn):8080/log開(kāi)始生產(chǎn)數據。需要注意的是,如果flume配置是根據時(shí)間戳對文件進(jìn)行分組(這種情況可以根據時(shí)間匹配hive分區),那么agent.conf中的source必須配置
  agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
  否則flume sink會(huì )報錯找不到timestamp。因為源碼org.apache.flume.clients.log4jappender.Log4jAvroHeaders中定義的timestamp的key是flume.client.log4j.timestamp而不是timestamp,所以需要手動(dòng)添加一個(gè)timestamp,如果要求這個(gè)timestamp是時(shí)間數據生產(chǎn),可以修改源碼或者手動(dòng)配置源碼攔截器。
  Flume 有一種非常靈活的使用方式??勺远xsource、sink、interceptor、channel selector等,適應采集、數據緩沖等大多數場(chǎng)景。
  觀(guān)察hadoop目錄,發(fā)現flume已經(jīng)按照配置把數據移動(dòng)到了對應的hive表目錄下,如下圖:
  
  打開(kāi)hive客戶(hù)端,使用數據查詢(xún)命令,發(fā)現可以查詢(xún)到數據!并且可以按照hive表的數據規則寫(xiě)入hive的分區表和桶表flume,然后實(shí)時(shí)插入數據。至此,程序結束。
  這個(gè)程序的缺點(diǎn):
  因為flume在寫(xiě)文件的時(shí)候獨占了正在寫(xiě)的文件資源,所以hive無(wú)法讀取正在寫(xiě)的文件的內容,也就是說(shuō),如果每5分鐘生成一個(gè)文件,那么正在寫(xiě)的文件的內容就不會(huì )被hive讀取,這意味著(zhù)hive最多有5分鐘的延遲。而且如果減少時(shí)間,延遲會(huì )減少,但即使設置為30分鐘或1小時(shí),在flume流量不大的情況下也會(huì )產(chǎn)生很多零散的小文件。這與hive的特長(cháng)相悖,hive擅長(cháng)處理大文件,對于分散的小文件,hive性能會(huì )下降很多。
  方案二
  對比方案一,測試程序和source不變,sink改為hbase-sink,數據實(shí)時(shí)插入hbase,然后在hive中創(chuàng )建hbase映射表,hive從hbase讀取數據到實(shí)現實(shí)時(shí)插入的效果。由于字數限制,方案二記錄在以下博客鏈接中: 查看全部

  實(shí)時(shí)文章采集(Javaflume采集數據輸送到的方案)
  注:本文不僅提供了兩個(gè)選項,還詳細記錄了一些相關(guān)信息。 html
  方案一
  這個(gè)方案的核心是flume采集數據之后,根據hive表的結構,將采集數據發(fā)送到對應的地址,達到實(shí)時(shí)數據的目的貯存。這種實(shí)時(shí)實(shí)際上是一種準實(shí)時(shí)。爪哇
  假設hadoop集群已經(jīng)正常啟動(dòng),hive也已經(jīng)正常啟動(dòng),hive的文件地址為/hive/warehouse,然后hive中有如下表創(chuàng )建語(yǔ)句創(chuàng )建的表apache
  create table flume_test(uuid string);
  可以推斷flume_test表的地址在/hive/warehouse/flume_test,下面介紹flume:bash
  Flume 安裝步驟應用
  #下載
cd /opt
mkdir flume
wget http://archive.apache.org/dist ... ar.gz
tar xvzf apache-flume-1.6.0-bin.tar.gz
cd apache-flume-1.6.0-bin/conf
cp flume-env.sh.template flume-env.sh
  打開(kāi)flume-env文件,添加java變量dom
  export JAVA_HOME=/usr/java/jdk1.8.0_111
  然后添加環(huán)境變量,為了一次搞定,分別在profile和bashrc末尾添加eclipse
  export FLUME_HOME=/opt/flume/apache-flume-1.6.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
  然后是 maven
  source /etc/profile
  既然flume安裝好了,下面進(jìn)行配置,切換到conf文件夾,將flume-conf.properties.template復制到agent.conf,然后編輯ide
  #定義活躍列表
agent.sources=avroSrc
agent.channels=memChannel
agent.sinks=hdfsSink
#定義source
agent.sources.avroSrc.type=avro
agent.sources.avroSrc.channels=memChannel
agent.sources.avroSrc.bind=0.0.0.0
agent.sources.avroSrc.port=4353
agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
#定義channel
agent.channels.memChannel.type=memory
agent.channels.memChannel.capacity = 1000
agent.channels.memChannel.transactionCapacity = 100
#定義sink
agent.sinks.hdfsSink.type=hdfs
agent.sinks.hdfsSink.channel=memChannel
#agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/flume/test/%{topic}/%Y%m%d%H
agent.sinks.hdfsSink.hdfs.path=hdfs://hadoop-n:9000/hive/warehouse/flume_test
agent.sinks.hdfsSink.hdfs.filePrefix=stu-flume
agent.sinks.hdfsSink.hdfs.inUsePrefix=inuse-stu-flume
agent.sinks.hdfsSink.hdfs.inUseSuffix=.temp
agent.sinks.hdfsSink.hdfs.rollInterval=0
agent.sinks.hdfsSink.hdfs.rollSize=10240000
agent.sinks.hdfsSink.hdfs.rollCount=0
agent.sinks.hdfsSink.hdfs.idleTimeout=0
agent.sinks.hdfsSink.hdfs.batchSize=100
agent.sinks.hdfsSink.hdfs.minBlockReplicas=1
# agent.sinks.hdfsSink.hdfs.writeFormat = Text
agent.sinks.hdfsSink.hdfs.fileType = DataStream
  各個(gè)項目的具體配置請參考以下博客。需要關(guān)注的四個(gè)屬性分別是rollInterval、rollSize、rollCount、idleTimeout。如果發(fā)現配置不可用,檢查屬性minBlockReplicas是否配置,值為1,原因如下:oop
  配置后即可啟動(dòng),啟動(dòng)命令
  ./flume-ng agent -f ../conf/agent.conf -n agent -c conf -Dflume.monitoring.type=http \-Dflume.monitoring.port=5653 -Dflume.root.logger=DEBUG,console
  注意:-n 是代理的名稱(chēng),需要對應配置文件的第一個(gè)值。這個(gè)啟動(dòng)命令也開(kāi)啟了監控,監控地址:5563/metrics; -f 指的是配置文件的路徑和名稱(chēng)。修改flume的conf后,不需要重啟。默認情況下,它每 30 秒刷新一次并自動(dòng)加載最新配置。
  flume安裝啟動(dòng)后,編寫(xiě)測試程序。打開(kāi)eclipse并創(chuàng )建一個(gè)maven項目
  
4.0.0
scc
stu-flume
0.0.1-SNAPSHOT
war
stu-flume


log4j
log4j
1.2.9


org.apache.flume.flume-ng-clients
flume-ng-log4jappender
1.6.0


  測試 servlet
  public class GenerLogServlet extends HttpServlet {
private static final Logger LOGGER = Logger.getLogger(GenerLogServlet.class);
private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
for (;;) {
LOGGER.info(UUID.randomUUID().toString());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
  log4j.properties
  #log4j settings
#log4j.rootLogger=debug, CONSOLE
log4j.logger.scc.stu_flume.GenerLogServlet=debug,GenerLogServlet
#log4j.rootLogger=INFO
log4j.appender.GenerLogServlet=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.GenerLogServlet.Hostname=10.5.3.100
log4j.appender.GenerLogServlet.Port=4353
log4j.appender.GenerLogServletUnsafeMode=false
  啟動(dòng)項目,訪(fǎng)問(wèn):8080/log開(kāi)始生產(chǎn)數據。需要注意的是,如果flume配置是根據時(shí)間戳對文件進(jìn)行分組(這種情況可以根據時(shí)間匹配hive分區),那么agent.conf中的source必須配置
  agent.sources.avroSrc.interceptors=timestampinterceptor
agent.sources.avroSrc.interceptors.timestampinterceptor.type=timestamp
agent.sources.avroSrc.interceptors.timestampinterceptor.preserveExisting=false
  否則flume sink會(huì )報錯找不到timestamp。因為源碼org.apache.flume.clients.log4jappender.Log4jAvroHeaders中定義的timestamp的key是flume.client.log4j.timestamp而不是timestamp,所以需要手動(dòng)添加一個(gè)timestamp,如果要求這個(gè)timestamp是時(shí)間數據生產(chǎn),可以修改源碼或者手動(dòng)配置源碼攔截器。
  Flume 有一種非常靈活的使用方式??勺远xsource、sink、interceptor、channel selector等,適應采集、數據緩沖等大多數場(chǎng)景。
  觀(guān)察hadoop目錄,發(fā)現flume已經(jīng)按照配置把數據移動(dòng)到了對應的hive表目錄下,如下圖:
  
  打開(kāi)hive客戶(hù)端,使用數據查詢(xún)命令,發(fā)現可以查詢(xún)到數據!并且可以按照hive表的數據規則寫(xiě)入hive的分區表和桶表flume,然后實(shí)時(shí)插入數據。至此,程序結束。
  這個(gè)程序的缺點(diǎn):
  因為flume在寫(xiě)文件的時(shí)候獨占了正在寫(xiě)的文件資源,所以hive無(wú)法讀取正在寫(xiě)的文件的內容,也就是說(shuō),如果每5分鐘生成一個(gè)文件,那么正在寫(xiě)的文件的內容就不會(huì )被hive讀取,這意味著(zhù)hive最多有5分鐘的延遲。而且如果減少時(shí)間,延遲會(huì )減少,但即使設置為30分鐘或1小時(shí),在flume流量不大的情況下也會(huì )產(chǎn)生很多零散的小文件。這與hive的特長(cháng)相悖,hive擅長(cháng)處理大文件,對于分散的小文件,hive性能會(huì )下降很多。
  方案二
  對比方案一,測試程序和source不變,sink改為hbase-sink,數據實(shí)時(shí)插入hbase,然后在hive中創(chuàng )建hbase映射表,hive從hbase讀取數據到實(shí)現實(shí)時(shí)插入的效果。由于字數限制,方案二記錄在以下博客鏈接中:

實(shí)時(shí)文章采集(實(shí)時(shí)采集并分析Nginx日志,自動(dòng)化封禁封禁風(fēng)險IP方案 )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 207 次瀏覽 ? 2021-12-10 08:21 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(實(shí)時(shí)采集并分析Nginx日志,自動(dòng)化封禁封禁風(fēng)險IP方案
)
  實(shí)時(shí)采集并分析Nginx日志,自動(dòng)攔截有風(fēng)險的IP程序php
  文章地址:html
  前言
  本文分享了自動(dòng)化采集、分析Nginx日志、實(shí)時(shí)封禁風(fēng)險IP的解決方案和實(shí)踐。節點(diǎn)
  閱讀這個(gè)文章你可以得到:nginx
  閱讀這篇文章你需要:git
  背景
  分析nginx訪(fǎng)問(wèn)日志時(shí),看到大量無(wú)效的404請求,URL都是隨機的敏感詞。這些請求最近變得更加頻繁。手動(dòng)批量禁止部分IP后,新的IP很快就會(huì )進(jìn)來(lái)。 web
  于是萌生了自動(dòng)分析Nginx日志后實(shí)時(shí)封禁IP的想法。
  
  需求序號需求備注
  1
  Nginx 日志采集
  解決方案很多,我選擇了最適合我服務(wù)器的方案:filebeat+redis
  2
  實(shí)時(shí)日志分析
  實(shí)時(shí)消費redis日志,分析需要的數據進(jìn)行分析
  3
  知識產(chǎn)權風(fēng)險評估
  IP風(fēng)險評估,多維度:訪(fǎng)問(wèn)次數、IP歸屬、使用等。
  4
  實(shí)時(shí)禁止
  阻止風(fēng)險 IP 不同的時(shí)間長(cháng)度
  分析
  簡(jiǎn)單從日志中總結了幾個(gè)特點(diǎn):sql
  序列號功能說(shuō)明備注
  1
  經(jīng)常來(lái)訪(fǎng)
  每秒數次甚至數十次
  正常的流量行為也有突發(fā)流量,但不會(huì )持續太久
  2
  連續請求
  持久的
  和上面一樣
  3
  多數 404
  大部分請求的URL可能不存在,還有admin、login、phpMyAdmin、backup等敏感詞。
  這種情況下正常的交通行為并不多
  4
  IP異常
  在A(yíng)SN之后,我們可以看到一些線(xiàn)索,通常這種請求的IP不是普通??的我的用戶(hù)。
  查詢(xún)其用途通常是COM(商業(yè))、DCH(數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等。
  備注:這里分析的IP是通過(guò)ip2location的免費版數據庫,后面會(huì )詳細介紹。
  項目日志采集
  來(lái)源:作者網(wǎng)站由docker部署,Nginx為唯一入口,記錄所有訪(fǎng)問(wèn)日志。
  采集:由于資源有限,我選擇了一個(gè)輕量級的日志工具Filebeat,它采集Nginx的日志并寫(xiě)入Redis。
  風(fēng)險評估
  Monitor服務(wù)根據URL、IP、歷史分數等進(jìn)行風(fēng)險評估,計算出最終的風(fēng)險系數。
  知識產(chǎn)權禁令
  Monitor發(fā)現危險IP(風(fēng)險系數超過(guò)閾值)后,調用Actuator對該IP進(jìn)行封堵,根據風(fēng)險系數計算封禁時(shí)長(cháng)。
  實(shí)現日志采集
  Filebeat 的使用非常簡(jiǎn)單。筆者通過(guò)swarm進(jìn)行部署,部署文件如下(為防止代碼過(guò)長(cháng),其余服務(wù)在此省略):
  version: '3.5'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:7.4.2
deploy:
resources:
limits:
memory: 64M
restart_policy:
condition: on-failure
volumes:
- $PWD/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- $PWD/filebeat/data:/usr/share/filebeat/data:rw
- $PWD/nginx/logs:/logs/nginx:ro
environment:
TZ: Asia/Shanghai
depends_on:
- nginx
  filebeat.yml 文件內容如下:
  filebeat.inputs:
- type: log
enabled: true
paths:
- /logs/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.redis:
hosts: ["redis-server"]
password: "{your redis password}"
key: "filebeat:nginx:accesslog"
db: 0
timeout: 5
  部署成功后,查看redis數據:
  
  風(fēng)險評估
  Monitor 服務(wù)是用 Java 編寫(xiě)的,使用 docker 部署,并通過(guò) http 與 Actuator 服務(wù)交互。
  風(fēng)險評估需要整合多個(gè)維度:
  序列號維度策略
  1
  知識產(chǎn)權歸屬
  中文網(wǎng)站的用戶(hù)群通常屬于中國。如果IP屬于國外,就需要警惕了。
  2
  用
  IP獲得使用后,DCH(??數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等,增加風(fēng)險評分。
  3
  訪(fǎng)問(wèn)資源
  訪(fǎng)問(wèn)資源不存在且路徑收錄敏感詞,如admin、login、phpMyAdmin、backup等,提高風(fēng)險評分。
  4
  訪(fǎng)問(wèn)的頻率和持續時(shí)間
  頻繁和持續的請求,考慮提高分數。
  5
  歷史成績(jì)
  歷史分數被整合到當前分數中。
  獲取 IP 歸屬
  獲取IP歸屬地相對容易。許多數據服務(wù)網(wǎng)站提供免費的包,例如IpInfo。還有免費版本的 IP 數據庫可以下載,例如 ip2location。
  作者使用了免費版的ip2location數據庫:
  
  ip_from 和 ip_to 是IP段的開(kāi)始和結束,存儲格式為十進(jìn)制。在 MySQL 中,可以通過(guò) inet_aton('your ip') 函數將 IP 轉換為十進(jìn)制。例如:
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_db11 WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocountry_codecountry_nameregion_namecity_namelatitudelongitudezip_codetime_zone
  2899902464
  2899910655
  我們
  美國
  加利福尼亞州
  山頂風(fēng)光
  37.405992
  -122.07852
  94043
  -07:00
  獲取AS、ASN和用法
  網(wǎng)站提供的大部分免費服務(wù)都無(wú)法查詢(xún)ASN或者沒(méi)有目的。ASN數據也有免費的數據庫,但還是沒(méi)有目的和類(lèi)型等,這時(shí)候作者通過(guò)其他方式救國。
  ip2location 提供免費版本的 IP2Location?LITE IP-ASN 和 IP2Proxy?LITE 數據庫。
  IP2Location?LITE IP-ASN:該數據庫提供了對肯定自治系統和編號 (ASN) 的參考。
  IP2Proxy?LITE:數據庫收錄用作開(kāi)放代理的 IP 地址。該數據庫包括所有公共 IPv4 和 IPv6 地址的代理類(lèi)型、國家、地區、城市、ISP、域、使用類(lèi)型、ASN 和最新記錄。
  IP2Location?LITE IP-ASN 無(wú)法找出所使用的 IP 類(lèi)型。如果數據較少,IP2Proxy?LITE 不一定收錄指定的 IP。但是可以結合這兩個(gè)庫來(lái)粗略猜測IP的用途:
  首先,在 IP2Proxy?LITE 中查找 IP 的 ASN。
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_asn WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocidrasnas
  2899904000
  2899904255
  172.217.6.0/24
  15169
  谷歌有限責任公司
  結合ASN和IP,查詢(xún)與指定IP最近的同一個(gè)ASN的兩條記錄:
<p>set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2proxy_px8 WHERE ip_from >= @a AND asn = 15169 ORDER BY ip_from ASC LIMIT 1;
SELECT * FROM ip2proxy_px8 WHERE ip_from 查看全部

  實(shí)時(shí)文章采集(實(shí)時(shí)采集并分析Nginx日志,自動(dòng)化封禁封禁風(fēng)險IP方案
)
  實(shí)時(shí)采集并分析Nginx日志,自動(dòng)攔截有風(fēng)險的IP程序php
  文章地址:html
  前言
  本文分享了自動(dòng)化采集、分析Nginx日志、實(shí)時(shí)封禁風(fēng)險IP的解決方案和實(shí)踐。節點(diǎn)
  閱讀這個(gè)文章你可以得到:nginx
  閱讀這篇文章你需要:git
  背景
  分析nginx訪(fǎng)問(wèn)日志時(shí),看到大量無(wú)效的404請求,URL都是隨機的敏感詞。這些請求最近變得更加頻繁。手動(dòng)批量禁止部分IP后,新的IP很快就會(huì )進(jìn)來(lái)。 web
  于是萌生了自動(dòng)分析Nginx日志后實(shí)時(shí)封禁IP的想法。
  
  需求序號需求備注
  1
  Nginx 日志采集
  解決方案很多,我選擇了最適合我服務(wù)器的方案:filebeat+redis
  2
  實(shí)時(shí)日志分析
  實(shí)時(shí)消費redis日志,分析需要的數據進(jìn)行分析
  3
  知識產(chǎn)權風(fēng)險評估
  IP風(fēng)險評估,多維度:訪(fǎng)問(wèn)次數、IP歸屬、使用等。
  4
  實(shí)時(shí)禁止
  阻止風(fēng)險 IP 不同的時(shí)間長(cháng)度
  分析
  簡(jiǎn)單從日志中總結了幾個(gè)特點(diǎn):sql
  序列號功能說(shuō)明備注
  1
  經(jīng)常來(lái)訪(fǎng)
  每秒數次甚至數十次
  正常的流量行為也有突發(fā)流量,但不會(huì )持續太久
  2
  連續請求
  持久的
  和上面一樣
  3
  多數 404
  大部分請求的URL可能不存在,還有admin、login、phpMyAdmin、backup等敏感詞。
  這種情況下正常的交通行為并不多
  4
  IP異常
  在A(yíng)SN之后,我們可以看到一些線(xiàn)索,通常這種請求的IP不是普通??的我的用戶(hù)。
  查詢(xún)其用途通常是COM(商業(yè))、DCH(數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等。
  備注:這里分析的IP是通過(guò)ip2location的免費版數據庫,后面會(huì )詳細介紹。
  項目日志采集
  來(lái)源:作者網(wǎng)站由docker部署,Nginx為唯一入口,記錄所有訪(fǎng)問(wèn)日志。
  采集:由于資源有限,我選擇了一個(gè)輕量級的日志工具Filebeat,它采集Nginx的日志并寫(xiě)入Redis。
  風(fēng)險評估
  Monitor服務(wù)根據URL、IP、歷史分數等進(jìn)行風(fēng)險評估,計算出最終的風(fēng)險系數。
  知識產(chǎn)權禁令
  Monitor發(fā)現危險IP(風(fēng)險系數超過(guò)閾值)后,調用Actuator對該IP進(jìn)行封堵,根據風(fēng)險系數計算封禁時(shí)長(cháng)。
  實(shí)現日志采集
  Filebeat 的使用非常簡(jiǎn)單。筆者通過(guò)swarm進(jìn)行部署,部署文件如下(為防止代碼過(guò)長(cháng),其余服務(wù)在此省略):
  version: '3.5'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:7.4.2
deploy:
resources:
limits:
memory: 64M
restart_policy:
condition: on-failure
volumes:
- $PWD/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- $PWD/filebeat/data:/usr/share/filebeat/data:rw
- $PWD/nginx/logs:/logs/nginx:ro
environment:
TZ: Asia/Shanghai
depends_on:
- nginx
  filebeat.yml 文件內容如下:
  filebeat.inputs:
- type: log
enabled: true
paths:
- /logs/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
output.redis:
hosts: ["redis-server"]
password: "{your redis password}"
key: "filebeat:nginx:accesslog"
db: 0
timeout: 5
  部署成功后,查看redis數據:
  
  風(fēng)險評估
  Monitor 服務(wù)是用 Java 編寫(xiě)的,使用 docker 部署,并通過(guò) http 與 Actuator 服務(wù)交互。
  風(fēng)險評估需要整合多個(gè)維度:
  序列號維度策略
  1
  知識產(chǎn)權歸屬
  中文網(wǎng)站的用戶(hù)群通常屬于中國。如果IP屬于國外,就需要警惕了。
  2
  用
  IP獲得使用后,DCH(??數據中心/網(wǎng)絡(luò )托管/傳輸)、SES(搜索引擎蜘蛛)等,增加風(fēng)險評分。
  3
  訪(fǎng)問(wèn)資源
  訪(fǎng)問(wèn)資源不存在且路徑收錄敏感詞,如admin、login、phpMyAdmin、backup等,提高風(fēng)險評分。
  4
  訪(fǎng)問(wèn)的頻率和持續時(shí)間
  頻繁和持續的請求,考慮提高分數。
  5
  歷史成績(jì)
  歷史分數被整合到當前分數中。
  獲取 IP 歸屬
  獲取IP歸屬地相對容易。許多數據服務(wù)網(wǎng)站提供免費的包,例如IpInfo。還有免費版本的 IP 數據庫可以下載,例如 ip2location。
  作者使用了免費版的ip2location數據庫:
  
  ip_from 和 ip_to 是IP段的開(kāi)始和結束,存儲格式為十進(jìn)制。在 MySQL 中,可以通過(guò) inet_aton('your ip') 函數將 IP 轉換為十進(jìn)制。例如:
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_db11 WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocountry_codecountry_nameregion_namecity_namelatitudelongitudezip_codetime_zone
  2899902464
  2899910655
  我們
  美國
  加利福尼亞州
  山頂風(fēng)光
  37.405992
  -122.07852
  94043
  -07:00
  獲取AS、ASN和用法
  網(wǎng)站提供的大部分免費服務(wù)都無(wú)法查詢(xún)ASN或者沒(méi)有目的。ASN數據也有免費的數據庫,但還是沒(méi)有目的和類(lèi)型等,這時(shí)候作者通過(guò)其他方式救國。
  ip2location 提供免費版本的 IP2Location?LITE IP-ASN 和 IP2Proxy?LITE 數據庫。
  IP2Location?LITE IP-ASN:該數據庫提供了對肯定自治系統和編號 (ASN) 的參考。
  IP2Proxy?LITE:數據庫收錄用作開(kāi)放代理的 IP 地址。該數據庫包括所有公共 IPv4 和 IPv6 地址的代理類(lèi)型、國家、地區、城市、ISP、域、使用類(lèi)型、ASN 和最新記錄。
  IP2Location?LITE IP-ASN 無(wú)法找出所使用的 IP 類(lèi)型。如果數據較少,IP2Proxy?LITE 不一定收錄指定的 IP。但是可以結合這兩個(gè)庫來(lái)粗略猜測IP的用途:
  首先,在 IP2Proxy?LITE 中查找 IP 的 ASN。
  set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2location_asn WHERE ip_from = @a LIMIT 1;
  ip_fromip_tocidrasnas
  2899904000
  2899904255
  172.217.6.0/24
  15169
  谷歌有限責任公司
  結合ASN和IP,查詢(xún)與指定IP最近的同一個(gè)ASN的兩條記錄:
<p>set @a:= inet_aton('172.217.6.78');
SELECT * FROM ip2proxy_px8 WHERE ip_from >= @a AND asn = 15169 ORDER BY ip_from ASC LIMIT 1;
SELECT * FROM ip2proxy_px8 WHERE ip_from

實(shí)時(shí)文章采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 169 次瀏覽 ? 2021-12-09 23:08 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計)
  本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,利用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
  一、解決方案描述(一)概述
  本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,傳輸到CKafka,再連接CKafka數據流計算 Oceanus (Flink) ,經(jīng)過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理,輸出到 Elasticsearch,最后通過(guò) Kibana 頁(yè)面查詢(xún)結果。方案中使用Promethus監控流計算Oceanus作業(yè)運行狀態(tài)等系統指標,使用云Grafana監控CVM或業(yè)務(wù)應用指標。
  (二)方案結構二、前期準備
  實(shí)施本方案前,請確保已創(chuàng )建并配置好相應的大數據組件。
  (一)創(chuàng )建私網(wǎng)VPC
  私有網(wǎng)絡(luò )(VPC)是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間。在搭建CKafka、流計算Oceanus、Elasticsearch集群等服務(wù)時(shí),選擇推薦同一個(gè)VPC。具體創(chuàng )建步驟請參考幫助文檔()。
  (二)創(chuàng )建CKafka實(shí)例
  Kafka建議選擇最新的2.4.1版本,與Filebeat 采集工具有更好的兼容性。
  購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info
  (三)創(chuàng )建流計算Oceanus集群
  流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具。它是基于A(yíng)pache Flink構建的企業(yè)級實(shí)時(shí)大數據分析平臺,具有一站式開(kāi)發(fā)、無(wú)縫連接、亞秒級延遲、低成本、安全穩定等特點(diǎn)。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。
  在Streaming Oceanus控制臺的【集群管理】-&gt;【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (四)創(chuàng )建 Elasticsearch 實(shí)例
  在 Elasticsearch 控制臺中,點(diǎn)擊左上角的【新建】,創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (五)創(chuàng )建云監控Prometheus實(shí)例
  為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
  進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
  (六)創(chuàng )建獨立的 Grafana 資源
  單機Grafana需要在灰度發(fā)布的Grafana管理頁(yè)面()中單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
  (七)安裝和配置 Filebeat
  Filebeat是一款輕量級的日志數據采集工具,通過(guò)監控指定位置的文件來(lái)采集信息。在需要監控該VPC下的主機信息和應用信息的云服務(wù)器上安裝Filebeat。安裝方法一:下載Filebeat并安裝。下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】--&gt;【beats管理】中提供的Filebeat。本例使用方法一。下載到CVM并配置Filebeat,在filebeat.yml文件中添加如下配置項:
  # 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:\programdata\elasticsearch\logs\*
  # 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的IP地址+端口topic: &#x27;topic-app-info&#x27; # 請填寫(xiě)實(shí)際的topic
  請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
  注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
  三、項目實(shí)現
  接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
  (一)Filebeat 采集 數據
  1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集 jar 應用日志、JVM 使用情況、監聽(tīng)端口等,詳情請參考 Filebeat 官網(wǎng)
  ().
  # filebeat啟動(dòng)
./filebeat -e -c filebeat.yml
# 監控系統信息寫(xiě)入test.log文件
top -d 10 >>/tmp/test.log
  2、進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
  Filebeat采集中Kafka的數據格式:
  { "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
  (二)創(chuàng )建 Flink SQL 作業(yè)
  使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。
  1、定義源
  根據 Filebeat 中的 json 消息格式構建 Flink Table Source。
  CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( &#x27;connector&#x27; = &#x27;kafka&#x27;, -- 可選 &#x27;kafka&#x27;,&#x27;kafka-0.11&#x27;. 注意選擇對應的內置 Connector &#x27;topic&#x27; = &#x27;topic-app-info&#x27;, -- 替換為您要消費的 Topic &#x27;scan.startup.mode&#x27; = &#x27;earliest-offset&#x27;, &#x27;properties.bootstrap.servers&#x27; = &#x27;10.0.0.29:9092&#x27;, &#x27;properties.group.id&#x27; = &#x27;oceanus_group2&#x27;, -- 必選參數, 一定要指定 Group ID &#x27;format&#x27; = &#x27;json&#x27;, &#x27;json.ignore-parse-errors&#x27; = &#x27;true&#x27;, -- 忽略 JSON 結構解析異常 &#x27;json.fail-on-missing-field&#x27; = &#x27;false&#x27; -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
  2、定義接收器
  CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( &#x27;connector.type&#x27; = &#x27;elasticsearch&#x27;, &#x27;connector.version&#x27; = &#x27;6&#x27;, &#x27;connector.hosts&#x27; = &#x27;http://10.0.0.175:9200&#x27;, &#x27;connector.index&#x27; = &#x27;oceanus_test2&#x27;, &#x27;connector.document-type&#x27; = &#x27;_doc&#x27;, &#x27;connector.username&#x27; = &#x27;elastic&#x27;, &#x27;connector.password&#x27; = &#x27;yourpassword&#x27;, &#x27;update-mode&#x27; = &#x27;upsert&#x27;, -- 可選無(wú)主鍵的 &#x27;append&#x27; 模式,或有主鍵的 &#x27;upsert&#x27; 模式 &#x27;connector.key-null-literal&#x27; = &#x27;n/a&#x27;, -- 主鍵為 null 時(shí)的替代字符串,默認是 &#x27;null&#x27; &#x27;format.type&#x27; = &#x27;json&#x27; -- 輸出數據格式, 目前只支持 &#x27;json&#x27;);
  3、處理業(yè)務(wù)數據
  INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
  4、配置作業(yè)參數
  【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka
  注:根據實(shí)際版本選擇
  5、查詢(xún)ES數據
  在ES控制臺的Kibana頁(yè)面查詢(xún)數據,或者輸入同一子網(wǎng)的CVM,使用如下命令查詢(xún):
  # 查詢(xún)索引 username:password請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H &#x27;Content-Type: application/json&#x27; -d&#x27;{ "query": { "match_all": {}}, "size": 10}&#x27;
  更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。
  (三)系統指示燈監控
  本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。
  Prometheus 是一個(gè)非常靈活的時(shí)間序列數據庫,通常用于監控數據的存儲、計算和報警。流計算 Oceanus 建議用戶(hù)使用騰訊云監控提供的 Prometheus 服務(wù),避免部署和運維成本。同時(shí),還支持騰訊云通知模板,可以輕松通過(guò)短信、電話(huà)、郵件、企業(yè)微信機器人等方式將報警信息發(fā)送到不同的收件人。
  監控配置
  流計算 Oceanus 作業(yè)監控
  除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。
  1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
  pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
  2、 在任意流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(這里不能輸入灰度的Grafana),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
  ().
  3、 3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【Edit】設置不同的Panels來(lái)優(yōu)化顯示效果。
  報警配置
  1、 進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】,配置相關(guān)信息. 具體操作參考訪(fǎng)問(wèn)Prometheus自定義監控
  ().
  2、設置報警通知。選擇【選擇模板】或【新建】設置通知模板。
  3、短信通知信息
  (四)業(yè)務(wù)指標監控
  使用Filebeat采集應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
  1、Grafana 配置 ES 數據源?;叶劝l(fā)布中進(jìn)入Grafana控制臺
  (),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址,打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,并添加數據源。
  2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
  3、 顯示效果如下:
  注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
  四、總結
  本方案同時(shí)嘗試了系統監控指標和業(yè)務(wù)監控指標兩種監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Promethus相關(guān)操作。
  此外,需要注意的是: 查看全部

  實(shí)時(shí)文章采集(如何使用騰訊云大數據組件來(lái)完成實(shí)時(shí)監控系統的設計)
  本文介紹如何使用騰訊云大數據組件完成實(shí)時(shí)監控系統的設計與實(shí)現。通過(guò)實(shí)時(shí)采集和分析云服務(wù)器(CVM)及其App應用的CPU和內存消耗數據,利用短信、電話(huà)、微信等方式實(shí)時(shí)反饋監控報警信息,有效保證系統的穩定運行。使用基于云的Kafka、Flink、ES等組件,大大減少了開(kāi)發(fā)運維人員的投入。
  一、解決方案描述(一)概述
  本方案結合騰訊云CKafka、流計算Oceanus(Flink)、Elasticsearch、Prometheus等,通過(guò)Filebeat實(shí)時(shí)采集系統和應用監控數據,傳輸到CKafka,再連接CKafka數據流計算 Oceanus (Flink) ,經(jīng)過(guò)簡(jiǎn)單的業(yè)務(wù)邏輯處理,輸出到 Elasticsearch,最后通過(guò) Kibana 頁(yè)面查詢(xún)結果。方案中使用Promethus監控流計算Oceanus作業(yè)運行狀態(tài)等系統指標,使用云Grafana監控CVM或業(yè)務(wù)應用指標。
  (二)方案結構二、前期準備
  實(shí)施本方案前,請確保已創(chuàng )建并配置好相應的大數據組件。
  (一)創(chuàng )建私網(wǎng)VPC
  私有網(wǎng)絡(luò )(VPC)是您在騰訊云上自定義的邏輯隔離的網(wǎng)絡(luò )空間。在搭建CKafka、流計算Oceanus、Elasticsearch集群等服務(wù)時(shí),選擇推薦同一個(gè)VPC。具體創(chuàng )建步驟請參考幫助文檔()。
  (二)創(chuàng )建CKafka實(shí)例
  Kafka建議選擇最新的2.4.1版本,與Filebeat 采集工具有更好的兼容性。
  購買(mǎi)完成后,創(chuàng )建一個(gè)Kafka主題:topic-app-info
  (三)創(chuàng )建流計算Oceanus集群
  流計算Oceanus是大數據產(chǎn)品生態(tài)系統的實(shí)時(shí)分析工具。它是基于A(yíng)pache Flink構建的企業(yè)級實(shí)時(shí)大數據分析平臺,具有一站式開(kāi)發(fā)、無(wú)縫連接、亞秒級延遲、低成本、安全穩定等特點(diǎn)。流計算Oceanus旨在實(shí)現企業(yè)數據價(jià)值最大化,加速企業(yè)實(shí)時(shí)數字化建設。
  在Streaming Oceanus控制臺的【集群管理】-&gt;【新建集群】頁(yè)面創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (四)創(chuàng )建 Elasticsearch 實(shí)例
  在 Elasticsearch 控制臺中,點(diǎn)擊左上角的【新建】,創(chuàng )建集群。具體步驟請參考幫助文檔()。
  (五)創(chuàng )建云監控Prometheus實(shí)例
  為了顯示自定義的系統指標,需要購買(mǎi) Promethus 服務(wù)。只需要自定義業(yè)務(wù)指標的同學(xué)可以省略這一步。
  進(jìn)入云監控控制臺,點(diǎn)擊左側的【Prometheus監控】,新建一個(gè)Prometheus實(shí)例。具體步驟請參考幫助文檔()。
  (六)創(chuàng )建獨立的 Grafana 資源
  單機Grafana需要在灰度發(fā)布的Grafana管理頁(yè)面()中單獨購買(mǎi),實(shí)現業(yè)務(wù)監控指標的展示。
  (七)安裝和配置 Filebeat
  Filebeat是一款輕量級的日志數據采集工具,通過(guò)監控指定位置的文件來(lái)采集信息。在需要監控該VPC下的主機信息和應用信息的云服務(wù)器上安裝Filebeat。安裝方法一:下載Filebeat并安裝。下載地址(); 方法二:使用【Elasticsearch管理頁(yè)面】--&gt;【beats管理】中提供的Filebeat。本例使用方法一。下載到CVM并配置Filebeat,在filebeat.yml文件中添加如下配置項:
  # 監控日志文件配置- type: logenabled: truepaths: - /tmp/test.log #- c:\programdata\elasticsearch\logs\*
  # 監控數據輸出項配置output.kafka:version: 2.0.0 # kafka版本號hosts: ["xx.xx.xx.xx:xxxx"] # 請填寫(xiě)實(shí)際的IP地址+端口topic: &#x27;topic-app-info&#x27; # 請填寫(xiě)實(shí)際的topic
  請根據實(shí)際業(yè)務(wù)需求配置相應的Filebeat.yml文件,參考Filebeat官方文檔()。
  注:示例中使用的是2.4.1的CKafka版本,此處配置版本:2.0.0。不兼容的版本可能會(huì )出現“ERROR [kafka] kafka/client.go:341 Kafka (topic=topic-app-info): drop invalid message”錯誤
  三、項目實(shí)現
  接下來(lái)通過(guò)一個(gè)案例來(lái)介紹如何通過(guò)流計算Oceanus實(shí)現個(gè)性化監控。
  (一)Filebeat 采集 數據
  1、進(jìn)入Filebeat根目錄,啟動(dòng)Filebeat獲取數據采集。在示例中,采集 顯示了 top 命令中顯示的 CPU、內存等信息。還可以采集 jar 應用日志、JVM 使用情況、監聽(tīng)端口等,詳情請參考 Filebeat 官網(wǎng)
  ().
  # filebeat啟動(dòng)
./filebeat -e -c filebeat.yml
# 監控系統信息寫(xiě)入test.log文件
top -d 10 >>/tmp/test.log
  2、進(jìn)入CKafka頁(yè)面,點(diǎn)擊左側【消息查詢(xún)】,查詢(xún)對應的主題消息,驗證數據是否為采集。
  Filebeat采集中Kafka的數據格式:
  { "@timestamp": "2021-08-30T10:22:52.888Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "7.14.0" }, "input": { "type": "log" }, "host": { "ip": ["xx.xx.xx.xx", "xx::xx:xx:xx:xx"], "mac": ["xx:xx:xx:xx:xx:xx"], "hostname": "xx.xx.xx.xx", "architecture": "x86_64", "os": { "type": "linux", "platform": "centos", "version": "7(Core)", "family": "redhat", "name": "CentOSLinux", "kernel": "3.10.0-1062.9.1.el7.x86_64", "codename": "Core" }, "id": "0ea734564f9a4e2881b866b82d679dfc", "name": "xx.xx.xx.xx", "containerized": false }, "agent": { "name": "xx.xx.xx.xx", "type": "filebeat", "version": "7.14.0", "hostname": "xx.xx.xx.xx", "ephemeral_id": "6c0922a6-17af-4474-9e88-1fc3b1c3b1a9", "id": "6b23463c-0654-4f8b-83a9-84ec75721311" }, "ecs": { "version": "1.10.0" }, "log": { "offset": 2449931, "file": { "path": "/tmp/test.log" } }, "message": "(B[m16root0-20000S0.00.00:00.00kworker/1:0H(B[m[39;49m[K"}
  (二)創(chuàng )建 Flink SQL 作業(yè)
  使用流計算 Oceanus 處理 CKafka 訪(fǎng)問(wèn)的數據并存儲在 Elasticsearch 中。
  1、定義源
  根據 Filebeat 中的 json 消息格式構建 Flink Table Source。
  CREATE TABLE DataInput ( `@timestamp` VARCHAR, `host` ROW, `log` ROW, `message` VARCHAR) WITH ( &#x27;connector&#x27; = &#x27;kafka&#x27;, -- 可選 &#x27;kafka&#x27;,&#x27;kafka-0.11&#x27;. 注意選擇對應的內置 Connector &#x27;topic&#x27; = &#x27;topic-app-info&#x27;, -- 替換為您要消費的 Topic &#x27;scan.startup.mode&#x27; = &#x27;earliest-offset&#x27;, &#x27;properties.bootstrap.servers&#x27; = &#x27;10.0.0.29:9092&#x27;, &#x27;properties.group.id&#x27; = &#x27;oceanus_group2&#x27;, -- 必選參數, 一定要指定 Group ID &#x27;format&#x27; = &#x27;json&#x27;, &#x27;json.ignore-parse-errors&#x27; = &#x27;true&#x27;, -- 忽略 JSON 結構解析異常 &#x27;json.fail-on-missing-field&#x27; = &#x27;false&#x27; -- 如果設置為 true, 則遇到缺失字段會(huì )報錯 設置為 false 則缺失字段設置為 null);
  2、定義接收器
  CREATE TABLE es_output ( `id` VARCHAR, `ip` ARRAY, `path` VARCHAR, `num` INTEGER, `message` VARCHAR, `createTime` VARCHAR) WITH ( &#x27;connector.type&#x27; = &#x27;elasticsearch&#x27;, &#x27;connector.version&#x27; = &#x27;6&#x27;, &#x27;connector.hosts&#x27; = &#x27;http://10.0.0.175:9200&#x27;, &#x27;connector.index&#x27; = &#x27;oceanus_test2&#x27;, &#x27;connector.document-type&#x27; = &#x27;_doc&#x27;, &#x27;connector.username&#x27; = &#x27;elastic&#x27;, &#x27;connector.password&#x27; = &#x27;yourpassword&#x27;, &#x27;update-mode&#x27; = &#x27;upsert&#x27;, -- 可選無(wú)主鍵的 &#x27;append&#x27; 模式,或有主鍵的 &#x27;upsert&#x27; 模式 &#x27;connector.key-null-literal&#x27; = &#x27;n/a&#x27;, -- 主鍵為 null 時(shí)的替代字符串,默認是 &#x27;null&#x27; &#x27;format.type&#x27; = &#x27;json&#x27; -- 輸出數據格式, 目前只支持 &#x27;json&#x27;);
  3、處理業(yè)務(wù)數據
  INSERT INTO es_outputSELECT host.id as `id`, host.ip as `ip`, log.file.path as `path`, log.`offset` as `num`, message, `@timestamp` as `createTime`from DataInput;
  4、配置作業(yè)參數
  【內置連接器】選擇flink-connector-elasticsearch6和flink-connector-kafka
  注:根據實(shí)際版本選擇
  5、查詢(xún)ES數據
  在ES控制臺的Kibana頁(yè)面查詢(xún)數據,或者輸入同一子網(wǎng)的CVM,使用如下命令查詢(xún):
  # 查詢(xún)索引 username:password請替換為實(shí)際賬號密碼curl -XGET -u username:password http://xx.xx.xx.xx:xxxx/oceanus_test2/_search -H &#x27;Content-Type: application/json&#x27; -d&#x27;{ "query": { "match_all": {}}, "size": 10}&#x27;
  更多訪(fǎng)問(wèn)方式請參考訪(fǎng)問(wèn)ES集群()。
  (三)系統指示燈監控
  本章主要實(shí)現系統信息監控,對Flink作業(yè)的運行狀態(tài)進(jìn)行監控和告警。
  Prometheus 是一個(gè)非常靈活的時(shí)間序列數據庫,通常用于監控數據的存儲、計算和報警。流計算 Oceanus 建議用戶(hù)使用騰訊云監控提供的 Prometheus 服務(wù),避免部署和運維成本。同時(shí),還支持騰訊云通知模板,可以輕松通過(guò)短信、電話(huà)、郵件、企業(yè)微信機器人等方式將報警信息發(fā)送到不同的收件人。
  監控配置
  流計算 Oceanus 作業(yè)監控
  除了流計算Oceanus控制臺自帶的監控信息外,還可以配置目前支持任務(wù)級細粒度監控、作業(yè)級監控、集群Flink作業(yè)列表監控。
  1、 流計算Oceanus作業(yè)詳情頁(yè)面,點(diǎn)擊【作業(yè)參數】,在【高級參數】中添加如下配置:
  pipeline.max-parallelism: 2048metrics.reporters: promgatewaymetrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus實(shí)例地址metrics.reporter.promgateway.port: 9090 # Prometheus實(shí)例端口metrics.reporter.promgateway.needBasicAuth: truemetrics.reporter.promgateway.password: xxxxxxxxxxx # Prometheus實(shí)例密碼metrics.reporter.promgateway.interval: 10 SECONDS
  2、 在任意流計算Oceanus作業(yè)中,點(diǎn)擊【云監控】進(jìn)入云Prometheus實(shí)例,點(diǎn)擊鏈接進(jìn)入Grafana(這里不能輸入灰度的Grafana),并導入json文件。詳情請參考訪(fǎng)問(wèn) Prometheus 自定義監視器
  ().
  3、 3、顯示的Flink任務(wù)監控效果如下,用戶(hù)也可以點(diǎn)擊【Edit】設置不同的Panels來(lái)優(yōu)化顯示效果。
  報警配置
  1、 進(jìn)入騰訊云監控界面,點(diǎn)擊左側【Prometheus監控】,點(diǎn)擊購買(mǎi)的實(shí)例進(jìn)入服務(wù)管理頁(yè)面,點(diǎn)擊左側【告警策略】,點(diǎn)擊【新建】,配置相關(guān)信息. 具體操作參考訪(fǎng)問(wèn)Prometheus自定義監控
  ().
  2、設置報警通知。選擇【選擇模板】或【新建】設置通知模板。
  3、短信通知信息
  (四)業(yè)務(wù)指標監控
  使用Filebeat采集應用業(yè)務(wù)數據,通過(guò)流計算的Oceanus服務(wù)處理數據存儲在ES中,使用ES+Grafana監控業(yè)務(wù)數據。
  1、Grafana 配置 ES 數據源?;叶劝l(fā)布中進(jìn)入Grafana控制臺
  (),進(jìn)入剛剛創(chuàng )建的Grafana服務(wù),找到外網(wǎng)地址,打開(kāi)登錄,Grafana賬號為admin,登錄后點(diǎn)擊【配置】,點(diǎn)擊【添加源】,搜索elasticsearch,填寫(xiě)相關(guān)ES實(shí)例信息,并添加數據源。
  2、 點(diǎn)擊左側【Dashboards】,點(diǎn)擊【Manage】,點(diǎn)擊右上角的【New Dashboard】,新建面板,編輯面板。
  3、 顯示效果如下:
  注:本辦公室僅為示例,無(wú)實(shí)際業(yè)務(wù)
  四、總結
  本方案同時(shí)嘗試了系統監控指標和業(yè)務(wù)監控指標兩種監控方案。如果只需要監控業(yè)務(wù)指標,可以省略Promethus相關(guān)操作。
  此外,需要注意的是:

實(shí)時(shí)文章采集(看新聞?wù)腋杏X(jué)有用就行,澎湃新聞海天盛筵)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2021-12-09 13:04 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(看新聞?wù)腋杏X(jué)有用就行,澎湃新聞海天盛筵)
  實(shí)時(shí)文章采集推薦——金山詞霸財經(jīng)文章推薦--薦讀--薦讀——澎湃新聞
  海天盛筵
  有個(gè)app叫芝麻醬
  雪球,
  看網(wǎng)上新聞好像都是抄襲其他媒體的稿子,沒(méi)有自己的東西,
  當當市場(chǎng)、e大電商、阿里知乎都可以,
  點(diǎn)睛經(jīng)常做這些的,
  和訊,獵豹清晰。
  看新聞?wù)腋杏X(jué)有用就行,
  快本,和虎嗅,
  個(gè)人喜歡:海天盛筵、芝麻醬、萬(wàn)家客
  虎嗅網(wǎng)
  我是搜狐傳媒部做電商的,負責搜狐自媒體頻道。這些都是我發(fā)現的,沒(méi)有深挖的,跟網(wǎng)站、平臺運營(yíng)聯(lián)系都很多,沒(méi)有局限性。但有些在知乎上沒(méi)有流傳開(kāi)來(lái),是因為1.有些文章不是同一天發(fā)布的。2.流傳開(kāi)了,被刪了。
  uc資訊
  米讀app,您可以試一下,不僅可以看資訊,還可以提供一些閱讀體驗。
  虎嗅網(wǎng),36氪,
  我覺(jué)得吃喝玩樂(lè )都可以啊
  淘點(diǎn)點(diǎn)
  嗯,澎湃新聞新聞必須要有的,然后就是當當市場(chǎng)。我做起來(lái)了這個(gè)平臺,搜狐新聞也有部分資訊??梢哉椅伊牧?。這問(wèn)題。
  那么問(wèn)題來(lái)了,你說(shuō)說(shuō)哪一個(gè)對于你來(lái)說(shuō)是可以有價(jià)值的,
  這很簡(jiǎn)單,我個(gè)人比較喜歡看每日新聞,推薦一個(gè)tt工場(chǎng)/,每日新聞介紹了中國首屈一指的原創(chuàng )新聞網(wǎng)站,為每一篇原創(chuàng )新聞提供定制化的內容。 查看全部

  實(shí)時(shí)文章采集(看新聞?wù)腋杏X(jué)有用就行,澎湃新聞海天盛筵)
  實(shí)時(shí)文章采集推薦——金山詞霸財經(jīng)文章推薦--薦讀--薦讀——澎湃新聞
  海天盛筵
  有個(gè)app叫芝麻醬
  雪球,
  看網(wǎng)上新聞好像都是抄襲其他媒體的稿子,沒(méi)有自己的東西,
  當當市場(chǎng)、e大電商、阿里知乎都可以,
  點(diǎn)睛經(jīng)常做這些的,
  和訊,獵豹清晰。
  看新聞?wù)腋杏X(jué)有用就行,
  快本,和虎嗅,
  個(gè)人喜歡:海天盛筵、芝麻醬、萬(wàn)家客
  虎嗅網(wǎng)
  我是搜狐傳媒部做電商的,負責搜狐自媒體頻道。這些都是我發(fā)現的,沒(méi)有深挖的,跟網(wǎng)站、平臺運營(yíng)聯(lián)系都很多,沒(méi)有局限性。但有些在知乎上沒(méi)有流傳開(kāi)來(lái),是因為1.有些文章不是同一天發(fā)布的。2.流傳開(kāi)了,被刪了。
  uc資訊
  米讀app,您可以試一下,不僅可以看資訊,還可以提供一些閱讀體驗。
  虎嗅網(wǎng),36氪,
  我覺(jué)得吃喝玩樂(lè )都可以啊
  淘點(diǎn)點(diǎn)
  嗯,澎湃新聞新聞必須要有的,然后就是當當市場(chǎng)。我做起來(lái)了這個(gè)平臺,搜狐新聞也有部分資訊??梢哉椅伊牧?。這問(wèn)題。
  那么問(wèn)題來(lái)了,你說(shuō)說(shuō)哪一個(gè)對于你來(lái)說(shuō)是可以有價(jià)值的,
  這很簡(jiǎn)單,我個(gè)人比較喜歡看每日新聞,推薦一個(gè)tt工場(chǎng)/,每日新聞介紹了中國首屈一指的原創(chuàng )新聞網(wǎng)站,為每一篇原創(chuàng )新聞提供定制化的內容。

實(shí)時(shí)文章采集(實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另外一個(gè)(多個(gè)))

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 195 次瀏覽 ? 2021-12-05 15:14 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另外一個(gè)(多個(gè)))
  場(chǎng)景描述
  將實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另一個(gè)(多個(gè))播放終端,完成遠距離實(shí)時(shí)視頻播放功能。典型場(chǎng)景:
 ?。?)遠程查看監控攝像機。選擇指定的攝像機,將攝像機采集的實(shí)時(shí)數據推送到指定的回放終端,供值班人員(監控中心)查看。包括實(shí)時(shí)上墻視頻,推送至大屏指定;
 ?。?)直播系統。用戶(hù)在PC上安裝流媒體工具,從屏幕(麥克風(fēng))抓取實(shí)時(shí)數據,推送給觀(guān)看直播的觀(guān)眾。
  解決方案
  完成端到端的流推送,需要借助中間件來(lái)完成,常用的NginxRtmp模塊用于傳輸視頻數據。實(shí)時(shí)流媒體采集端根據給定地址推送數據到Nginx流媒體服務(wù)器,播放端根據給定地址從Nginx流媒體服務(wù)器拉取數據呈現給用戶(hù).
  
  實(shí)時(shí)流結構圖
  如果多個(gè)用戶(hù)需要播放同一個(gè)實(shí)時(shí)流數據,那么理想情況下,流端的數據應該是復用的,即流端只需要為多個(gè)播放終端推送一個(gè)流。此時(shí),流端和播放端處于pair-N關(guān)系。
  
  多個(gè)用戶(hù)播放相同的實(shí)時(shí)流數據
  如果廣播用戶(hù)很多,推送和廣播端的數量很多,僅僅依靠流媒體服務(wù)器轉發(fā)數據肯定是不夠的。這時(shí)候就需要多臺流媒體服務(wù)器協(xié)同工作。當有多個(gè)流媒體服務(wù)器時(shí),就會(huì )出現一個(gè)問(wèn)題:當用戶(hù)請求實(shí)時(shí)流媒體時(shí),如何為其分配一個(gè)流媒體服務(wù)器?這時(shí)候會(huì )引入另一個(gè)概念:負載均衡。當有多個(gè)流媒體服務(wù)器時(shí),我們需要通過(guò)一定的策略來(lái)計算出最合適的流媒體服務(wù)器,比如找到當前負載最小的服務(wù)器,交給用戶(hù)。
  
  多個(gè)流媒體服務(wù)器
  如上圖所示,當有多個(gè)流媒體服務(wù)器時(shí),負載均衡需要根據指定的策略計算出最佳服務(wù)器地址,然后推送端和播放端根據地址分別推拉流。該數字是使用流媒體服務(wù)器1計算得到的。
  實(shí)現技術(shù)
  使用的技術(shù)和工具:
 ?。?)CentOS6.5+Tomacat8.0+Mysql+Spring,javaweb后臺,接收用戶(hù)請求,負載計算,流狀態(tài)同步,發(fā)送推流指令等;
 ?。?)ffmpeg,C++調用的流媒體工具;
 ?。?)RabbitMQ,web后臺和推送端傳遞消息;
 ?。?)Nginx1.12.0+rtmpmodule,詳情可查看官方第三方模塊列表、流媒體轉發(fā);
 ?。?)VLCC#開(kāi)發(fā)工具,用來(lái)拉流,網(wǎng)上有公開(kāi)的API調用方法,用來(lái)做客戶(hù)端demo,以下截圖基于這個(gè)demo;
 ?。?)jwplayer,真正的web前端實(shí)時(shí)流控。
  詳細實(shí)施
 ?。?)關(guān)于Nginx+rtmp模塊實(shí)現實(shí)時(shí)流轉發(fā)的內容就不寫(xiě)了,網(wǎng)上很多教程也很簡(jiǎn)單,不需要寫(xiě)任何代碼;
 ?。?)Javaweb后端采用SpringMVC+Mybatis,只需要實(shí)現一些http接口即可;
  這里詳細描述了負載計算的邏輯。該模塊與Web后端分離,可以單獨部署。
  
  這個(gè)模塊是java后端的一部分,當然也可以單獨部署。它通過(guò)數據庫中的請求表與 Web 后端同步數據。接下來(lái)是負載均衡中生成rtmp的邏輯,rtmp就是本文開(kāi)頭提到的push/pull地址。
  
  push 和 pull 端可以通過(guò)給定的 rtmp 進(jìn)行推拉。Nginx流媒體服務(wù)器(具體為rtmp模塊)接收推送開(kāi)始(publish_start)、推送結束(publish_done)、拉取開(kāi)始(play_start)。) 并且當流結束(play_done)時(shí),會(huì )根據配置文件中的配置進(jìn)行http回調,回調地址配置為java負載均衡后臺。我們需要在這個(gè)回調中更新流媒體服務(wù)器的狀態(tài),比如當前流媒體服務(wù)器的負載數,以便下次負載計算。
  
  有時(shí)http回調會(huì )失敗,導致負載均衡模塊中保存的流媒體服務(wù)器狀態(tài)出錯,所以我們需要主動(dòng)同步流媒體服務(wù)器的負載狀態(tài):
  
  負載計算的另一個(gè)非常重要的標準是檢查流媒體服務(wù)器是否在線(xiàn)。如果不在線(xiàn),那么流媒體服務(wù)器不在我們考慮范圍內。主動(dòng)檢查流媒體服務(wù)器的狀態(tài):
  
  演示演示
  由于種種原因,這里只能掛一些演示圖片:
  演示1
  在百度地圖中按區域搜索攝像頭,選擇攝像頭,查看攝像頭實(shí)時(shí)視頻數據。流程是:請求視頻-&gt;
  
  演示2
  選擇攝像機,將攝像機的實(shí)時(shí)流推送到大屏幕。流程為:請求大屏上墻(攜帶大屏ID)-&gt;計算rtmp-&gt;開(kāi)始流媒體-&gt;開(kāi)始流媒體。下圖為大屏模擬管理器:
  
  大屏準備好后,開(kāi)始播放,管理員狀態(tài)更新:
  
  大屏模擬器界面支持斷線(xiàn)恢復。關(guān)閉終端并再次打開(kāi)后,流媒體不會(huì )中斷:
  
  程序概要
 ?。?)push端和pull端有1-&gt;N的關(guān)系,對于每個(gè)push流,可以同時(shí)有多個(gè)pull端,即push流可以復用。當多個(gè)用戶(hù)請求時(shí)同一個(gè)資源(比如同一個(gè)camera),只需要推一個(gè)流,此時(shí)每個(gè)用戶(hù)的拉流地址rtmp是一樣的。
 ?。?)需要一個(gè)流媒體服務(wù)器作為push和pull之間的橋梁,負責實(shí)時(shí)流的轉發(fā)。這里使用的是Nginx+rtmpmodule,網(wǎng)上有詳細教程。
 ?。?)流媒體服務(wù)器的選擇需要通過(guò)負載均衡計算。負載計算策略包括:流媒體服務(wù)器是否在線(xiàn),負載數(當前播放鏈接)是否達到服務(wù)器的上限,以及請求的資源是否已經(jīng)被推流(即可以復用,這種情況下直接返回之前的rtmp,不需要重新分配服務(wù)器)。
 ?。?)Nginx+rtmp模塊的配置文件中,有一項是配置'狀態(tài)回調'的地址。當流媒體服務(wù)器的狀態(tài)發(fā)生變化時(shí),會(huì )通過(guò)這個(gè)通知java后端打回來(lái)。
  不提供源碼,有問(wèn)題的朋友可以留言或私信。 查看全部

  實(shí)時(shí)文章采集(實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另外一個(gè)(多個(gè)))
  場(chǎng)景描述
  將實(shí)時(shí)流采集終端的視頻數據實(shí)時(shí)推送到另一個(gè)(多個(gè))播放終端,完成遠距離實(shí)時(shí)視頻播放功能。典型場(chǎng)景:
 ?。?)遠程查看監控攝像機。選擇指定的攝像機,將攝像機采集的實(shí)時(shí)數據推送到指定的回放終端,供值班人員(監控中心)查看。包括實(shí)時(shí)上墻視頻,推送至大屏指定;
 ?。?)直播系統。用戶(hù)在PC上安裝流媒體工具,從屏幕(麥克風(fēng))抓取實(shí)時(shí)數據,推送給觀(guān)看直播的觀(guān)眾。
  解決方案
  完成端到端的流推送,需要借助中間件來(lái)完成,常用的NginxRtmp模塊用于傳輸視頻數據。實(shí)時(shí)流媒體采集端根據給定地址推送數據到Nginx流媒體服務(wù)器,播放端根據給定地址從Nginx流媒體服務(wù)器拉取數據呈現給用戶(hù).
  
  實(shí)時(shí)流結構圖
  如果多個(gè)用戶(hù)需要播放同一個(gè)實(shí)時(shí)流數據,那么理想情況下,流端的數據應該是復用的,即流端只需要為多個(gè)播放終端推送一個(gè)流。此時(shí),流端和播放端處于pair-N關(guān)系。
  
  多個(gè)用戶(hù)播放相同的實(shí)時(shí)流數據
  如果廣播用戶(hù)很多,推送和廣播端的數量很多,僅僅依靠流媒體服務(wù)器轉發(fā)數據肯定是不夠的。這時(shí)候就需要多臺流媒體服務(wù)器協(xié)同工作。當有多個(gè)流媒體服務(wù)器時(shí),就會(huì )出現一個(gè)問(wèn)題:當用戶(hù)請求實(shí)時(shí)流媒體時(shí),如何為其分配一個(gè)流媒體服務(wù)器?這時(shí)候會(huì )引入另一個(gè)概念:負載均衡。當有多個(gè)流媒體服務(wù)器時(shí),我們需要通過(guò)一定的策略來(lái)計算出最合適的流媒體服務(wù)器,比如找到當前負載最小的服務(wù)器,交給用戶(hù)。
  
  多個(gè)流媒體服務(wù)器
  如上圖所示,當有多個(gè)流媒體服務(wù)器時(shí),負載均衡需要根據指定的策略計算出最佳服務(wù)器地址,然后推送端和播放端根據地址分別推拉流。該數字是使用流媒體服務(wù)器1計算得到的。
  實(shí)現技術(shù)
  使用的技術(shù)和工具:
 ?。?)CentOS6.5+Tomacat8.0+Mysql+Spring,javaweb后臺,接收用戶(hù)請求,負載計算,流狀態(tài)同步,發(fā)送推流指令等;
 ?。?)ffmpeg,C++調用的流媒體工具;
 ?。?)RabbitMQ,web后臺和推送端傳遞消息;
 ?。?)Nginx1.12.0+rtmpmodule,詳情可查看官方第三方模塊列表、流媒體轉發(fā);
 ?。?)VLCC#開(kāi)發(fā)工具,用來(lái)拉流,網(wǎng)上有公開(kāi)的API調用方法,用來(lái)做客戶(hù)端demo,以下截圖基于這個(gè)demo;
 ?。?)jwplayer,真正的web前端實(shí)時(shí)流控。
  詳細實(shí)施
 ?。?)關(guān)于Nginx+rtmp模塊實(shí)現實(shí)時(shí)流轉發(fā)的內容就不寫(xiě)了,網(wǎng)上很多教程也很簡(jiǎn)單,不需要寫(xiě)任何代碼;
 ?。?)Javaweb后端采用SpringMVC+Mybatis,只需要實(shí)現一些http接口即可;
  這里詳細描述了負載計算的邏輯。該模塊與Web后端分離,可以單獨部署。
  
  這個(gè)模塊是java后端的一部分,當然也可以單獨部署。它通過(guò)數據庫中的請求表與 Web 后端同步數據。接下來(lái)是負載均衡中生成rtmp的邏輯,rtmp就是本文開(kāi)頭提到的push/pull地址。
  
  push 和 pull 端可以通過(guò)給定的 rtmp 進(jìn)行推拉。Nginx流媒體服務(wù)器(具體為rtmp模塊)接收推送開(kāi)始(publish_start)、推送結束(publish_done)、拉取開(kāi)始(play_start)。) 并且當流結束(play_done)時(shí),會(huì )根據配置文件中的配置進(jìn)行http回調,回調地址配置為java負載均衡后臺。我們需要在這個(gè)回調中更新流媒體服務(wù)器的狀態(tài),比如當前流媒體服務(wù)器的負載數,以便下次負載計算。
  
  有時(shí)http回調會(huì )失敗,導致負載均衡模塊中保存的流媒體服務(wù)器狀態(tài)出錯,所以我們需要主動(dòng)同步流媒體服務(wù)器的負載狀態(tài):
  
  負載計算的另一個(gè)非常重要的標準是檢查流媒體服務(wù)器是否在線(xiàn)。如果不在線(xiàn),那么流媒體服務(wù)器不在我們考慮范圍內。主動(dòng)檢查流媒體服務(wù)器的狀態(tài):
  
  演示演示
  由于種種原因,這里只能掛一些演示圖片:
  演示1
  在百度地圖中按區域搜索攝像頭,選擇攝像頭,查看攝像頭實(shí)時(shí)視頻數據。流程是:請求視頻-&gt;
  
  演示2
  選擇攝像機,將攝像機的實(shí)時(shí)流推送到大屏幕。流程為:請求大屏上墻(攜帶大屏ID)-&gt;計算rtmp-&gt;開(kāi)始流媒體-&gt;開(kāi)始流媒體。下圖為大屏模擬管理器:
  
  大屏準備好后,開(kāi)始播放,管理員狀態(tài)更新:
  
  大屏模擬器界面支持斷線(xiàn)恢復。關(guān)閉終端并再次打開(kāi)后,流媒體不會(huì )中斷:
  
  程序概要
 ?。?)push端和pull端有1-&gt;N的關(guān)系,對于每個(gè)push流,可以同時(shí)有多個(gè)pull端,即push流可以復用。當多個(gè)用戶(hù)請求時(shí)同一個(gè)資源(比如同一個(gè)camera),只需要推一個(gè)流,此時(shí)每個(gè)用戶(hù)的拉流地址rtmp是一樣的。
 ?。?)需要一個(gè)流媒體服務(wù)器作為push和pull之間的橋梁,負責實(shí)時(shí)流的轉發(fā)。這里使用的是Nginx+rtmpmodule,網(wǎng)上有詳細教程。
 ?。?)流媒體服務(wù)器的選擇需要通過(guò)負載均衡計算。負載計算策略包括:流媒體服務(wù)器是否在線(xiàn),負載數(當前播放鏈接)是否達到服務(wù)器的上限,以及請求的資源是否已經(jīng)被推流(即可以復用,這種情況下直接返回之前的rtmp,不需要重新分配服務(wù)器)。
 ?。?)Nginx+rtmp模塊的配置文件中,有一項是配置'狀態(tài)回調'的地址。當流媒體服務(wù)器的狀態(tài)發(fā)生變化時(shí),會(huì )通過(guò)這個(gè)通知java后端打回來(lái)。
  不提供源碼,有問(wèn)題的朋友可以留言或私信。

實(shí)時(shí)文章采集(帝國采集插件好用嗎?帝國是免費開(kāi)源的CMS系統!)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 182 次瀏覽 ? 2021-12-02 04:11 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(帝國采集插件好用嗎?帝國是免費開(kāi)源的CMS系統!)
  Empire采集 插件好用嗎?Empire是一個(gè)免費開(kāi)源的cms系統,那么多網(wǎng)站都是Empire cms建站系統,那么Empire 采集插件好用嗎?如果你只是采集,沒(méi)關(guān)系。填入數據,但是你要找到不同的采集 源寫(xiě)入規則。如果你能熟練使用HTML+css編寫(xiě)規則,也不是特別難。如果不懂代碼規則,使用Empire采集插件,會(huì )比較麻煩!這時(shí)候肯定有很多朋友說(shuō)我看不懂代碼了。我該怎么辦?
  
  帝國采集
  不懂HTML+css如何采集發(fā)布:
  1、 只要輸入關(guān)鍵詞 就可以采集:搜狗新聞-搜狗知乎-投文章-公眾號-百度新聞-百度知道-新浪新聞-360新聞-鳳凰新聞(可同時(shí)設置多個(gè)采集來(lái)源采集)
  
  帝國cms采集
  2、根據關(guān)鍵詞采集文章,一次可以導入1000個(gè)關(guān)鍵詞,可以創(chuàng )建幾十個(gè)或幾百個(gè)采集任務(wù)同時(shí)。繼續掛斷采集。
  2、可設置關(guān)鍵詞采集文章數-支持本地預覽-支持采集鏈接預覽-支持查看采集狀態(tài)
  二、不同的網(wǎng)站cms發(fā)布
  監控文件夾發(fā)布:您在桌面上創(chuàng )建一個(gè)文件夾,使用軟件監控該文件夾,一旦文件夾中有新內容,將立即發(fā)布到網(wǎng)站。(支持復制粘貼修改后的文檔)
  cms發(fā)布:支持Empire、易游、ZBLOG、織夢(mèng)、WP、PB、Apple、搜外等各大cms,可同時(shí)管理和發(fā)布
  
  帝國cms 發(fā)布
  對應欄目:不同的文章可以發(fā)布不同的欄目
  定時(shí)發(fā)布:可以控制多少分鐘發(fā)表一篇文章
  監控數據:發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序等。
  
  網(wǎng)站詳情
  為什么我不使用 Empire 插件?一是用Empire采集插件來(lái)拖延時(shí)間,二來(lái)要寫(xiě)很多規則,每天管理10個(gè)網(wǎng)站。時(shí)間不夠用,很累。. 最后我改變了使用方式,效率提高了好幾倍。我也有更多的時(shí)間去做SEO的細節,大大增加了網(wǎng)站的流量。
  
  以上是小編采集網(wǎng)站的帝國,只要用心管理網(wǎng)站的帝國,采集的網(wǎng)站的流量也不錯!如果你想認識其他朋友,可以留言或私信我??赐赀@篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!您的一舉一動(dòng)都將成為編輯源源不斷的動(dòng)力! 查看全部

  實(shí)時(shí)文章采集(帝國采集插件好用嗎?帝國是免費開(kāi)源的CMS系統!)
  Empire采集 插件好用嗎?Empire是一個(gè)免費開(kāi)源的cms系統,那么多網(wǎng)站都是Empire cms建站系統,那么Empire 采集插件好用嗎?如果你只是采集,沒(méi)關(guān)系。填入數據,但是你要找到不同的采集 源寫(xiě)入規則。如果你能熟練使用HTML+css編寫(xiě)規則,也不是特別難。如果不懂代碼規則,使用Empire采集插件,會(huì )比較麻煩!這時(shí)候肯定有很多朋友說(shuō)我看不懂代碼了。我該怎么辦?
  
  帝國采集
  不懂HTML+css如何采集發(fā)布:
  1、 只要輸入關(guān)鍵詞 就可以采集:搜狗新聞-搜狗知乎-投文章-公眾號-百度新聞-百度知道-新浪新聞-360新聞-鳳凰新聞(可同時(shí)設置多個(gè)采集來(lái)源采集)
  
  帝國cms采集
  2、根據關(guān)鍵詞采集文章,一次可以導入1000個(gè)關(guān)鍵詞,可以創(chuàng )建幾十個(gè)或幾百個(gè)采集任務(wù)同時(shí)。繼續掛斷采集。
  2、可設置關(guān)鍵詞采集文章數-支持本地預覽-支持采集鏈接預覽-支持查看采集狀態(tài)
  二、不同的網(wǎng)站cms發(fā)布
  監控文件夾發(fā)布:您在桌面上創(chuàng )建一個(gè)文件夾,使用軟件監控該文件夾,一旦文件夾中有新內容,將立即發(fā)布到網(wǎng)站。(支持復制粘貼修改后的文檔)
  cms發(fā)布:支持Empire、易游、ZBLOG、織夢(mèng)、WP、PB、Apple、搜外等各大cms,可同時(shí)管理和發(fā)布
  
  帝國cms 發(fā)布
  對應欄目:不同的文章可以發(fā)布不同的欄目
  定時(shí)發(fā)布:可以控制多少分鐘發(fā)表一篇文章
  監控數據:發(fā)布、待發(fā)布、是否偽原創(chuàng )、發(fā)布狀態(tài)、URL、程序等。
  
  網(wǎng)站詳情
  為什么我不使用 Empire 插件?一是用Empire采集插件來(lái)拖延時(shí)間,二來(lái)要寫(xiě)很多規則,每天管理10個(gè)網(wǎng)站。時(shí)間不夠用,很累。. 最后我改變了使用方式,效率提高了好幾倍。我也有更多的時(shí)間去做SEO的細節,大大增加了網(wǎng)站的流量。
  
  以上是小編采集網(wǎng)站的帝國,只要用心管理網(wǎng)站的帝國,采集的網(wǎng)站的流量也不錯!如果你想認識其他朋友,可以留言或私信我??赐赀@篇文章,如果覺(jué)得不錯,不妨采集起來(lái),或者送給需要的朋友同事!您的一舉一動(dòng)都將成為編輯源源不斷的動(dòng)力!

實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-11-29 21:09 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和實(shí)例(有些硬件實(shí)例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后根據它介紹的SDK開(kāi)發(fā)流程閱讀它提供的例子,并根據自己的需要修改相應的例子。自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,前面分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  
  加載相機對象
  卸載相機對象
  加載數據流以抓取對象
  卸載數據流以抓取對象
  單幀或連續捕捉過(guò)程
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,并封裝了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut完成圖像數據的重組,然后MIL自動(dòng)顯示。
  --------------------- 查看全部

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和實(shí)例(有些硬件實(shí)例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后根據它介紹的SDK開(kāi)發(fā)流程閱讀它提供的例子,并根據自己的需要修改相應的例子。自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,前面分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  
  加載相機對象
  卸載相機對象
  加載數據流以抓取對象
  卸載數據流以抓取對象
  單幀或連續捕捉過(guò)程
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,并封裝了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut完成圖像數據的重組,然后MIL自動(dòng)顯示。
  ---------------------

實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 144 次瀏覽 ? 2021-11-27 06:12 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝和配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和示例(有些硬件示例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有。)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后再閱讀他們介紹的SDK開(kāi)發(fā)流程提供的例子,修改相應的例子供自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,之前分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  加載相機對象
  
  卸載相機對象
  
  加載數據流以抓取對象
  
  卸載數據流以抓取對象
  
  單幀或連續捕捉過(guò)程
  
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,打包了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut來(lái)完成圖像數據的重組,然后MIL自動(dòng)顯示出來(lái)。 查看全部

  實(shí)時(shí)文章采集(機軟件開(kāi)發(fā)人員拿到一個(gè)硬件上位機編程SDK使用的手冊和實(shí)例)
  一般對于硬件編程的提供,硬件廠(chǎng)商都會(huì )提供SDK使用手冊和示例。手冊一般包括安裝和配置過(guò)程,一些基本概念的介紹,SDK各個(gè)功能的使用,SDK的使用過(guò)程和示例(有些硬件示例直接寫(xiě)在手冊中,有些會(huì )單獨存在文件,有些兩者都有。)。上位機軟件開(kāi)發(fā)者要拿到硬件上位機編程任務(wù),首先要閱讀理解SDK的概念,然后再閱讀他們介紹的SDK開(kāi)發(fā)流程提供的例子,修改相應的例子供自己使用。該函數可用于查詢(xún)其用法。一些開(kāi)發(fā)人員習慣性地記住他們的 API,費時(shí)費力,不推薦。下面主要用實(shí)時(shí)圖采集來(lái)講解Basler相機的PylonC SDK的使用過(guò)程。
  PylonC SDK的使用總體流程圖如下:
  
  以下是不同作業(yè)的要求,加載相機對象和卸載相機對象是常見(jiàn)的。當你想使用其他模塊,比如事件對象時(shí),可以相應地更改為加載事件對象和卸載事件對象,并使用事件對象來(lái)完成相關(guān)任務(wù)。編程的時(shí)候一定要規劃好整個(gè)過(guò)程,尤其是在編程硬件的時(shí)候,一定要注意內存泄漏,之前分配的資源一定要在后面釋放。
  下面是對五個(gè)主要流程的詳細分析,需要的地方已經(jīng)說(shuō)明,需要用到的功能都有注釋
  加載相機對象
  
  卸載相機對象
  
  加載數據流以抓取對象
  
  卸載數據流以抓取對象
  
  單幀或連續捕捉過(guò)程
  
  可以按照上面介紹的流程實(shí)現實(shí)時(shí)圖像采集
  源代碼下載鏈接。很多人問(wèn)我要源碼。我檢查了以前的程序文件夾,找到了這個(gè)程序。演示了使用Pylon SDK執行camera采集的過(guò)程,使用MIL完成界面展示,打包了采集部分。類(lèi)可以直接重用。測試相機是 Basler 相機。注意Pylon只完成Raw Data的采集,使用MIL的MbufPut來(lái)完成圖像數據的重組,然后MIL自動(dòng)顯示出來(lái)。

實(shí)時(shí)文章采集(環(huán)境說(shuō)明準備工作flume安裝暫略,后續更新(組圖) )

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 153 次瀏覽 ? 2021-11-26 16:32 ? 來(lái)自相關(guān)話(huà)題

  實(shí)時(shí)文章采集(環(huán)境說(shuō)明準備工作flume安裝暫略,后續更新(組圖)
)
  環(huán)境說(shuō)明準備水槽安裝
  暫時(shí)省略,后續更新
  水槽介紹
  Apache Flume 是一個(gè)分布式、可靠且可用的系統,用于有效地采集、聚合大量日志數據,并將其從許多不同來(lái)源移動(dòng)到集中式數據存儲。在大數據生態(tài)中,flume經(jīng)常被用來(lái)完成數據采集的工作。
  
  它的實(shí)時(shí)性非常高,延遲在1-2s左右,可以是準實(shí)時(shí)的。
  并且因為mysql是程序員常用的數據庫,所以以flume實(shí)時(shí)采集mysql數據庫為例。要了解flume 采集 數據是如何處理的,我們必須先探索它的架構:
  Flume運行的核心是Agent。Flume 以 agent 為最小的獨立運行單元。代理是一個(gè) JVM。它是一個(gè)完整的數據采集工具,具有三個(gè)核心組件,即
  源,通道,匯。通過(guò)這些組件,Event 可以從一處流向另一處,如下圖所示。
  
  三大組件
  來(lái)源
  Source是數據采集端,負責在數據被捕獲后進(jìn)行特殊格式化,將數據封裝在一個(gè)事件中,然后將事件推送到Channel中。
  Flume提供了多種源碼實(shí)現,包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source等,如果內置的Source不能滿(mǎn)足你的需求, Flume 還支持自定義 Source。
  可以看到原生flume的源碼不支持sql源碼,所以我們需要添加一個(gè)插件,如何添加后面會(huì )講到。
  渠道
  Channel是連接Source和Sink的組件。您可以將其視為數據緩沖區(數據隊列)。它可以將事件臨時(shí)存儲在內存中或將其持久保存在本地磁盤(pán)上,直到接收器處理完事件。
  對于Channel,Flume提供了Memory Channel、JDBC Chanel、File Channel等。
  下沉
  Flume Sink 取出Channel 中的數據,存儲在文件系統、數據庫中,或者提交到遠程服務(wù)器。
  Flume 還提供了各種 sink 實(shí)現,包括 HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink 等。
  當 Flume Sink 設置為存儲數據時(shí),您可以將數據存儲在文件系統、數據庫和 hadoop 中。當日志數據較小時(shí),可以將數據存儲在文件系統中,并設置一定的時(shí)間間隔來(lái)保存數據。當日志數據較多時(shí),可以將相應的日志數據存儲在Hadoop中,方便日后進(jìn)行相應的數據分析。
  在這個(gè)例子中,我使用 kafka 作為接收器
  下載flume-ng-sql-source插件
  在此下載flume-ng-sql-source,最新版本為1.5.3。
  下載后解壓,通過(guò)idea運行程序,用maven打包成jar包,重命名為flume-ng-sql-source-1.5.3.jar
  編譯好的jar包應該放在FLUME_HOME/lib下,FLUME_HOME是你linux下flume的文件夾,比如我的是/opt/install/flume
  卡夫卡安裝
  我們使用flume將數據采集傳輸到kafka,并啟動(dòng)kafak消費監控,可以看到實(shí)時(shí)數據
  jdk1.8 安裝
  暫時(shí)省略,后續更新
  動(dòng)物園管理員安裝
  暫時(shí)省略,后續更新
  卡夫卡安裝
  暫時(shí)省略,后續更新
  mysql5.7.24安裝
  暫時(shí)省略,后續更新
  Flume提取mysql數據到Kafka新建數據庫和表
  完成以上安裝工作后,就可以開(kāi)始實(shí)現demo了。
  首先,如果我們要抓取mysql數據,必須要有一個(gè)數據庫和表,并且記住數據庫和表的名稱(chēng),然后把這個(gè)信息寫(xiě)入flume配置文件中。
  創(chuàng )建數據庫:
  create database test
  創(chuàng )建一個(gè)表:
  create table fk(
id int UNSIGNED AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY ( id )
);
  新建配置文件(重要)
  cd到flume的conf文件夾并添加一個(gè)新文件mysql-flume.conf
  [root@localhost ~]# cd /opt/install/flume
[root@localhost flume]# ls
bin conf doap_Flume.rdf lib NOTICE RELEASE-NOTES tools
CHANGELOG DEVNOTES docs LICENSE README.md status
[root@localhost flume]# cd conf
[root@localhost conf]# ls
flume-conf.properties.template log4j.properties
flume-env.ps1.template mysql-connector-java-5.1.35
flume-env.sh mysql-connector-java-5.1.35.tar.gz
flume-env.sh.template mysql-flume.conf
  注:mysql-flume.conf原本不存在,是我自己生成的,具體配置如下
  在這個(gè)文件中寫(xiě)入:
  a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
a1.sources.src-1.hibernate.connection.user = root
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = testTopic
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  這是我的文件。一些私人信息已被其他字符串替換。寫(xiě)mysql-flume.conf的時(shí)候可以復制上面這段代碼。下面是這段代碼的詳細注釋?zhuān)憧梢杂酶嘧⑨尠姹镜拇a修改你的conf文件
  # a1表示agent的名稱(chēng)
# source是a1的輸入源
# channels是緩沖區
# sinks是a1輸出目的地,本例子sinks使用了kafka
a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
# 連接mysql的一系列操作,youhost改為你虛擬機的ip地址,可以通過(guò)ifconfig或者ip addr查看
# url中要加入?useUnicode=true&characterEncoding=utf-8&useSSL=false,否則有可能連接失敗
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
# mysql賬號,一般都是root
a1.sources.src-1.hibernate.connection.user = root
# 填入你的mysql密碼
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
# mysql驅動(dòng)
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# 驅動(dòng)版本過(guò)低會(huì )無(wú)法使用,驅動(dòng)安裝下文會(huì )提及
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
# 存放status文件
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
# 填寫(xiě)需要采集的數據表信息,你也可以使用下面的方法:
# agent.sources.sql-source.table =table_name
# agent.sources.sql-source.columns.to.select = *
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
# 使用kafka
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
# 這個(gè)項目中你創(chuàng )建的或使用的topic名字
a1.sinks.k1.topic = testTopic
# kafka集群,broker列表,由于我沒(méi)有使用集群所以只有一個(gè)
# 如果你搭建了集群,代碼如下:agent.sinks.k1.brokerList = kafka-node1:9092,kafka-node2:9092,kafka-node3:9092
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  將mysql驅動(dòng)添加到flume的lib目錄下
  wget https://dev.mysql.com/get/Down ... ar.gz
tar xzf mysql-connector-java-5.1.35.tar.gz
cp mysql-connector-java-5.1.35-bin.jar /你flume的位置/lib/
  啟動(dòng)動(dòng)物園管理員
  在啟動(dòng)kafka之前啟動(dòng)zookeeper
  cd到zookeeper的bin目錄
  啟動(dòng):
  ./zkServer.sh start
  等待運行
  ./zkCli.sh
  啟動(dòng)卡夫卡
  在xshell中打開(kāi)一個(gè)新窗口,cd到kafka目錄,啟動(dòng)kafka
  bin/kafka-server-start.sh config/server.properties &
  創(chuàng )建一個(gè)新主題
  bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
  注1:testTopic是你使用的主題名稱(chēng),對應上面mysql-flume.conf中的內容。
  注2:可以使用bin/kafka-topics.sh --list --zookeeper localhost:2181 查看創(chuàng )建的topic。
  啟動(dòng)水槽
  在xshell中打開(kāi)一個(gè)新窗口,cd到flume目錄,啟動(dòng)flume
  bin/flume-ng agent -n a1 -c conf -f conf/mysql-flume.conf -Dflume.root.logger=INFO,console
  等待他運行,同時(shí)我們可以打開(kāi)一個(gè)新窗口連接數據庫,使用我們新創(chuàng )建的test數據庫和fk表。
  實(shí)時(shí)采集數據
  Flume會(huì )實(shí)時(shí)將采集數據發(fā)送到kafka,我們可以啟動(dòng)一個(gè)kafak消費監控,用于查看mysql的實(shí)時(shí)數據
  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning
  這時(shí)候就可以查看數據了,kafka會(huì )打印mysql中的數據
  然后我們改變數據庫中的一條數據,新讀取的數據也會(huì )改變
  前:
  
  后:
   查看全部

  實(shí)時(shí)文章采集(環(huán)境說(shuō)明準備工作flume安裝暫略,后續更新(組圖)
)
  環(huán)境說(shuō)明準備水槽安裝
  暫時(shí)省略,后續更新
  水槽介紹
  Apache Flume 是一個(gè)分布式、可靠且可用的系統,用于有效地采集、聚合大量日志數據,并將其從許多不同來(lái)源移動(dòng)到集中式數據存儲。在大數據生態(tài)中,flume經(jīng)常被用來(lái)完成數據采集的工作。
  
  它的實(shí)時(shí)性非常高,延遲在1-2s左右,可以是準實(shí)時(shí)的。
  并且因為mysql是程序員常用的數據庫,所以以flume實(shí)時(shí)采集mysql數據庫為例。要了解flume 采集 數據是如何處理的,我們必須先探索它的架構:
  Flume運行的核心是Agent。Flume 以 agent 為最小的獨立運行單元。代理是一個(gè) JVM。它是一個(gè)完整的數據采集工具,具有三個(gè)核心組件,即
  源,通道,匯。通過(guò)這些組件,Event 可以從一處流向另一處,如下圖所示。
  
  三大組件
  來(lái)源
  Source是數據采集端,負責在數據被捕獲后進(jìn)行特殊格式化,將數據封裝在一個(gè)事件中,然后將事件推送到Channel中。
  Flume提供了多種源碼實(shí)現,包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source等,如果內置的Source不能滿(mǎn)足你的需求, Flume 還支持自定義 Source。
  可以看到原生flume的源碼不支持sql源碼,所以我們需要添加一個(gè)插件,如何添加后面會(huì )講到。
  渠道
  Channel是連接Source和Sink的組件。您可以將其視為數據緩沖區(數據隊列)。它可以將事件臨時(shí)存儲在內存中或將其持久保存在本地磁盤(pán)上,直到接收器處理完事件。
  對于Channel,Flume提供了Memory Channel、JDBC Chanel、File Channel等。
  下沉
  Flume Sink 取出Channel 中的數據,存儲在文件系統、數據庫中,或者提交到遠程服務(wù)器。
  Flume 還提供了各種 sink 實(shí)現,包括 HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink 等。
  當 Flume Sink 設置為存儲數據時(shí),您可以將數據存儲在文件系統、數據庫和 hadoop 中。當日志數據較小時(shí),可以將數據存儲在文件系統中,并設置一定的時(shí)間間隔來(lái)保存數據。當日志數據較多時(shí),可以將相應的日志數據存儲在Hadoop中,方便日后進(jìn)行相應的數據分析。
  在這個(gè)例子中,我使用 kafka 作為接收器
  下載flume-ng-sql-source插件
  在此下載flume-ng-sql-source,最新版本為1.5.3。
  下載后解壓,通過(guò)idea運行程序,用maven打包成jar包,重命名為flume-ng-sql-source-1.5.3.jar
  編譯好的jar包應該放在FLUME_HOME/lib下,FLUME_HOME是你linux下flume的文件夾,比如我的是/opt/install/flume
  卡夫卡安裝
  我們使用flume將數據采集傳輸到kafka,并啟動(dòng)kafak消費監控,可以看到實(shí)時(shí)數據
  jdk1.8 安裝
  暫時(shí)省略,后續更新
  動(dòng)物園管理員安裝
  暫時(shí)省略,后續更新
  卡夫卡安裝
  暫時(shí)省略,后續更新
  mysql5.7.24安裝
  暫時(shí)省略,后續更新
  Flume提取mysql數據到Kafka新建數據庫和表
  完成以上安裝工作后,就可以開(kāi)始實(shí)現demo了。
  首先,如果我們要抓取mysql數據,必須要有一個(gè)數據庫和表,并且記住數據庫和表的名稱(chēng),然后把這個(gè)信息寫(xiě)入flume配置文件中。
  創(chuàng )建數據庫:
  create database test
  創(chuàng )建一個(gè)表:
  create table fk(
id int UNSIGNED AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY ( id )
);
  新建配置文件(重要)
  cd到flume的conf文件夾并添加一個(gè)新文件mysql-flume.conf
  [root@localhost ~]# cd /opt/install/flume
[root@localhost flume]# ls
bin conf doap_Flume.rdf lib NOTICE RELEASE-NOTES tools
CHANGELOG DEVNOTES docs LICENSE README.md status
[root@localhost flume]# cd conf
[root@localhost conf]# ls
flume-conf.properties.template log4j.properties
flume-env.ps1.template mysql-connector-java-5.1.35
flume-env.sh mysql-connector-java-5.1.35.tar.gz
flume-env.sh.template mysql-flume.conf
  注:mysql-flume.conf原本不存在,是我自己生成的,具體配置如下
  在這個(gè)文件中寫(xiě)入:
  a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
a1.sources.src-1.hibernate.connection.user = root
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = testTopic
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  這是我的文件。一些私人信息已被其他字符串替換。寫(xiě)mysql-flume.conf的時(shí)候可以復制上面這段代碼。下面是這段代碼的詳細注釋?zhuān)憧梢杂酶嘧⑨尠姹镜拇a修改你的conf文件
  # a1表示agent的名稱(chēng)
# source是a1的輸入源
# channels是緩沖區
# sinks是a1輸出目的地,本例子sinks使用了kafka
a1.channels = ch-1
a1.sources = src-1
a1.sinks = k1
###########sql source#################
# For each one of the sources, the type is defined
a1.sources.src-1.type = org.keedio.flume.source.SQLSource
# 連接mysql的一系列操作,youhost改為你虛擬機的ip地址,可以通過(guò)ifconfig或者ip addr查看
# url中要加入?useUnicode=true&characterEncoding=utf-8&useSSL=false,否則有可能連接失敗
a1.sources.src-1.hibernate.connection.url = jdbc:mysql://youhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Hibernate Database connection properties
# mysql賬號,一般都是root
a1.sources.src-1.hibernate.connection.user = root
# 填入你的mysql密碼
a1.sources.src-1.hibernate.connection.password = xxxxxxxx
a1.sources.src-1.hibernate.connection.autocommit = true
# mysql驅動(dòng)
a1.sources.src-1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# 驅動(dòng)版本過(guò)低會(huì )無(wú)法使用,驅動(dòng)安裝下文會(huì )提及
a1.sources.src-1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.src-1.run.query.delay=5000
# 存放status文件
a1.sources.src-1.status.file.path = /opt/install/flume/status
a1.sources.src-1.status.file.name = sqlSource.status
# Custom query
a1.sources.src-1.start.from = 0
# 填寫(xiě)需要采集的數據表信息,你也可以使用下面的方法:
# agent.sources.sql-source.table =table_name
# agent.sources.sql-source.columns.to.select = *
a1.sources.src-1.custom.query = select `id`, `name` from fk
a1.sources.src-1.batch.size = 1000
a1.sources.src-1.max.rows = 1000
a1.sources.src-1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.src-1.hibernate.c3p0.min_size=1
a1.sources.src-1.hibernate.c3p0.max_size=10
################################################################
a1.channels.ch-1.type = memory
a1.channels.ch-1.capacity = 10000
a1.channels.ch-1.transactionCapacity = 10000
a1.channels.ch-1.byteCapacityBufferPercentage = 20
a1.channels.ch-1.byteCapacity = 800000
################################################################
# 使用kafka
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
# 這個(gè)項目中你創(chuàng )建的或使用的topic名字
a1.sinks.k1.topic = testTopic
# kafka集群,broker列表,由于我沒(méi)有使用集群所以只有一個(gè)
# 如果你搭建了集群,代碼如下:agent.sinks.k1.brokerList = kafka-node1:9092,kafka-node2:9092,kafka-node3:9092
a1.sinks.k1.brokerList = 10.100.4.6:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
  將mysql驅動(dòng)添加到flume的lib目錄下
  wget https://dev.mysql.com/get/Down ... ar.gz
tar xzf mysql-connector-java-5.1.35.tar.gz
cp mysql-connector-java-5.1.35-bin.jar /你flume的位置/lib/
  啟動(dòng)動(dòng)物園管理員
  在啟動(dòng)kafka之前啟動(dòng)zookeeper
  cd到zookeeper的bin目錄
  啟動(dòng):
  ./zkServer.sh start
  等待運行
  ./zkCli.sh
  啟動(dòng)卡夫卡
  在xshell中打開(kāi)一個(gè)新窗口,cd到kafka目錄,啟動(dòng)kafka
  bin/kafka-server-start.sh config/server.properties &
  創(chuàng )建一個(gè)新主題
  bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
  注1:testTopic是你使用的主題名稱(chēng),對應上面mysql-flume.conf中的內容。
  注2:可以使用bin/kafka-topics.sh --list --zookeeper localhost:2181 查看創(chuàng )建的topic。
  啟動(dòng)水槽
  在xshell中打開(kāi)一個(gè)新窗口,cd到flume目錄,啟動(dòng)flume
  bin/flume-ng agent -n a1 -c conf -f conf/mysql-flume.conf -Dflume.root.logger=INFO,console
  等待他運行,同時(shí)我們可以打開(kāi)一個(gè)新窗口連接數據庫,使用我們新創(chuàng )建的test數據庫和fk表。
  實(shí)時(shí)采集數據
  Flume會(huì )實(shí)時(shí)將采集數據發(fā)送到kafka,我們可以啟動(dòng)一個(gè)kafak消費監控,用于查看mysql的實(shí)時(shí)數據
  bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning
  這時(shí)候就可以查看數據了,kafka會(huì )打印mysql中的數據
  然后我們改變數據庫中的一條數據,新讀取的數據也會(huì )改變
  前:
  
  后:
  

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久