hyspider之智慧型運維監控

2021-09-08 15:48:36 字數 3265 閱讀 7789

借助scrapyd,可以通過http請求遠端排程爬蟲。

#scrapy.cfg中加入deploy配置

#scrapyd安裝

pip install scrapyd

#啟動scrapyd,scrapyd-deploy上傳的檔案存放到~

#安裝scrapyd-client

pip install scrapyd-client

cd hyspider

#上傳hyspider到scrapyd

scrapyd-deploy

類似crontab,讓爬蟲每天定時執行:

所有渠道電影每天更新一次

所有渠道電影每天匹配一次

所有渠道**每天更新一次,**資訊請求量大,爬取可能失敗,每間隔5分鐘檢查一次是否還有**資訊需要重新爬取

每間隔17分鐘檢視**是否更新完畢,並進行**彙總更新price表

每間隔1小時更新影院最低價

每天刪除一次過期**

排程採用apscheduler,並記錄爬取狀態,由於資源有限,只爬取固定幾個城市的資訊,也可以通過命令列傳參主動啟動爬蟲和匹配過程。

ops.py原始碼:

usage: python ops.py [option]

-h or --help:顯示幫助資訊

-s or --schedule: 系統自動排程更新

-m or --movie: 更新電影資訊

--match-movie: 多渠道電影匹配

-c or --cinema:更新某個城市影院資訊,例如: -c 上海

--match-cinema: 某個城市多渠道影院匹配,例如: --match-cinema 上海

-p or --price:更新某個城市**資訊,例如: -p 上海

--match-price:某個城市多渠道**匹配,例如: --match-price 上海

monitor原始碼:

from hyspider.manager.price import pricemanager

from wxpy import *

# 初始化機械人

bot = bot()

# group_receiver = ensure_one(bot.groups().search('惠電影'))

me = bot.friends().search('jin')[0]

logger = get_wechat_logger(bot.file_helper)

sch = blockingscheduler()

price_manager = pricemanager.clone()

@sch.scheduled_job('cron', hour='6,7,8,9,10', id='notice_price_update_status')

def notice_price_update_status():

msg = price_manager.get_price_update_status()

logger.warning(msg)

@bot.register([me, bot.file_helper], text, except_self=false)

def get_price_update_status(msg):

print(msg)

if msg.text == 'h':

logger.warning("""

h: show help

s: get status

c: crawlers status

rs: restart scrapyd

ro: restart ops.py

""")

elif msg.text == 's':

notice_price_update_status() # 檢視**爬取狀態

elif msg.text == 'c':

from hyspider.settings import bot_name, scrapyd_server

import requests

import json

params =

rsp = requests.get(scrapyd_server + '/listjobs.json', params) # 檢視scrapyd上爬蟲執行狀態

res = json.loads(rsp.text)

running = res['running']

pending = res['pending']

s = '{} running, {}'.format(len(running), running)

logger.warning(s)

s = '{} pending, {}'.format(len(pending), pending)

logger.warning(s)

elif msg.text == 'rs':

ret_code = restart_process('scrapyd')

logger.warning(ret_code)

# 重啟scrapyd

def restart_process(process_name):

"""根據程序名重啟程序"""

import psutil

pid_list = psutil.pids()

for pid in pid_list:

try:

each_pro = psutil.process(pid)

if process_name.lower() in each_pro.name().lower():

each_pro.terminate()

each_pro.wait(timeout=3)

except psutil.nosuchprocess:

pass

cmd = 'start scrapyd -d {}'.format(os.path.expanduser('~'))

return os.system(cmd)

if __name__ == '__main__':

sch.start()

這樣,手機在手,就可以控制爬蟲了。

Linux系統運維之運維監控 pdf格式

linux系統運維之運維監控 本文是系統運維工程師的實用手冊 主要講解基於 linux 平台運維工作中需要掌握的監控知識 本文全部基於實際應用 部署步驟詳細 可以直接複製用於生產環境的安裝配置 幫助剛剛接觸 linux運維的朋友們,迅速搭建企業級的監控平台。本文共分為五個部分 第一部分簡單的介紹了監...

監控與運維

監控神器 普羅公尺修斯prometheus elk elasticsearch logstash和kibana。一種很典型的mvc思想,模型持久層,檢視層和控制層。logstash擔任控制層的角色,負責蒐集和過濾資料。elasticsearch擔任資料持久層的角色,負責儲存資料。kibana擔任檢視...

01 運維監控

聽聞前輩所說,在監控不發達的時代,出行基本靠走,安全基本靠狗,那個時候沒有自動化監控的概念,都是人工盯著機器,進行輪班 每天上班第一件事情就是去巡視一下,看看各項軟體列印的資訊是否有異常,順便拿execl記錄一下。現在如今的企業中,運維就要負責成百上千臺的機器,傳統的方式依然不行,沒有高大上的方法是...