Indice [TOC] --- # Tranferencia Thingsboard ###### tags: `epec_gc` `epec` `tranferencia` ## Día 1 - [ ] ver cuantos ambientes tenemos - [ ] EPEC-GC: nombres de refencia: (Martin Arrieta) - [ ] EPEC-Residenciales: Lucia - [ ] EDELAP: Lucia - [ ] SGC: Lucia - [ ] EPEC-Residenciales v2: Lucia - [ ] Preventa: Lucia - [ ] proyectos de deploy - EPEC-GC: Manual (se esta re-acomodando) - link: [epec-deploy](https://gitlab.ascentio.com.ar/teleco/epec/epec-deploy) - EPEC-Residenciales: Ansible - link: [epec-residenciales-deploy](https://gitlab.ascentio.com.ar/teleco/epec/epec-residenciales-deploy) - Preventa: - link: [epec-residenciales-deploy](https://gitlab.ascentio.com.ar/teleco/epec/epec-residenciales-deploy) ## Dia 2 ### Dudas - [ ] Bugs y Workarounds conocidos: - el gateway tiene un bug que al desconectarse del brocker no se reconecta al thingsboard: - opcion a: lo que se me ocurre es que actualicen los gateways a la implememtacion de GC y que puedan hacer el fix de este error en ese proyecto. - opcion b: implementar el fix en el proyecto gateway que usa residenciales, esto tambien deberia ser replicado en el gateway de GC porque lso medidores circutor tienen la misma arquitectura. - Las extensiones de mqtt-gateway tienen un limite de variables para mapear. Alcanzando ese limite(que no es definido en ningun lado) es imposible modificar ningun mapeo y que el gateway sincronice nuevamente. - opcion a: se puede intentar separar las variables en base a los tipos de lectura. - opcion b: en el caso que se tenga un modo de lectura con muchas variables y se supere el limite: en este caso se puede dividir el mapeo entre dos gateways. en este punto hay que tener cuidado que las variables mapeadas en los gateways se guarden con el mismo timestamp. - opcion c: mejorar la implementacion del gateway. - [ ] Proyectos gateways: - gateway de GC : [thingsboard-gateway](https://gitlab.ascentio.com.ar/teleco/epec/thingsboard-gateway) - gateway (tiene poco mantenimiento) : [thingsboard-gateway](https://gitlab.ascentio.com.ar/thingsboard/thingsboard-gateway) - [ ] Pro y contra de migracion de gateway - es una cuestion de riesgos. - [C] en el caso de GC, habria que reimplementar todas las extenciones customizadas. - [P] tiene menor uso de recursos (RAM) - no se puede dar una evaluacion hoy muy clara por las cambian ya que el proyecto de gateway en python esta en desarrollo. - Si la idea es seguir con thingsboard, habria que planificar este upgrade. - para tener una mejor evaluacion habria que hacer pruebas con las cosas que ya tenemos. - [ ] Limitaciones de uso de DB y su seleccion - el uso de DB depende de la version. En la version 2.3 (la actual) soporta Postgres y Casandra. En la verison 3 soporta Postgres, Casandra y TimescaleDB. - la seleccion de la DB depende de la infraestructura que se tenga. - Nota: Thingsboard te recomienda usar postgres en pruebas de concepto o en pequeña escala. Para produccion te recomienda formas hibridas: Hybrid1 (PostgreSQL + Cassandra) o Hybrid2 (PostgreSQL + TimescaleDB) - Un camino de mejora, puede ser: - paso 1: actualizar la plataforma a thingsboard 3. - paso 2: (en un ambiente de test) hacer pruebas de performance con postgres - paso 3: comparar la performance entre tb2 y tb3 - paso 4: migracion de postgres - paso 5: evaluar la platforma con el modo Hybrid2 (PostgreSQL + TimescaleDB). Y luego repetir los pasos 2,3 y 4 en esta nueva arquitectura. ## Dia 3 - [ ] Limitaciones en el mapping de variables en la extencion MQTT - Ticket de jira: https://jira.ascentio.com.ar/browse/EPEC-1061 - El gateway tiene un cliente MQTT que se configura con los mapping y hace el procesamiento (creo) en una libreria interna de thingsboard - [ ] Apis: Rest, MQTT - MQTT - HTTP - swagger - java lib: tiene una version comunity y PE - python lib: tiene una version comunity y PE - [ ] se rompe kafka - suele darse cuando regeneramos los containers - lo veo en los logs, es que las particiones de kafka tienen un ID que lo genera cada servicio. Cuando se vuelven a conectar los ID de los servicios cambiaron y se comunicacion con las particiones de kafka - solución: **borrar todos los servicios (con sus volumenes) y regenerar de nuevo**. ```bash sudo docker-compose stop sudo docker-compose rm -v sudo docker-compose up -d ``` ### temas - [ ] Backup DB - [ ] Mantenimientos - borrar telemetria de las bases de datos. - - [ ] jenkins - link: [epec-gc-taskforce](https://gitlab.ascentio.com.ar/teleco/epec/tools/epec-gc-taskforce) - - [ ] ver los componentes de thingsboard - [ ] demos ## Dia 4 - [ ] backup - **creo que esta** en 100% de los deploys, queda pendiente revisar cada ambiente. - hoy tenemos: - imagen docker usada para generar los backups: https://github.com/prodrigestivill/docker-postgres-backup-local - la consiguracion esta en el docker compose, por lo generan donde esta la base de datos - para el restore (yo no lo he ejecutado) se tiene las siguientes opciones: - [restauración local](https://github.com/prodrigestivill/docker-postgres-backup-local#restore-locally): `zcat backupfile.sql.gz | docker exec --tty --interactive $CONTAINER psql --username=$USERNAME --dbname=$DBNAME -W` - [restauración remota](https://github.com/prodrigestivill/docker-postgres-backup-local#restore-to-a-remote-server): `zcat backupfile.sql.gz | docker run --rm --tty --interactive postgres:$VERSION psql --host=$HOSTNAME --port=$PORT --username=$USERNAME --dbname=$DBNAME -W` - ejemplo de backups: `ls /opt/thingsboard/backups/*/` ```bash administrator@pocepec:/opt/thingsboard$ ls /opt/thingsboard/backups/*/ /opt/thingsboard/backups/daily/: thingsboard-20200504-000000.sql.gz thingsboard-20200507-000000.sql.gz thingsboard-20200510-000000.sql.gz thingsboard-20200513-000000.sql.gz thingsboard-20200516-000000.sql.gz thingsboard-20200505-000000.sql.gz thingsboard-20200508-000000.sql.gz thingsboard-20200511-000000.sql.gz thingsboard-20200514-000000.sql.gz thingsboard-20200506-000000.sql.gz thingsboard-20200509-000000.sql.gz thingsboard-20200512-000000.sql.gz thingsboard-20200515-000000.sql.gz /opt/thingsboard/backups/monthly/: thingsboard-202004.sql.gz thingsboard-202005.sql.gz /opt/thingsboard/backups/weekly/: thingsboard-202015.sql.gz thingsboard-202016.sql.gz thingsboard-202017.sql.gz thingsboard-202018.sql.gz thingsboard-202019.sql.gz thingsboard-202020.sql.gz administrator@pocepec:/opt/thingsboard$ ``` - ejemplo de una configuración en epec GC: ```yaml pgbackups: image: prodrigestivill/postgres-backup-local:11 restart: always volumes: - "${BACKUPS_DIR:-.}/backups:/backups" depends_on: - postgres environment: - POSTGRES_HOST=postgres - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${SPRING_DATASOURCE_USERNAME} - POSTGRES_PASSWORD=${SPRING_DATASOURCE_PASSWORD} - POSTGRES_EXTRA_OPTS=-Z9 --schema=public --blobs - SCHEDULE=@daily - BACKUP_KEEP_DAYS=7 - BACKUP_KEEP_WEEKS=4 - BACKUP_KEEP_MONTHS=6 - HEALTHCHECK_PORT=80 ``` - [ ] Escalado vertical y horizontal de TB - depende de la arquitectura - hay que ver la arquitectura de thingsboard ![](https://i.imgur.com/WsHBRlL.png) - el escaldo del lado de los gateways, por defecto se pueden escalar, pero hay que revisar los servicios implementados por ASC. Por ejemplo: el server de circutor se conecta a los medidores y hace las lecturas, hay que ver si este server se puede escalar horizontalmente. - [escenarios de deploy](https://thingsboard.io/docs/reference/iot-platform-deployment-scenarios/) - [ ] thingsboard 3 - [ ] los widgets personalizados son incompatibles con los implementados en la version 2.3 - [widgets-development-before-3.0](https://thingsboard.io/docs/user-guide/contribution/widgets-development-before-3.0/) - [widgets-development](https://thingsboard.io/docs/user-guide/contribution/widgets-development/) - [ ] La gestion de los mapping desde la UI ya no existe (seguramente en una version futura vuelve). Ahora los mapping tienen que estar en los archivos de deploy de los gateways. - [ ] Los mapping usados para la tranformación de datos, son incompatibles con los nuevos gateways. - Esta es la doc para conectar los gateways nuevos [link](https://thingsboard.io/docs/iot-gateway/config/mqtt/) - Notar que esto no nos sirve, a excepcion si el gateway que estamos integrando sea el nuevo (hecho en python) ## Dia X - [ ] dudas - [ ] planes futuros: repasemos idea de mejoras y buenas practicas # Mejoras y recomendaciones - [R] mantener 1 solo proyecto gateway, para que los fix se puedan aplicar a todos los ambientes de deploy - [R] lo ideal seria que se tenga un solo proyecto gateway, - con los fix internos que hagamos. - con las extenciones compartidas. - [R] Re-definir la forma en la que llamamos a los proyectos, gateway, deberia ser un solo proyecto y se corresponde al de thingsboard.