Tabla de contenido:

Seroma: Administrador de sala de servidores: 20 pasos
Seroma: Administrador de sala de servidores: 20 pasos

Video: Seroma: Administrador de sala de servidores: 20 pasos

Video: Seroma: Administrador de sala de servidores: 20 pasos
Video: Lana Del Rey - Summertime Sadness (Official Music Video) 2024, Mes de julio
Anonim
Seroma: Administrador de la sala de servidores
Seroma: Administrador de la sala de servidores

Seroma es un administrador de sala de servidores todo en uno que permite a los usuarios verificar el estado de los servidores (temperatura y humedad), los registros de acceso de la sala de servidores, así como monitorear la propia sala de servidores en busca de violaciones de seguridad.

Paso 1: inicie sesión en su cuenta de AWS

Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
Inicie sesión en su cuenta de AWS
  1. Para el nuestro, iniciamos sesión a través de la puerta de enlace para estudiantes de AWS educate, ya que tenemos una cuenta de AWS para estudiantes.
  2. Dirígete a la pestaña "Cuenta de AWS" en el menú de navegación en la parte superior derecha.
  3. Haga clic en "Ir a su cuenta de inicio de AWS Educate"
  4. Abra la consola para acceder a su consola de administración de AWS.

Paso 2: Introducción a las "cosas" de AWS IOT

Introducción a AWS IOT
Introducción a AWS IOT
Introducción a AWS IOT
Introducción a AWS IOT
  1. Busque "AWS IoT" en la barra de búsqueda de servicios de AWS.
  2. Haga clic en "Comenzar" para pasar al panel de la consola de AWS IoT, donde puede ver todos los dispositivos de IoT registrados en su cuenta de AWS.

Paso 3: registrar una "cosa" de AWS IOT

Registro de un AWS IOT
Registro de un AWS IOT
Registro de un AWS IOT
Registro de un AWS IOT
Registro de un AWS IOT
Registro de un AWS IOT
  1. En la barra de navegación, navegue para administrar sus "Cosas" de IoT.
  2. Haga clic en "Registrar algo" si aún no tiene nada. (Si ya tiene algo, haga clic en el botón "Crear" en la parte superior derecha de la pantalla junto a la pestaña de búsqueda).
  3. Haga clic en el primer botón llamado "Crear una sola cosa".
  4. Escriba "RaspberryPi" como el nombre de la cosa. Para este paso, no se requiere ninguna entrada que no sea el "Nombre". Después de hacerlo, haga clic en siguiente.

Paso 4: activación de un certificado

Activar un certificado
Activar un certificado
Activar un certificado
Activar un certificado
  1. En el siguiente paso, haga clic en el botón "crear certificado".
  2. Descargue y almacene los 4 enlaces de descarga de la página siguiente en un directorio o carpeta de trabajo. Para guardar el archivo de CA raíz, haga clic con el botón derecho y guárdelo como.
  3. Haga clic en "Activar" y debería aparecer un mensaje de éxito.
  4. Utilice nombres descriptivos para los archivos eliminando los números delante de cada nombre de archivo y cambiando el nombre del archivo de CA raíz a "rootca.pem".
  5. Haga clic en "Adjuntar una política" para continuar.

Paso 5: agregar una política a su certificado

Agregar una política a su certificado
Agregar una política a su certificado
Agregar una política a su certificado
Agregar una política a su certificado
Agregar una política a su certificado
Agregar una política a su certificado
  1. En la página siguiente, si no tiene una política, le pedirán que cree una en el botón "Crear una política".
  2. Si ya tiene una política existente, haga clic en el botón "Crear nueva política" a continuación.
  3. Inserte la siguiente información en el formulario de creación de políticas.

    Nombre: RaspberryPiSecurityPolicy

    Acción: iot: *

    ARN del recurso: *

    Efecto: Permitir

  4. Su política debería aparecer en la pestaña "Política" en "Seguridad".
  5. A continuación, vaya a la pestaña "Certificados" que también se encuentra en "Seguridad" y adjunte su política al certificado que creó anteriormente.
  6. En la página siguiente, haga clic en su póliza y luego haga clic en "Adjuntar".
  7. En la página de Detalles de lo que creó, en la pestaña "Interactuar", hay un punto final de la API REST que debe copiarse y guardarse.
  8. AWS ahora debería tener una cosa que esté adjunta a una política y tenga un certificado.

Paso 6: Configuración inicial para el tema de AWS SNS

Configuración inicial para el tema de AWS SNS
Configuración inicial para el tema de AWS SNS
Configuración inicial para el tema de AWS SNS
Configuración inicial para el tema de AWS SNS

SSH en Raspberry Pi e instale AWS CLI usando el siguiente comando pip:

sudo pip instalar awscli

