Saltar a contenido

Inicializando wis2box

Resultados de aprendizaje

Al final de esta sesión práctica, serás capaz de:

  • ejecutar el script wis2box-create-config.py para crear la configuración inicial
  • iniciar wis2box y verificar el estado de sus componentes
  • visualizar el contenido de wis2box-api
  • acceder a wis2box-webapp
  • conectarte al wis2box-broker local utilizando MQTT Explorer

Note

Los materiales de entrenamiento actuales están basados en wis2box-release 1.2.0.

Consulta accessing-your-student-vm para obtener instrucciones sobre cómo descargar e instalar el conjunto de software de wis2box si estás realizando este entrenamiento fuera de una sesión de entrenamiento local.

Preparación

Inicia sesión en tu VM asignada con tu nombre de usuario y contraseña, y asegúrate de estar en el directorio wis2box:

cd ~/wis2box

Creando la configuración inicial

La configuración inicial para wis2box requiere:

  • un archivo de entorno wis2box.env que contenga los parámetros de configuración
  • un directorio en la máquina anfitriona para compartir entre la máquina anfitriona y los contenedores de wis2box definido por la variable de entorno WIS2BOX_HOST_DATADIR

El script wis2box-create-config.py puede ser utilizado para crear la configuración inicial de tu wis2box.

Te hará una serie de preguntas para ayudar a configurar tu configuración.

Podrás revisar y actualizar los archivos de configuración una vez que el script haya finalizado.

Ejecuta el script de la siguiente manera:

python3 wis2box-create-config.py

Directorio wis2box-host-data

El script te pedirá que ingreses el directorio que se utilizará para la variable de entorno WIS2BOX_HOST_DATADIR.

Ten en cuenta que necesitas definir la ruta completa a este directorio.

Por ejemplo, si tu nombre de usuario es username, la ruta completa al directorio es /home/username/wis2box-data:

username@student-vm-username:~/wis2box$ python3 wis2box-create-config.py
Please enter the directory to be used for WIS2BOX_HOST_DATADIR:
/home/username/wis2box-data
The directory to be used for WIS2BOX_HOST_DATADIR will be set to:
    /home/username/wis2box-data
Is this correct? (y/n/exit)
y
The directory /home/username/wis2box-data has been created.

URL de wis2box

A continuación, se te pedirá que ingreses la URL para tu wis2box. Esta es la URL que se utilizará para acceder a la aplicación web, API y UI de wis2box.

Por favor, utiliza http://<your-hostname-or-ip> como la URL.

Please enter the URL of the wis2box:
 For local testing the URL is http://localhost
 To enable remote access, the URL should point to the public IP address or domain name of the server hosting the wis2box.
http://username.training.wis2dev.io
The URL of the wis2box will be set to:
  http://username.training.wis2dev.io
Is this correct? (y/n/exit)

Contraseñas de WEBAPP, STORAGE y BROKER

Puedes usar la opción de generación aleatoria de contraseñas cuando se te solicite para WIS2BOX_WEBAPP_PASSWORD, WIS2BOX_STORAGE_PASSWORD, WIS2BOX_BROKER_PASSWORD y definir las tuyas propias.

No te preocupes por recordar estas contraseñas, se almacenarán en el archivo wis2box.env en tu directorio wis2box.

Revisar wis2box.env

Una vez que el script haya finalizado, verifica el contenido del archivo wis2box.env en tu directorio actual:

cat ~/wis2box/wis2box.env

O verifica el contenido del archivo a través de WinSCP.

Question

¿Cuál es el valor de WISBOX_BASEMAP_URL en el archivo wis2box.env?

Haz clic para revelar la respuesta

El valor predeterminado para WIS2BOX_BASEMAP_URL es https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png.

Esta URL se refiere al servidor de mosaicos de OpenStreetMap. Si deseas usar un proveedor de mapas diferente, puedes cambiar esta URL para apuntar a un servidor de mosaicos diferente.

Question

¿Cuál es el valor de la variable de entorno WIS2BOX_STORAGE_DATA_RETENTION_DAYS en el archivo wis2box.env?

Haz clic para revelar la respuesta

