/
Dashboard de servicios
Search
Try Notion
Dashboard de servicios
Fecha publicación
2021/12/20
#
26
Dificultad
Básico
3 more properties
Descripción
Ya empezamos a tener algunos servicios en nuestro IoT Gateway y más de uno tiene interficie de gestión Web. Así pues, nada más útil que hacer una página que los liste todos y a través de un enlace nos permita acceder de forma transparente y sencilla a los mismos.
Esto también será muy práctico cuando empecemos a desarrollar soluciones y funciones para nuestros clientes. Ya que podremos referenciar los dashboards, sinópticos y otros elementos desde esta única página web.
Proxy inverso con NGINX
NGINX permitirá acceder a nuestros servicios desde un único punto de acceso.
Directorios y extracción de ficheros
Descarga el siguiente fichero y lo copiamos al directorio /docker-data de nuestro IoT Gateway:
y ejecuta los siguientes parámetros:
cd /docker-data # asumimos que el fichero nginx.tar.gz esta en este directorio tar xvfz nginx.tar.gz
Bash
si este proceso ha funcionado adecuadamente al entrar en el directorio nginx y ejecutar el comando tree deberíamos ver esta estructura de ficheros.
. ├── data ├── docker-compose.yml ├── etc │   ├── conf.d │   │   └── default.conf │   ├── fastcgi_params │   ├── koi-utf │   ├── koi-win │   ├── mime.types │   ├── nginx.conf │   ├── scgi_params │   ├── uwsgi_params │   └── win-utf ├── html │   └── index.html └── logs
YAML
Fichero /docker-data/nginx/docker-compose.yml
version: '3.8' services: nginx: image: nginx:latest container_name: nginx restart: unless-stopped volumes: - ./etc:/etc/nginx:ro - ./logs:/var/logs/nginx - ./html:/usr/share/nginx/html:ro - /etc/localtime:/etc/localtime:ro environment: - TZ="CET" command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" ports: - 80:80 extra_hosts: # pon aquí la IP de tu host host: 10.2.0.54 networks: - i40sys networks: i40sys: external: name: i40sys
YAML
Modificación de los servicios web ya instalados para trabajar con el proxy inverso
Cambios en Grafana
⚠️
Importante tener parado Grafana para hacer este cambio
cd /docker-data/grafana docker-compose down
Shell
En el fichero de configuración de Grafana (/docker-data/grafana/etc/grafana.ini) hay que localizar este trozo de código:
# The full public facing url you use in browser, used for redirects and emails # If you use reverse proxy and sub path specify full url (with sub path) ;root_url = %(protocol)s://%(domain)s:%(http_port)s/
YAML
y añadimos una línia como esta
# The full public facing url you use in browser, used for redirects and emails # If you use reverse proxy and sub path specify full url (with sub path) ;root_url = %(protocol)s://%(domain)s:%(http_port)s/ root_url = %(protocol)s://%(domain)s:%(http_port)s/board
YAML
volver a levantar Grafana
cd /docker-data/grafana docker-compose up -d
Shell
Cambios en Node-RED
⚠️
Importante tener parado Node-RED para hacer este cambio
cd /docker-data/node-red docker-compose down
Shell
Cambios en /docker-data/node-red/docker-compose.yml
Básicamente dejamos de usar el stack de red del host para poner NodeRED en nuestra red de contenedores privada llamada i40sys.
version: "3.7" services: node-red: container_name: node-red image: nodered/node-red:latest environment: - TZ=Europe/Madrid volumes: - /dev:/host/dev - /etc/localtime:/etc/localtime:ro - ./data:/data - ./known_hosts:/usr/src/node-red/.ssh/known_hosts #network_mode: host healthcheck: #test: ["CMD", "curl", "--fail", "http://localhost:1880", "||","exit 1" ] test: ["CMD-SHELL","node /healthcheck.js"] interval: 60s timeout: 3s retries: 3 start_period: 30s restart: unless-stopped privileged: true networks: - i40sys networks: i40sys: external: name: i40sys
YAML
Cambios en el fichero de configuración
En el fichero de configuración de NodeRED (/docker-data/node-red/data/settings.js) localizamos estas líneas:
// The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', // to apply the same root to both parts. //httpRoot: '/red',
JSON
y añadimos una nueva línia para que quede exactamente así:
// The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', // to apply the same root to both parts. //httpRoot: '/red', httpRoot: '/flows',
JSON
volver a levantar Node-red
cd /docker-data/node-red docker-compose up -d
Shell
Instalación y configuración del dashboard de servicios
El dashboard que hemos creado es como este:
Y el proyecto que hemos usado para esto es:
Creamos los directorios de trabajo:
Descarga el siguiente fichero y lo copiamos al directorio /docker-data de nuestro IoT Gateway:
y ejecuta los siguientes parámetros:
cd /docker-data # asumimos que el fichero nginx.tar.gz esta en este directorio tar xvfz dashboard.tar.gz
Bash
si este proceso ha funcionado adecuadamente al entrar en el directorio dashboard y ejecutar el comando tree deberíamos ver esta estructura de ficheros.
. ├── assets │   ├── additionnal-page.yml.dist │   ├── config.yml │   ├── config.yml.dist │   ├── config.yml.dist.sample-sui │   ├── custom.css │   ├── icons │   │   ├── favicon-16x16.png │   │   ├── favicon-16x16.png_ │   │   ├── favicon-32x32.png │   │   ├── favicon-32x32.png_ │   │   ├── icon-any.png │   │   ├── icon-any.svg │   │   ├── icon-maskable.png │   │   └── safari-pinned-tab.svg │   ├── logo_i40_systems_fondo_blanc.png │   ├── manifest.json │   └── tools │   ├── sample2.png │   └── sample.png └── docker-compose.yml
JSON
Fichero /docker-data/dashboard/docker-compose.yml
version: "3" services: homer: image: b4bz/homer container_name: homer volumes: - ./assets/:/www/assets environment: - UID=1000 - GID=100 restart: unless-stopped networks: - i40sys networks: i40sys: external: name: i40sys
YAML