tutorial software gestión gumnet 1

46
Tutorial Software Gestión GuMNet 1.0 interMET Sistemas y Redes, S.L.U. 27/07/2016

Upload: others

Post on 19-Nov-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Tutorial Software GestiónGuMNet 1.0

interMET Sistemas y Redes, S.L.U.27/07/2016

● Gestión datos:○ Inserción ○ Importación○ Control de calidad○ Copia de seguridad

2

● Inventario:○ Gestión red○ Gestión estación○ Gestión variables○ Gestión series temporales○ Gestión equipos○ Gestión contactos

● Consultas

ÍNDICE

Gestión datos

3

Gestión datos:

4

Importación de archivos de muestras:

1. Inserción del archivo como inventario.2. Importación de sus datos como intervalos.

De esta forma:

● Máxima celeridad de inserción.○ Acorta conexión con datalogger.○ Demora importación.

● Inserción se hará si existe un archivo y es legible.● Importación depende del formato y la presencia de errores.

Bajada archivos a “inbound”

Inserción Importación Control de calidad

Tickets: FallosTickets: Archivos insertados y no importados

Tickets: FallosGráficosMuestras

Gestión datos: INSERCIÓN

5

Archivo datalogger Gumnet = [fichero ASCII, delimitado por ;] + [Cabecera]

Insertar archivos en el inventario:python -m gumnet.ops.samplefile insert-files <ruta-al-archivo>

Ejemplos:

Ejemplos:

Insertar todos los archivos G001* en el inventario:python -m gumnet.ops.samplefile insert-files --threads 4 $(find /home/gumnet/server/0001_gumnet/inbound -name 'G001*' -type f)

Gestión datos: INSERCIÓN

6

Listado archivos insertados:python -m gumnet.inventory.samplefile list

Ejemplo: (Buscamos el archivo que hemos insertado y comprobamos que está)

Gestión datos: INSERCIÓN

7

Últimos archivos insertados de cada estación:for STATION in {\G001001,G001002,G001003,G001004,G001005,\G001006,G001007,G001008,G001009,G001010\}; do python -m gumnet.inventory.samplefile list \ --meta "{\"Station\": \"$STATION\"}" \ --table FileDate --page 1 --order-by FileDate:desc \| tail -n +5 | head -n +1 \| awk -v STATION=$STATION '{print STATION " " $2 " " $3}';\done

Gestión datos: INSERCIÓN

8

Tickets FALLO inserción:python -m gumnet.ops.samplefile insert-failed --files

Ejemplo:

Gestión datos: INSERCIÓN

9

ELIMINAR Tickets FALLOS inserción:python -m gumnet.ops.samplefile insert-remove-failed-files $(python -m gumnet.ops.samplefile insert-failed --file-list)

Gestión datos: IMPORTACIÓN

10

Importar archivos a la base de datos:python -m gumnet.ops.samplefile parse-files

Tickets FALLO importación:python -m gumnet.ops.samplefile parse-failed

Es posible modificar los archivos corrigiendo el error con un editor de texto y volverlos a importar.python -m gumnet.ops.samplefile parse-files --reparse

Si no fuera posible su modificación se puede eliminar referenciándolo a su UUID:

ID=XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX; python -m gumnet.inventory.samplefile delete --id "$ID"; python -m gumnet.ops.samplefile insert-remove-failed-files “$ID”; rm "$ID"

Gestión datos: Control de calidad

11

Representación gráfica series temporales:python -m gumnet.interval.timeseries query --timeseries 'G001003.WSPD01#10MN.AVG,G001003.WSPD02#10MN.AVG' --ts-begin 2016-01-01 --ts-end 2016-03-31 --plot

Gestión datos: Control de calidad

12

Representación gráfica series temporales:

Gestión datos: Control de calidad

13

Visualización de muestras:python -m gumnet.interval.samples query --channels 'G001003.TA01_Avg,G001004.TA01_Avg,G001006.TA01_Avg,G001007.TA01_Avg' --ts-begin 2016-02-01 --ts-end 2016-02-02

Gestión datos: Control de calidad

14

Visualización de series temporales:python -m gumnet.interval.timeseries query --timeseries 'G001003.TMPA01#10MN.AVG,G001004.TMPA01#10MN.AVG,G001006.TMPA01#10MN.AVG,G001007.TMPA01#10MN.AVG' --ts-begin 2016-02-01 --ts-end 2016-02-02

15