El valor predeterminado para WIS2BOX_STORAGE_DATA_RETENTION_DAYS es de 30 días. Puedes cambiar este valor a un número diferente de días si lo deseas.

El contenedor wis2box-management ejecuta un cronjob diariamente para eliminar datos más antiguos que el número de días definido por WIS2BOX_STORAGE_DATA_RETENTION_DAYS del bucket wis2box-public y del backend de la API:

0 0 * * * su wis2box -c "wis2box data clean --days=$WIS2BOX_STORAGE_DATA_RETENTION_DAYS"

Note

El archivo wis2box.env contiene variables de entorno que definen la configuración de tu wis2box. Para más información, consulta la wis2box-documentation.

No edites el archivo wis2box.env a menos que estés seguro de los cambios que estás realizando. Cambios incorrectos pueden hacer que tu wis2box deje de funcionar.

No compartas el contenido de tu archivo wis2box.env con nadie, ya que contiene información sensible como contraseñas.

Iniciar wis2box

Asegúrate de estar en el directorio que contiene los archivos de definición del conjunto de software de wis2box:

cd ~/wis2box

Inicia wis2box con el siguiente comando:

python3 wis2box-ctl.py start

Cuando ejecutes este comando por primera vez, verás la siguiente salida:

No docker-compose.images-*.yml files found, creating one
Current version=Undefined, latest version=1.2.0
Would you like to update ? (y/n/exit)

Selecciona y y el script creará el archivo docker-compose.images-1.2.0.yml, descargará las imágenes de Docker necesarias e iniciará los servicios.

Descargar las imágenes puede tomar tiempo dependiendo de la velocidad de tu conexión a internet. Este paso solo es necesario la primera vez que inicies wis2box.

Inspecciona el estado con el siguiente comando:

python3 wis2box-ctl.py status

Repite este comando hasta que todos los servicios estén en funcionamiento.

wis2box y Docker

wis2box se ejecuta como un conjunto de contenedores Docker gestionados por docker-compose.

Los servicios están definidos en los diversos archivos docker-compose*.yml que se encuentran en el directorio ~/wis2box/.

El script de Python wis2box-ctl.py se utiliza para ejecutar los comandos subyacentes de Docker Compose que controlan los servicios de wis2box.

No necesitas conocer los detalles de los contenedores Docker para ejecutar el conjunto de software de wis2box, pero puedes inspeccionar los archivos docker-compose*.yml para ver cómo están definidos los servicios. Si estás interesado en aprender más sobre Docker, puedes encontrar más información en la documentación de Docker.

Para iniciar sesión en el contenedor wis2box-management, utiliza el siguiente comando:

python3 wis2box-ctl.py login

Ten en cuenta que después de iniciar sesión, tu prompt cambiará, indicando que ahora estás dentro del contenedor wis2box-management:

root@025381da3c40:/home/wis2box#

Dentro del contenedor wis2box-management puedes ejecutar varios comandos para gestionar tu wis2box, como:

  • wis2box auth add-token --path processes/wis2box : para crear un token de autorización para el endpoint processes/wis2box
  • wis2box data clean --days=<number-of-days> : para limpiar datos más antiguos que un cierto número de días del bucket wis2box-public

Para salir del contenedor y regresar a tu máquina anfitriona, utiliza el siguiente comando:

exit

Ejecuta el siguiente comando para ver los contenedores Docker que se están ejecutando en tu máquina anfitriona:

docker ps --format "table {{.Names}} \t{{.Status}} \t{{.Image}}"

Deberías ver los siguientes contenedores en ejecución:

