Exemple #1
0
        def __init__(self, connection):
            self.module_name = "monitor"
            self.connection = connection
            self.timestamp = -1
            self.prefix_tree = None
            self.process_ids = []
            self.rules = None
            self.prefixes = set()
            self.prefix_file = "/root/monitor_prefixes.json"
            self.monitors = None
            self.flag = True
            self.redis = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
            ping_redis(self.redis)
            self.correlation_id = None

            # EXCHANGES
            self.config_exchange = create_exchange("config", connection)

            # QUEUES
            self.config_queue = create_queue(
                self.module_name,
                exchange=self.config_exchange,
                routing_key="notify",
                priority=2,
            )

            signal_loading(self.module_name, True)
            self.config_request_rpc()

            # setup Redis monitor listeners
            self.setup_redis_mon_listeners()

            log.info("started")
            signal_loading(self.module_name, False)
Exemple #2
0
        def __init__(self, connection):
            self.module_name = "mitigation"
            self.connection = connection
            self.timestamp = -1
            self.rules = None
            self.prefix_tree = None
            self.correlation_id = None

            # EXCHANGES
            self.mitigation_exchange = create_exchange("mitigation",
                                                       connection,
                                                       declare=True)
            self.config_exchange = create_exchange("config", connection)

            # QUEUES
            self.config_queue = create_queue(
                self.module_name,
                exchange=self.config_exchange,
                routing_key="notify",
                priority=3,
            )
            self.mitigate_queue = create_queue(
                self.module_name,
                exchange=self.mitigation_exchange,
                routing_key="mitigate",
                priority=2,
            )

            signal_loading(self.module_name, True)
            self.config_request_rpc()
            signal_loading(self.module_name, False)
Exemple #3
0
 def handle_config_request_reply(self, message):
     message.ack()
     signal_loading(self.module_name, True)
     log.debug("message: {}\npayload: {}".format(message, message.payload))
     if self.correlation_id == message.properties["correlation_id"]:
         config = message.payload
         if config["timestamp"] > self.timestamp:
             self.timestamp = config["timestamp"]
             self.autoignore_rules = config.get("autoignore", [])
             self.build_prefix_tree()
             self.set_rule_timers()
     signal_loading(self.module_name, False)
Exemple #4
0
 def __init__(self, d, fn, connection):
     super().__init__()
     self.connection = connection
     self.correlation_id = None
     signal_loading("observer", True)
     self.response = None
     self.path = "{}/{}".format(d, fn)
     try:
         with open(self.path, "r") as f:
             self.content = f.readlines()
     except Exception:
         log.exception("exception")
     finally:
         signal_loading("observer", False)
Exemple #5
0
        def __init__(self, connection):
            self.module_name = "autoignore"
            self.connection = connection
            self.prefix_tree = None
            self.autoignore_rules = None
            # https: // docs.celeryproject.org / projects / kombu / en / stable / reference / kombu.asynchronous.timer.html
            # https://docs.celeryproject.org/projects/kombu/en/stable/_modules/kombu/asynchronous/timer.html#Timer
            self.rule_timer_threads = {}
            self.timestamp = -1

            # DB variables
            self.ro_db = DB(
                application_name="autoignore-readonly",
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT,
                database=DB_NAME,
                reconnect=True,
                autocommit=True,
                readonly=True,
            )
            self.wo_db = DB(
                application_name="autoignore-write",
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT,
                database=DB_NAME,
            )

            # EXCHANGES
            self.config_exchange = create_exchange("config", connection)

            # QUEUES
            self.config_queue = create_queue(
                self.module_name,
                exchange=self.config_exchange,
                routing_key="notify",
                priority=3,
            )

            # redis db
            self.redis = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
            ping_redis(self.redis)

            signal_loading(self.module_name, True)
            self.config_request_rpc()
            signal_loading(self.module_name, False)
Exemple #6
0
 def handle_config_notify(self, message):
     message.ack()
     log.debug("message: {}\npayload: {}".format(message, message.payload))
     signal_loading(self.module_name, True)
     try:
         raw = message.payload
         if raw["timestamp"] > self.timestamp:
             self.timestamp = raw["timestamp"]
             self.rules = raw.get("rules", [])
             self.monitors = raw.get("monitors", {})
             self.start_monitors()
     except Exception:
         log.exception("Exception")
     finally:
         signal_loading(self.module_name, False)
Exemple #7
0
 def handle_config_notify(self, message):
     message.ack()
     log.debug("message: {}\npayload: {}".format(message, message.payload))
     signal_loading(self.module_name, True)
     try:
         config = message.payload
         if config["timestamp"] > self.timestamp:
             self.timestamp = config["timestamp"]
             self.autoignore_rules = config.get("autoignore", {})
             self.build_prefix_tree()
             self.set_rule_timers()
     except Exception:
         log.exception("Exception")
     finally:
         signal_loading(self.module_name, False)
Exemple #8
0
        def __init__(self, connection):
            self.module_name = "clock"
            self.clock = 0.0
            self.connection = connection
            # Time in secs to gather entries to perform a bulk operation
            self.time_to_wait_bulk = BULK_TIMER
            self.correlation_id = None

            self.db_clock_exchange = create_exchange("db-clock",
                                                     connection,
                                                     declare=True)

            signal_loading(self.module_name, True)
            log.info("started")
            signal_loading(self.module_name, False)
            self._db_clock_send()