Últimos archivos insertados de cada estación:for STATION in {\G001001,G001002,G001003,G001004,G001005,\G001006,G001007,G001008,G001009,G001010\}; do python -m gumnet.inventory.samplefile list \ --meta "{\"Station\": \"$STATION\"}" \ --table FileDate --page 1 --order-by FileDate:desc \| tail -n +5 | head -n +1 \| awk -v STATION=$STATION '{print STATION " " $2 " " $3}';\done

Gestión datos: Control de calidad

Gestión datos: Copia de seguridad

16

Procedimientos habituales para mantener copias de seguridad en PostgreSQL:

● Volcado y restauración.● Copia del sistema de archivos.● Archivo continuo.

Gestión datos: Copia de seguridad

17

Volcado y restauración

Volcar toda la base de datos en un único archivo SQL (aquí comprimido con bzip2):

pg_dump | bzip2 >gumnet-$(date +"%Y%m%d").sql.bz2

La recuperación consiste en partir de una base de datos vacía y ejecutar las instrucciones SQL obtenidas de pg_dump:

bunzip2 -c gumnet-20160526.sql.bz2 | psql

Gestión datos: Copia de seguridad

18

Copia del sistema de archivosLa base de datos PostgreSQL puede archivarse haciendo copia de seguridad de los archivos que gestiona. Estos archivos están protegidos por permisos, por lo que es necesario ser superusuario.

Antes es necesario detener el servidor.

En CentOS los archivos se encuentran bajo /usr/local/psql/data y pueden guardarse, por ejemplo, con:

sudo service postgresql stopsudo tar cjvf \ gumnet-$(date +"%Y%m%d").tar.bz2 /usr/local/psql/datasudo service postgresql start

La restauración se realiza de la misma forma:

sudo service postgresql stopsudo rm -rf /usr/local/psql/datasudo tar xjvf \ gumnet-$(date +"%Y%m%d").tar.bz2sudo service postgresql start

Gestión datos: Copia de seguridad

19

Archivo continuo

Este sistema es similar al archivo por copia de sistema de archivos, pero no exige detener el servidor. Para poder usar este sistema es necesario activar y configurar la funcionalidad WAL (write-ahead log).

Este tipo de archivado requiere conocimientos de administración de sistemas más avanzados y se explica con detalle en la documentación de PostgreSQL. A modo orientativo, los pasos son:

● Añadir archive_mode, archive_command y archive_timeout al archivo de configuración postgres.conf.● Realizar una copia de la base de datos como usuario con derecho de replicación (por ejemplo, postgres):

○ echo “SELECT pg_start_backup(‘etiqueta’, true);” |\ psql -U postgres -W

○ sudo tar cjvf \ gumnet-$(date +"%Y%m%d").tar.bz2 /usr/local/psql/data

○ echo “SELECT pg_stop_backup();

Inventario

20

Inventario.

21

Dependencias:

Para resolver correctamente las referencias a los elementos «padre», éstos deben insertarse antes que sus hijos. Los archivos YAML deberán, por tanto, insertarse en este orden:

● Red● Estación● Variables● Equipos● Sensores● Series temporales● Intervalos de serie temporal

Inventario: GESTIÓN RED

22

CREAR una red: Yaml: network.yaml:

Se inserta en el inventario:python -m gumnet.inventory bulk-import --yaml networks_prueba.yamlEjemplo:

A continuación se listan las redes y se confirma que está:

Inventario: GESTIÓN ESTACIÓN

23

CREAR una estación: Se crea un .yaml: estacion.yaml.Ejemplo:

Inventario: GESTIÓN ESTACIÓN

24

Se inserta en el inventario:python -m gumnet.inventory bulk-import --yaml estacion.yaml

Se listan las estaciones de la red:

Vemos que una de las estaciones insertadas no tiene los datos descritos correctamente!!

Inventario: GESTIÓN ESTACIÓN

25

Se descarga la entrada a un .yaml que modificamos:

La definición de los meta se construye de otra manera:

MODIFICAR datos de estación

Inventario: GESTIÓN ESTACIÓN

26

Se actualiza la entrada:python -m gumnet.inventory bulk-update --yaml entradamodificada.yaml

Cuando buscamos las estaciones de la red de nuevo:

Inventario: GESTIÓN VARIABLE

27

CREAR variable: Yaml: estacion-variable.yaml:

Se inserta en el inventario:python -m gumnet.inventory bulk-import --yaml estacion-variable.yaml

Inventario: GESTIÓN VARIABLE

28

MODIFICAR variable: Se descarga la variable a un .yaml como hicimos con la estación:

Se actualiza el inventario:python -m gumnet.inventory bulk-update --yaml variable.yaml

Inventario: GESTIÓN EQUIPOS y SENSORES