NAMES                     STATUS                   IMAGE
elasticsearch            docker.elastic.co/elasticsearch/elasticsearch:8.6.2                              "/bin/tini -- /usr/l…"   elasticsearch            Hace un minuto        Activo Hace un minuto (saludable)     9200/tcp, 9300/tcp
elasticsearch-exporter   quay.io/prometheuscommunity/elasticsearch-exporter:latest                        "/bin/elasticsearch_…"   elasticsearch-exporter   Hace un minuto        Activo Hace un minuto               7979/tcp
grafana                  grafana/grafana-oss:9.0.3                                                        "/run.sh"                grafana                  Hace un minuto        Activo Hace un minuto               0.0.0.0:3000->3000/tcp
loki                     grafana/loki:2.4.1                                                               "/usr/bin/loki -conf…"   loki                     Hace un minuto        Activo Hace un minuto               3100/tcp
mosquitto                ghcr.io/world-meteorological-organization/wis2box-broker:1.2.0                   "/docker-entrypoint.…"   mosquitto                Hace un minuto        Activo Hace un minuto               0.0.0.0:1883->1883/tcp, 0.0.0.0:8884->8884/tcp
mqtt_metrics_collector   ghcr.io/world-meteorological-organization/wis2box-mqtt-metrics-collector:1.2.0   "python3 -u mqtt_met…"   mqtt_metrics_collector   Hace un minuto        Activo 10 segundos                   8000/tcp, 0.0.0.0:8001->8001/tcp
nginx                    nginx:alpine                                                                     "/docker-entrypoint.…"   web-proxy                Hace un minuto        Activo 9 segundos                    0.0.0.0:80->80/tcp
prometheus               prom/prometheus:v2.37.0                                                          "/bin/prometheus --c…"   prometheus               Hace un minuto        Activo Hace un minuto               9090/tcp
wis2box-api              ghcr.io/world-meteorological-organization/wis2box-api:1.2.0                      "/app/docker/es-entr…"   wis2box-api              Hace un minuto        Activo 36 segundos (saludable)         
wis2box-auth             ghcr.io/world-meteorological-organization/wis2box-auth:1.2.0                     "/entrypoint.sh"         wis2box-auth             Hace un minuto        Activo 10 segundos                   
wis2box-management       ghcr.io/world-meteorological-organization/wis2box-management:1.2.0               "/home/wis2box/entry…"   wis2box-management       Hace un minuto        Activo 12 segundos                   
wis2box-minio            minio/minio:RELEASE.2024-08-03T04-33-23Z-cpuv1                                   "/usr/bin/docker-ent…"   minio                    Hace un minuto        Activo Hace un minuto (saludable)     0.0.0.0:8022->8022/tcp, 0.0.0.0:9000-9001->9000-9001/tcp
wis2box-ui               ghcr.io/world-meteorological-organization/wis2box-ui:1.2.0                       "/docker-entrypoint.…"   wis2box-ui               Hace un minuto        Activo 35 segundos                   0.0.0.0:9999->80/tcp
wis2box-webapp           ghcr.io/world-meteorological-organization/wis2box-webapp:1.2.0                   "sh /wis2box-webapp/…"   wis2box-webapp           Hace un minuto        Activo Hace un minuto (no saludable)   4173/tcp
wis2downloader           ghcr.io/wmo-im/wis2downloader:v0.3.2                                             "/home/wis2downloade…"   wis2downloader           Hace un minuto        Activo Hace un minuto (saludable)

Estos contenedores son parte del conjunto de software de wis2box y proporcionan los diversos servicios necesarios para ejecutar wis2box.

Ejecute el siguiente comando para ver los volúmenes de Docker que se están ejecutando en su máquina anfitriona:

docker volume ls

Debería ver los siguientes volúmenes:

  • wis2box_project_auth-data
  • wis2box_project_es-data
  • wis2box_project_minio-data
  • wis2box_project_prometheus-data
  • wis2box_project_loki-data
  • wis2box_project_mosquitto-config

Así como algunos volúmenes anónimos utilizados por los diversos contenedores.

Los volúmenes que comienzan con wis2box_project_ se utilizan para almacenar datos persistentes para los diversos servicios en el conjunto de software de wis2box.

wis2box API

El wis2box contiene una API (Interfaz de Programación de Aplicaciones) que proporciona acceso a datos y procesos para la visualización interactiva, transformación de datos y publicación.

Abra una nueva pestaña y navegue a la página http://YOUR-HOST/oapi.

wis2box-api.png

Esta es la página de inicio de la API de wis2box (ejecutándose a través del contenedor wis2box-api).

Question

¿Qué colecciones están disponibles actualmente?

Haga clic para revelar la respuesta

