kairostech-sw / kairoshub-configuration

0 stars 0 forks source link

Statistics push #6

Closed mfinotti closed 2 years ago

mfinotti commented 2 years ago

Statistics push 2/2

Predisporre una nuova applicazione appdaemon che si occuperà di impacchettare le statistiche e di inviarle sull'apposito TOPIC Kafka HASSIO_SYSTEM_METRICS. Passo 1 del task

Task da completare

Nuova applicazione appdaemon

Aggiungere una nuova applicazione appdaemon chiamata systemMetrics. Oltre a creare la classe sulla falsa riga della classe HelloWorld è necessario aggiungerla al bootstrap di appdaemon, ovvero, nel file apps.yaml

Get valori dai sensori

Recuperare lo stato dei sensori statistici creati nella issue collegata, ovvero:

Impacchettare il messaggio

Impacchettare il messaggio da inviare come di seguito:

statMessage["disk_use"] = _valore disk_usepercent statMessage["memory_use"] = _valore memory_usepercent statMessage["processor_use"] = _valore processoruse statMessage["processor_temperature"] = _valore processortemperature statMessage["last_boot"] = _valore lastboot statMessage["processor_max_use"] = _valore processor_use, attributo maxvalue

UPDATE 01/09/2022 Aggiungere al pacchetto l'informazione sul massimo utilizzo della CPU. Questa informazione è disponibile come attributo della entity dedicata al processo_use. image

Dispatch evento

Una volta impacchettato il messaggio aggiungere le informazioni aggiuntive necessarie a avere un messaggio sintatticamente corretto.

eventData = { "eventType" : "TECHNICAL", "systemCode": systemCode, "platform" : "HASSIO_EVENT", "message" : "STATISTICS PUSH", "technicalMessage": statMessage }

systemCode: _valore input_text.system_code_

In fine, si può dispatchare l'evento per permettere al proder kafka di inviare le metriche calcolate al cloud. self.fire_event("HAKAFKA_PRODUCER_PRODUCE", topic="HASSIO_SYSTEM_METRICS", message=eventData)

mfinotti commented 2 years ago

UPDATE 28/09/2022 Diversamente da come descritto nella sezione Dispatch evento, il messaggio viene impacchettato nel seguente modo:

eventData = { "eventType" : "STATISTICS_PUSH", "systemCode": {systemCode}, "message" : "STATISTICS PUSH", "technicalMessage": statMessage }

E viene dispatchato l'evento come di seguito: self.fire_event("HAKAFKA_PRODUCER_PRODUCE", topic="TECHNICAL", message=eventData)