AWS CLI incluye la función de finalización de comandos, pero no está instalada de forma predeterminada. Utilice el siguiente comando para instalar la función de finalización de comandos en la interfaz CLI de Raspberry Pi:

complete -C aws_completer aws

Configure la AWS CLI con el ID de clave de acceso, la clave de acceso secreta, el nombre de la región de AWS y el formato de salida del comando mediante el siguiente comando:

aws configure

La consola le pedirá que complete la siguiente información:

pi @ raspberrypi: ~ $ aws configure

ID de clave de acceso de AWS [Ninguno]: "Introduzca aquí el ID de clave de acceso de usuario" Clave de acceso secreta de AWS [Ninguno]: "Introduzca aquí la clave de acceso secreta de usuario" Nombre de región predeterminado [Ninguno]: eu-central-1 Formato de salida predeterminado [Ninguno]: json pi @ raspberrypi: ~ $

Paso 7: Creación del archivo Iot-role.trust.json

Creación del archivo Iot-role.trust.json
Creación del archivo Iot-role.trust.json
Creación del archivo Iot-role.trust.json
Creación del archivo Iot-role.trust.json
  1. Cree un archivo JSON con la política de IAM anterior con el nombre de archivo iot-role.trust.json.
  2. Cree el rol con la AWS CLI con el siguiente comando

aws iam create-role --role-name my-iot-role --assume-role-policy-document file: //iot-role-trust.json

Paso 8: Creación del archivo Iot-policy.json

Creación del archivo Iot-policy.json
Creación del archivo Iot-policy.json
Creación del archivo Iot-policy.json
Creación del archivo Iot-policy.json
  1. Cree un archivo JSON con la política anterior con el nombre de archivo iot-policy.json.
  2. Cree la política de rol con la AWS CLI con el siguiente comando:

aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file: //iot-policy.json

Paso 9: crear un tema de AWS SNS (parte 1)

Crear un tema de AWS SNS (parte 1)
Crear un tema de AWS SNS (parte 1)
Crear un tema de AWS SNS (parte 1)
Crear un tema de AWS SNS (parte 1)
Crear un tema de AWS SNS (parte 1)
Crear un tema de AWS SNS (parte 1)
  1. En la barra de búsqueda de servicios de AWS, busque el servicio "SNS" o diríjase a
  2. Como no tiene temas ahora, haga clic en "Crear nuevo tema" para crear un tema.
  3. Escriba el nombre de su tema y el nombre para mostrar y haga clic en "Crear tema" y aparecerá un nuevo tema cuando todos los pasos se completen correctamente.
  4. Haga clic en el botón desplegable "Acciones" y "Editar política de temas".

Paso 10: Cree un tema de AWS SNS (Parte 2)

Crear un tema de AWS SNS (parte 2)
Crear un tema de AWS SNS (parte 2)
Crear un tema de AWS SNS (parte 2)
Crear un tema de AWS SNS (parte 2)
Crear un tema de AWS SNS (parte 2)
Crear un tema de AWS SNS (parte 2)
  1. Establezca la política para permitir que todos publiquen y se suscriban, ya que se trata de las limitaciones de una cuenta de AWSEducate.
  2. Suscríbase a este tema para recibir actualizaciones publicadas sobre este tema.
  3. Cambie el protocolo a "Correo electrónico" e ingrese su correo electrónico en el punto final.

  4. Diríjase a su correo electrónico donde escribió su punto final, haga clic en el enlace de confirmación para confirmar su suscripción de correo electrónico para suscribirse al tema.
  5. Vaya a los servicios de "AWS IoT", en el menú de navegación de la izquierda, haga clic en "Actuar". Esta página es donde se muestran sus reglas y están disponibles para que las vea y edite. Actualmente, no hay reglas para su IoT, haga clic en "Crear una regla".

Paso 11: Cree un tema de AWS SNS (Parte 3)

Crear un tema de AWS SNS (parte 3)
Crear un tema de AWS SNS (parte 3)
Crear un tema de AWS SNS (parte 3)
Crear un tema de AWS SNS (parte 3)
Crear un tema de AWS SNS (parte 3)
Crear un tema de AWS SNS (parte 3)
  1. Escriba un nombre en el campo Nombre de su regla. En el campo Descripción, escriba una descripción para su regla. Continuando con la sección Fuente del mensaje, elegiríamos la versión de SQL más actualizada en la sección "Uso de la versión de SQL". Escriba * en el atributo para seleccionar todo el mensaje MQTT del tema, en nuestro caso nuestro tema es "TempHumid".
  2. Luego, agregue una acción de notificación "SNS" para su regla. Luego, haga clic en "Configurar acción".
  3. En la página "Configurar acción", elija el tema de SNS que acaba de crear y el formato del mensaje como RAW. Después de eso, elija el rol que acaba de crear con la AWS CLI y haga clic en "Agregar acción".
  4. Su acción se configurará y volverá a "Crear una regla".
  5. Haga clic en editar si desea editar la regla.