Para ver las colecciones disponibles actualmente a través de la API, haga clic en View the collections in this service:

wis2box-api-collections.png

Las siguientes colecciones están disponibles actualmente:

  • Estaciones
  • Notificaciones de datos
  • Metadatos de descubrimiento

Question

¿Cuántas notificaciones de datos se han publicado?

Haga clic para revelar la respuesta

Haga clic en "Data notifications", luego haga clic en Browse through the items of "Data Notifications".

Notará que la página dice "No items" ya que aún no se han publicado notificaciones de datos.

wis2box webapp

Abra un navegador web y visite la página http://YOUR-HOST/wis2box-webapp.

Verá un mensaje emergente solicitando su nombre de usuario y contraseña. Use el nombre de usuario predeterminado wis2box-user y la contraseña WIS2BOX_WEBAPP_PASSWORD definida en el archivo wis2box.env y haga clic en "Sign in":

Note

Verifique su archivo wis2box.env para el valor de su WIS2BOX_WEBAPP_PASSWORD. Puede usar el siguiente comando para verificar el valor de esta variable de entorno:

cat ~/wis2box/wis2box.env | grep WIS2BOX_WEBAPP_PASSWORD

Una vez que haya iniciado sesión, mueva el mouse al menú de la izquierda para ver las opciones disponibles en la aplicación web de wis2box:

wis2box-webapp-menu.png

Esta es la aplicación web de wis2box que le permite interactuar con su wis2box:

  • crear y gestionar conjuntos de datos
  • actualizar/revisar los metadatos de sus estaciones
  • cargar observaciones manuales utilizando el formulario FM-12 synop
  • monitorear las notificaciones publicadas en su wis2box-broker

Usaremos esta aplicación web en una sesión posterior.

wis2box-broker

Abra el MQTT Explorer en su computadora y prepare una nueva conexión para conectarse a su broker (ejecutándose a través del contenedor wis2box-broker).

Haga clic en + para agregar una nueva conexión:

mqtt-explorer-new-connection.png

Puede hacer clic en el botón 'ADVANCED' y verificar que tiene suscripciones a los siguientes temas:

  • #
  • $SYS/#

mqtt-explorer-topics.png

Note

El tema # es una suscripción comodín que se suscribirá a todos los temas publicados en el broker.

Los mensajes publicados bajo el tema $SYS son mensajes del sistema publicados por el servicio mosquitto.

Use los siguientes detalles de conexión, asegurándose de reemplazar el valor de <your-host> con su nombre de host y <WIS2BOX_BROKER_PASSWORD> con el valor de su archivo wis2box.env:

  • Protocolo: mqtt://
  • Host: <your-host>
  • Puerto: 1883
  • Usuario: wis2box
  • Contraseña: <WIS2BOX_BROKER_PASSWORD>

Note

Puede verificar su archivo wis2box.env para el valor de su WIS2BOX_BROKER_PASSWORD. Puede usar el siguiente comando para verificar el valor de esta variable de entorno:

cat ~/wis2box/wis2box.env | grep WIS2BOX_BROKER_PASSWORD

Tenga en cuenta que esta es su contraseña interna del broker, el Global Broker usará credenciales diferentes (de solo lectura) para suscribirse a su broker. Nunca comparta esta contraseña con nadie.

Asegúrese de hacer clic en "SAVE" para guardar los detalles de su conexión.

Luego haga clic en "CONNECT" para conectarse a su wis2box-broker.

mqtt-explorer-wis2box-broker.png ```

Una vez conectado, verifica que las estadísticas internas de mosquitto se estén publicando en tu broker bajo el tema $SYS:

mqtt-explorer-sys-topic.png

Mantén abierto MQTT Explorer, ya que lo utilizaremos para monitorear los mensajes publicados en el broker.

Conclusión

¡Felicidades!

En esta sesión práctica, aprendiste a:

  • ejecutar el script wis2box-create-config.py para crear la configuración inicial
  • iniciar wis2box y verificar el estado de sus componentes
  • acceder a wis2box-webapp y wis2box-API en un navegador
  • conectarte al broker MQTT en tu VM de estudiante utilizando MQTT Explorer