分佈式監控系統開發【day38】:報警策略隊列處理(五)

1、目錄結構

2、報警策略隊列處理

一、入口MonitorServer

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CrazyMonitor.settings")
    from monitor.backends.management import execute_from_command_line
    execute_from_command_line(sys.argv)

二、啓動調用management

    def trigger_watch(self):
        '''start to listen triggers'''
        trigger_watch = trigger_handler.TriggerHandler(settings)
        trigger_watch.start_watching()

三、實例化

一、支持三個參數,啓動、中止監控觸發器python

二、經過反射的形式,
三、監聽全部的觸發器
四、同一個頻道,聲明一下就開始接收了redis

class TriggerHandler(object):

    def __init__(self,django_settings):
        self.django_settings = django_settings
        self.redis = redis_conn.redis_conn(self.django_settings)
        self.alert_counters ={} #紀錄每一個action的觸發報警次數
        '''alert_counters = {
            1: {2:{'counter':0,'last_alert':None}, #k 1是主機id, {2:{'counter'}} 2是trigger id
                4:{'counter':1,'last_alert':None}},  #k是action id, 
            #2: {2:0},
        }'''

3、打開收音機準備挺廣播

一、功能以下

一、打開收音機
二、調頻
三、準備接聽
四、阻塞有數據的話,就往下走django

二、實現代碼

    def start_watching(self):
        '''
        start listening and watching the needed to be handled triggers from other process
        :return:
        '''

        radio = self.redis.pubsub() #打開收音機
        radio.subscribe(self.django_settings.TRIGGER_CHAN) #調頻
        radio.parse_response() #ready to watch 準備接聽
        print("\033[43;1m************start listening new triggers**********\033[0m")
        self.trigger_count = 0
        while True:
            msg = radio.parse_response() #阻塞有數據的話,就往下走
            self.trigger_consume(msg)

三、調頻頻道設置 

settings配置以下內容blog

TRIGGER_CHAN = 'trigger_event_channel'
相關文章
相關標籤/搜索