Esempio n. 1
0
 def keepAlive(self):
     m = {
         'enabled': self.enableDevice,
         'name': self.name,
         'id': self.getId()
     }
     message = genericMessage("keep-alive", self.group_id, m, self.group_id,
                              self.replication)
     self.producer.send(Device.admin_topic, message)
Esempio n. 2
0
 def getConfig(self, name, message):
     message = {
         'name': self.name,
         'type': self.type,
         'tags': self.tags,
         'replication': self.replication,
         'scantime': self.scantime
     }
     self.producer.send(
         Device.admin_topic,
         genericMessage("config-" + self.type, self.name, message, name,
                        self.replication))
Esempio n. 3
0
    def monitor(self):
        """
        Monitors the localhost's cpu/ram/io usage and sends it out on the Kafka topic
        _monitor.<hostname>

        """
        tags = {}
        tags["cpu"] = psutil.cpu_percent()
        mem = psutil.virtual_memory()
        tags["mem_total"] = mem[0]
        tags["mem_available"] = mem[1]
        tags["mem_percent"] = mem[2]
        tags["mem_used"] = mem[3]
        tags["mem_free"] = mem[4]
        tags["mem_active"] = mem[5]
        tags["mem_inactive"] = mem[6]
        tags["mem_buffers"] = mem[7]
        tags["mem_cached"] = mem[8]
        tags["mem_shared"] = mem[9]
        tags["mem_slab"] = mem[10]
        cputimes = psutil.cpu_times()
        tags["cpu_user"] = cputimes[0]
        tags["cpu_nice"] = cputimes[1]
        tags["cpu_system"] = cputimes[2]
        tags["cpu_idle"] = cputimes[3]
        tags["cpu_iowait"] = cputimes[4]
        tags["cpu_irq"] = cputimes[5]
        tags["cpu_softirq"] = cputimes[6]
        tags["cpu_steal"] = cputimes[7]
        tags["cpu_guest"] = cputimes[8]
        tags["cpu_guest_nice"] = cputimes[9]
        loadavg = psutil.getloadavg()
        tags["load_avg_1min"] = loadavg[0]
        tags["load_avg_5min"] = loadavg[1]
        tags["load_avg_15min"] = loadavg[2]
        diskusage = psutil.disk_usage('/')
        tags["diskusage_total"] = diskusage[0]
        tags["diskusage_used"] = diskusage[1]
        tags["diskusage_free"] = diskusage[2]
        tags["diskusage_percent"] = diskusage[3]

        message = {
            'name': self.hostname,
            'type': "agent",
            'tags': tags,
            'replication': 2,
            'scantime': WATCHDOG_TIMEOUT
        }
        self.producer.send(
            "_monitor." + self.hostname,
            genericMessage("update", self.hostname, message, self.hostname, 2))
Esempio n. 4
0
 def updateTagValue(self, tag):
     message = {
         'id': random.randint(0, 1000000),
         'name': tag["name"],
         'value': self.tagTypes[tag["type"]](tag),
         'description': tag["description"],
         'rawlow': tag["rawlow"],
         'rawhigh': tag["rawhigh"],
         'englow': tag["englow"],
         'enghigh': tag["enghigh"],
         'eu': tag["eu"],
         'type': tag["type"]
     }
     tag["value"] = message['value']
     self.producer.send(
         self.name,
         genericMessage("tag-update", self.group_id + "." + tag['name'],
                        message))
Esempio n. 5
0
    def getClientConfig(self, name):
        """
        Get Dictionary of running ckSCADA components

        Send the dictionary to Kafka, including the process name and component type
        """
        message = {}
        try:
            for p in self.processes:
                if self.processes[p]['type'] == 'client':
                    message[p] = type(self.processes[p]['process']).__name__
            self.producer.send(
                self.admin_topic,
                genericMessage("client-config", self.group_id, message, name))
        except Exception as e:
            self.logger.log("Failed to send config update on " +
                            self.hostname + ". Using topic " +
                            self.admin_topic + " with message " + str(message))
            self.logger(e)
Esempio n. 6
0
 def updateTagValue(self, tag, message):
     self.producer.send(self.name, genericMessage("tag-update", tag,
                                                  message))