Paso 12: cree un depósito en Amazon S3

Cree un depósito en Amazon S3
Cree un depósito en Amazon S3
Cree un depósito en Amazon S3
Cree un depósito en Amazon S3
Cree un depósito en Amazon S3
Cree un depósito en Amazon S3
  1. Busque S3 en la barra de búsqueda de AWS.
  2. En la página de Amazon S3, haga clic en el botón "Crear depósito" para comenzar.
  3. Rellena el formulario emergente que aparece con la siguiente información:

    • Nombre de depósito: seroma-bucket (debe ser único en todos los depósitos de Amazon S3 existentes)
    • Región: Oeste de EE. UU. (Oregón)
    • Copiar configuración: (Ignorar)
  4. Para los pasos 2 a 3, simplemente omítalo haciendo clic en "Siguiente", ya que no hay nada que cambiar. En el paso 4, haga clic en "Crear depósito".
  5. Después de la creación, debería ver su depósito en la página de inicio.

Paso 13: generar una política de AWS (parte 1)

Generar una política de AWS (parte 1)
Generar una política de AWS (parte 1)
Generar una política de AWS (parte 1)
Generar una política de AWS (parte 1)
Generar una política de AWS (parte 1)
Generar una política de AWS (parte 1)
  1. Haga clic en el depósito que creó para ingresar a la página anterior, luego proceda a "Política de depósito" en la pestaña "Permisos".
  2. A continuación, haga clic en el enlace "Generador de políticas" en la parte inferior de la página para generar su política de AWS.
  3. En el formulario, ingrese los siguientes valores:

    • Tipo de política: Política de depósito de S3
    • Efecto: Permitir
    • Principal: *
    • Servicio de AWS: Amazon S3
    • Acciones: GetObject
    • Nombre de recurso de Amazon (ARN): arn: aws: s3::: seroma-bucket
  4. Después de completar la información, haga clic en Agregar declaración.
  5. Haga clic en el botón "Generar política".

Paso 14: Genere una política de AWS (Parte 2)

Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
Generar una política de AWS (parte 2)
  1. Copie los códigos generados y haga clic en cerrar.
  2. Vuelva a su editor de políticas de depósito de Amazon S3 y pegue los códigos copiados previamente.
  3. Agregue un "/ *" en los códigos justo detrás de los códigos de recursos, como en la imagen de arriba, luego haga clic en guardar.
  4. Después de hacerlo, su balde estará configurado correctamente y listo para su uso.

Paso 15: creación de tablas para DynamoDB

Creación de tablas para DynamoDB
Creación de tablas para DynamoDB
Creación de tablas para DynamoDB
Creación de tablas para DynamoDB
  1. Busque DynamoDB en la barra de búsqueda de servicios de AWS
  2. Haga clic en "Crear tabla" y cree 3 tablas con la siguiente información: (Solo se cambian el "nombre de la tabla" y la "clave principal")

    • accesslog, pk datetimevalue
    • roomstatus, pk datetimevalue
    • staffdata, pk nombre de usuario

Paso 16: Roomstatus.py

Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py

Esta sección contiene el código para roomstatus.py, que escribe todos los datos relacionados con la sala de servidores en sí cada minuto. Esto incluye la temperatura, la humedad, el movimiento (imágenes y videos si son verdaderos) y los registros de acceso. También escribe datos en una hoja de cálculo de Google, datos en DynamoDB, imágenes y videos (si los hay) en S3, muestra información en la pantalla LCD, envía un SMS y un correo electrónico cuando hay una sospecha de incumplimiento o cuando la temperatura o la humedad son irregulares..

Para ejecutar archivos de Python, cambie el directorio donde se encuentra el archivo y escriba en la consola: "sudo python"

Imagen 2: Funciones declaradas para permitir alertas por SMS y correo electrónico, y cargarlas en S3

Imagen 3: Variables declaradas para que funcionen las funciones y RPi

Imagen 4: Inicio del ciclo que obtiene los valores de temperatura y humedad del RPi. También escribe los datos en una hoja de cálculo de Google.

Imagen 5: Parte de seguridad del circuito. Solo se activará de 7 p.m. a 7 a.m. (fuera de horario). Verificará el movimiento en un lapso de un minuto. Si se detecta movimiento, tomará una imagen y un video, los cargará en S3 y, al mismo tiempo, escribirá información en DynamoDB para referencia posterior. Posteriormente, enviará un SMS y un correo electrónico si hay alguna irregularidad.

Imagen 6: El final del ciclo. También escribe datos en DynamoDB y envía alertas en consecuencia. La última línea del bucle hará que el script se suspenda hasta que se alcance el siguiente minuto.

