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)
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))
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))
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))
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)
def updateTagValue(self, tag, message): self.producer.send(self.name, genericMessage("tag-update", tag, message))