29

Importar equipo: Yaml: equipment.yaml:

Importar al inventario:python -m gument.inventory bulk-import --yaml equipment.yaml

Inventario: GESTIÓN EQUIPOS y SENSORES

30

Importar sensor: Yaml: equipment_sensor.yaml:

Importar al inventario:python -m gument.inventory bulk-import --yaml equipment_sensor.yaml

Inventario: GESTIÓN SERIES TEMPORALES

31

CREAR serie temporal: Se crea un archivo yaml con la descripción de la serie temporal: dos-hermanas-timeseries_DISP01.yaml

Se inserta en el inventario con bulk-import:

Inventario: GESTIÓN SERIES TEMPORALES

32

CREAR intervalo de serie temporal: Se crea un yaml: dos-hermanas-timeseries-interval_DISP01.yaml:

Se inserta en el inventario con bulk-import:

Inventario: GESTIÓN CONTACTOS

33

Crear yaml con información de contactos: usuarios_prueba.yaml

Importar a base de datos:python -m gumnet.role bulk-import --yaml usuarios_prueba.yaml

Inventario: GESTIÓN CONTACTOS

34

MODIFICAR contactos:Para cambiar los datos de un usuario (en este caso [email protected]), se descarga su registro como archivo YAML para editarlo.

python -m gumnet.role list --name [email protected] >usuarios_irene.yaml

Hechos los cambios con el editor, se sube el registro a la base de datos:python -m gumnet.role bulk-update --yaml usuarios.yaml

Listamos los contactos:

Inventario: GESTIÓN CONTACTOS

35

MODIFICAR contactos:Para cambiar la contraseña de un contacto (listamos con la contraseña para confirmar):

Escogemos la id y usamos el comando update:

Consultas

36

Consultas

37

Lista estaciones de la red y algunas de sus características:

En ocasiones los campos completos no entran en las dimensiones de la tabla. Para acceder a toda la información se deberá hacer una lista, para reducir los elementos de la lista se puede hacer búsqueda con filtros por kind, parents, meta, etc. También se puede exportar a un csv.

python -m gumnet.inventory list --kind Station >archivo.csv

Consultas

38

La siguiente orden daría el mismo resultado:

python -m gumnet.inventory list --kind Variable --parent inventory/Station/G001002 --table name,Description

Lista de variables medidas en una estación:

Consultas

39

Lista equipos (incluidos sensores) de la red.python -m gumnet.inventory list --kind Equipment%%

Filtrar por estación, por ejemplo, los equipos asociados a la estación G001002, su número de identificación Gumnet, marca, modelo, número de serie, status:

Consultas

40

Sensor asociado a una variable.Por ejemplo, el sensor que mide la variable G001002.TMPA01:

Consultas

41

Listado de precios de los equipos instalados en una estación, por ejemplo en la G001002:python -m gumnet.inventory list --kind Equipment%% --parents inventory/Station/G001002 --table Description,Brand,Model,Purchase.Price,Status

Consultas

42

Precio total de los equipos inventariados en una estación, por ejemplo, la estación G001002:

python -m gumnet.inventory list --kind Equipment%% --parents inventory/Station/G001002 --table Purchase.Price | tail -n +5 | head -n -3 | awk '{sum+=$2} END {print sum}'

Si se quiere filtrar por un determinado periodo, por ejemplo, lo gastado en la red en el 2014:python -m gumnet.inventory list --kind Equipment%% --parents inventory/Station/G001%% --meta '{"Purchase.Date": [{"cmp": ">=", "val": "2014-01-01"}, {"cmp": "<", "val": "2015-01-01"}]}' --table Purchase.Price | tail -n +5 | head -n -3 | awk '{sum+=$2} END {print sum}'

Consultas

43

Valoración de la reposición de los elementos de la estación G001002 pertenecientes a GuMNet:

python -m gumnet.inventory list --kind Equipment%% --parents inventory/Station/G001002 --meta '{"Owner": "GUMNET"}' --table Purchase.Price | tail -n +5 | head -n -3 | awk '{sum+=$2} END {print sum}'

Consultas

44

Listado de equipos cuya calibración caduca en el tercer trimestre de 2016:python -m gumnet.inventory list --kind Equipment:Sensor --table Id.GuMNet,Brand,Model,SerialNumber,Calibrate.Expires,Status,Location --meta '{"Calibrate.Expires": [{"cmp": ">=", "val": "2016-07-01"}, {"cmp": "<", "val": "2016-10-01"}]}'

Consultas

45

Gestión datos: Control de calidad

46

Invalidación objetiva series temporales:

……..