Paso 17: Rfid.py

Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py

Esta sección contiene el código para rfid.py, que agrega la funcionalidad de rastrear cuando un miembro del personal accede a la sala de servidores. También es parte del aspecto de seguridad de Seroma, donde un miembro del personal no puede acceder a la sala de servidores después del horario de oficina, para evitar una violación de datos. También envía un correo electrónico y SMS a todo el personal si se sospecha una infracción.

Imagen 2: Inicio de la lógica del lector RFID. Siempre que se escanea una tarjeta con el lector, se toma la identificación única (uid) de la tarjeta. Posteriormente, intentamos encontrar el valor uid de la tarjeta en la tabla staffdata para ver si la tarjeta pertenece a algún miembro del staff. Foto 3: Si el uid de la tarjeta existe en la base de datos, verificará si es durante la oficina fuera de horas. Si es así, alertará al resto de empleados a través de SMS y correo electrónico las direcciones de correo electrónico suscritas. Si todavía está en horario de oficina, escribirá una fila en la tabla de registro de acceso en la base de datos con los datos relevantes. También mostrará un mensaje de bienvenida en la pantalla LCD.

Paso 18: Server.py

Server.py
Server.py
Server.py
Server.py
Server.py
Server.py

Este es el archivo server.py. Usaremos el marco Flask para el portal web. También se adjuntan los archivos HTML que se colocarán en / templates.

Imagen 1: Primera ruta definida para Frasco. Redirigirá al usuario a la página de inicio de sesión si no ha iniciado sesión y a la página del panel de control si lo está. También define una función que se utilizará en la función de transmisión en vivo

Imagen 2, 3, 4: Rutas para Matraz. Obtiene datos de la tabla DynamoDB y luego los devuelve a los archivos HTML para que puedan usarse allí.

Imagen 5: Últimas 2 rutas para Flask. Maneja la función de cierre de sesión y la función de transmisión en vivo. También especifica el puerto en el que se ejecutará el sitio web.

Paso 19: Telegram.py

Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py

Esta sección incluye el código del bot de telegramas de Seroma. Utiliza la biblioteca de telepot para aprovechar la API de Bot de Telegram. Funciona aceptando las consultas que recibe y mostrando la información respectiva al usuario. El usuario puede escribir "ayuda" para obtener una lista completa de comandos.

Imagen 1, 2: Para configurar un bot de telegramas, debe usar BotFather. Simplemente ejecute las instrucciones para obtener la API HTTP que necesitamos en nuestro código.

Imagen 4: Ejemplo de una función que toma un cierto número de filas de datos de la base de datos según la solicitud del usuario

Imagen 5: Cómo tomamos la entrada del usuario y decidimos qué ejecutar en consecuencia.

Paso 20: Transmisión en vivo (camera_pi.py)

Transmisión en vivo (camera_pi.py)
Transmisión en vivo (camera_pi.py)
Transmisión en vivo (camera_pi.py)
Transmisión en vivo (camera_pi.py)
Transmisión en vivo (camera_pi.py)
Transmisión en vivo (camera_pi.py)

Hemos implementado una nueva función para nuestro sistema de monitoreo de la sala de servidores, una transmisión en vivo de lo que está sucediendo en la Sala de servidores, a la que se puede acceder en cualquier momento y en cualquier lugar. Cómo funciona esta transmisión en vivo: es una función que se realiza en Flask, junto con la cámara Pi. Los fotogramas de video se descargan como sucede en la vida real, por lo que puede ver que hay un ligero retraso (1-2 segundos) cuando los fotogramas de video se descargan y ensamblan. Esto no se puede hacer sin enhebrar, ya que el hilo de fondo lee los fotogramas de la cámara y almacena el fotograma actual. Unir todos estos fotogramas juntos generaría una transmisión en vivo.

Imagen 2: Este es un archivo separado donde se almacenan todos los fotogramas de video y, como puede ver, estamos usando el módulo picamera para acceder a nuestra cámara raspberry pi, ya que eso es con lo que estamos más familiarizados. Tenemos una cámara de clase para que podamos importar la función como si fuera una transmisión en vivo y no varias imágenes juntas, por lo tanto, en el archivo principal de la aplicación lo tomaríamos como una transmisión en vivo sin tener que preocuparnos por lo que está sucediendo detrás de escena.

Imagen 3: Esto es parte de nuestro archivo server.py donde se codifica la parte de la transmisión en vivo. La clase principal que importamos para esto es la Cámara de nuestro archivo camera_pi.py en la parte superior de nuestro archivo server.py. Definimos una función en nuestro directorio raíz, gen, sin embargo, solo se usa cuando nos dirigimos a / video_feed donde se encuentra nuestra transmisión en vivo, donde recorrerá esta función y devolverá la transmisión en vivo en la página web.

Recomendado: