Spisu treści:

Seroma: Kierownik serwerowni: 20 kroków
Seroma: Kierownik serwerowni: 20 kroków

Wideo: Seroma: Kierownik serwerowni: 20 kroków

Wideo: Seroma: Kierownik serwerowni: 20 kroków
Wideo: Kostkowy Kierownik | WYCIĘCI 2024, Listopad
Anonim
Seroma: Kierownik serwerowni
Seroma: Kierownik serwerowni

Seroma to wszechstronny menedżer serwerowni, który pozwala użytkownikom sprawdzać stan serwerów (temperatura i wilgotność), logi dostępowe serwerowni, a także monitorować samą serwerownię pod kątem ewentualnych naruszeń bezpieczeństwa.

Krok 1: Zaloguj się na swoje konto AWS

Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
Zaloguj się do swojego konta AWS
  1. W naszym przypadku zalogowaliśmy się za pośrednictwem bramki edukacyjnej AWS, ponieważ mamy konto studenta aws.
  2. Przejdź do zakładki "Konto AWS" w menu nawigacyjnym w prawym górnym rogu.
  3. Kliknij „Przejdź do swojego konta startowego AWS Educate”
  4. Otwórz konsolę, aby uzyskać dostęp do konsoli zarządzania AWS.

Krok 2: Pierwsze kroki z „rzeczami” AWS IOT

Pierwsze kroki z AWS IOT
Pierwsze kroki z AWS IOT
Pierwsze kroki z AWS IOT
Pierwsze kroki z AWS IOT
  1. Wyszukaj „AWS IoT” w pasku wyszukiwania usług AWS.
  2. Kliknij „Rozpocznij”, aby przejść do pulpitu nawigacyjnego AWS IoT Console, w którym możesz wyświetlić wszystkie urządzenia IoT zarejestrowane na Twoim koncie AWS.

Krok 3: Rejestracja "rzeczy" AWS IOT

Rejestracja AWS IOT
Rejestracja AWS IOT
Rejestracja AWS IOT
Rejestracja AWS IOT
Rejestracja AWS IOT
Rejestracja AWS IOT
  1. Na pasku nawigacyjnym przejdź do zarządzania swoimi „rzeczami” IoT.
  2. Kliknij „Zarejestruj rzecz”, jeśli jeszcze czegoś nie masz. (Jeśli już coś masz, kliknij przycisk „Utwórz” w prawym górnym rogu ekranu obok karty wyszukiwania.)
  3. Kliknij pierwszy przycisk o nazwie „Utwórz jedną rzecz”.
  4. Wpisz „RaspberryPi” jako nazwę rzeczy. W tym kroku nie są wymagane żadne dane wejściowe poza „Nazwa”. Po wykonaniu tej czynności kliknij Dalej.

Krok 4: Aktywacja certyfikatu

Aktywacja certyfikatu
Aktywacja certyfikatu
Aktywacja certyfikatu
Aktywacja certyfikatu
  1. W kolejnym kroku kliknij przycisk „utwórz certyfikat”.
  2. Pobierz i zapisz 4 łącza pobierania na następnej stronie w katalogu roboczym lub folderze. Aby zapisać plik głównego CA, kliknij prawym przyciskiem myszy i zapisz jako.
  3. Kliknij „Aktywuj” i powinien pojawić się komunikat o sukcesie.
  4. Użyj przyjaznych nazw plików, usuwając cyfry przed każdą nazwą pliku i zmieniając nazwę pliku głównego urzędu certyfikacji na „rootca.pem”.
  5. Kliknij „Załącz politykę”, aby kontynuować.

Krok 5: Dodawanie polityki do certyfikatu

Dodawanie polityki do certyfikatu
Dodawanie polityki do certyfikatu
Dodawanie polityki do certyfikatu
Dodawanie polityki do certyfikatu
Dodawanie polityki do certyfikatu
Dodawanie polityki do certyfikatu
  1. Na następnej stronie, jeśli nie masz polityki, poprosi Cię o jej utworzenie za pomocą przycisku „Utwórz politykę”.
  2. Jeśli masz już istniejącą politykę, kliknij przycisk „Utwórz nową politykę” poniżej.
  3. Wstaw następujące informacje do formularza tworzenia zasad.

    Nazwa: RaspberryPiSecurityPolicy

    Akcja: iot:*

    ARN zasobów: *

    Efekt: Zezwól

  4. Twoja polityka powinna następnie pojawić się w zakładce „Polityka” w sekcji „Bezpieczeństwo”.
  5. Następnie przejdź do zakładki „Certyfikaty”, która również znajduje się w sekcji „Bezpieczeństwo” i dołącz swoją politykę do utworzonego wcześniej certyfikatu.
  6. Na następnej stronie kliknij swoją politykę, a następnie kliknij „Załącz”.
  7. Na stronie Szczegóły utworzonej rzeczy, pod zakładką „Interakcja”, znajduje się punkt końcowy REST API, który należy skopiować i zapisać.
  8. AWS powinien teraz mieć Rzecz, która jest dołączona do polityki i ma certyfikat.

Krok 6: Wstępna konfiguracja tematu AWS SNS

Wstępna konfiguracja tematu AWS SNS
Wstępna konfiguracja tematu AWS SNS
Wstępna konfiguracja tematu AWS SNS
Wstępna konfiguracja tematu AWS SNS

SSH do Raspberry Pi i zainstaluj AWS CLI za pomocą następującego polecenia pip:

sudo pip zainstalować awscli

AWS CLI zawiera funkcję uzupełniania poleceń, ale nie jest instalowana domyślnie. Użyj następującego polecenia, aby zainstalować funkcję uzupełniania poleceń w interfejsie CLI Raspberry Pi:

complete -C aws_completer aws

Skonfiguruj interfejs AWS CLI z identyfikatorem klucza dostępu, tajnym kluczem dostępu, nazwą regionu AWS i formatem wyjściowym polecenia za pomocą następującego polecenia:

Konfiguracja aws

Konsola wyświetli monit o podanie następujących informacji:

pi@raspberrypi:~ $ aws konfiguruj

Identyfikator klucza dostępu AWS [Brak]: „Wstaw tutaj identyfikator klucza dostępu użytkownika” Tajny klucz dostępu AWS [Brak]: „Wstaw tutaj tajny klucz dostępu użytkownika” Domyślna nazwa regionu [Brak]: eu-central-1 Domyślny format wyjściowy [Brak]: json pi@raspberrypi:~ $

Krok 7: Tworzenie pliku Iot-role.trust.json

Tworzenie pliku Iot-role.trust.json
Tworzenie pliku Iot-role.trust.json
Tworzenie pliku Iot-role.trust.json
Tworzenie pliku Iot-role.trust.json
  1. Utwórz plik JSON z powyższymi zasadami uprawnień o nazwie iot-role.trust.json.
  2. Utwórz rolę za pomocą AWS CLI za pomocą następującego polecenia

aws iam create-role --role-name moja-iot-role --przyjmij-role-policy-document file://iot-role-trust.json

Krok 8: Tworzenie pliku Iot-policy.json

Tworzenie pliku Iot-policy.json
Tworzenie pliku Iot-policy.json
Tworzenie pliku Iot-policy.json
Tworzenie pliku Iot-policy.json
  1. Utwórz plik JSON z powyższymi zasadami o nazwie pliku iot-policy.json.
  2. Utwórz politykę ról za pomocą interfejsu AWS CLI za pomocą następującego polecenia:

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

Krok 9: Utwórz temat AWS SNS (część 1)

Utwórz temat AWS SNS (część 1)
Utwórz temat AWS SNS (część 1)
Utwórz temat AWS SNS (część 1)
Utwórz temat AWS SNS (część 1)
Utwórz temat AWS SNS (część 1)
Utwórz temat AWS SNS (część 1)
  1. Na pasku wyszukiwania usług AWS wyszukaj usługę „SNS” lub przejdź do
  2. Ponieważ nie masz teraz tematów, kliknij „Utwórz nowy temat”, aby utworzyć temat.
  3. Wpisz nazwę tematu i wyświetlaną nazwę, a następnie kliknij „Utwórz temat”, a nowy temat pojawi się, gdy wszystkie kroki zakończą się pomyślnie.
  4. Kliknij przycisk rozwijany „Działania” i „Edytuj politykę tematu”.

Krok 10: Utwórz temat AWS SNS (część 2)

Utwórz temat AWS SNS (część 2)
Utwórz temat AWS SNS (część 2)
Utwórz temat AWS SNS (część 2)
Utwórz temat AWS SNS (część 2)
Utwórz temat AWS SNS (część 2)
Utwórz temat AWS SNS (część 2)
  1. Ustaw zasady tak, aby każdy mógł publikować i subskrybować, ponieważ jest to ograniczenie konta AWSEducate.
  2. Zapisz się do tego tematu, aby otrzymywać aktualizacje opublikowane w tym temacie.
  3. Zmień protokół na „E-mail” i wprowadź swój adres e-mail w punkcie końcowym.

  4. Przejdź do e-maila, w którym wpisałeś swój punkt końcowy, kliknij link potwierdzający, aby potwierdzić subskrypcję e-mail, aby zasubskrybować temat.
  5. Przejdź do usług „AWS IoT”, w menu nawigacyjnym po lewej stronie kliknij „Działaj”. Na tej stronie wyświetlane są Twoje reguły, które możesz przeglądać i edytować. Obecnie nie ma żadnych zasad dotyczących twojego IoT, kliknij „Utwórz regułę”.

Krok 11: Utwórz temat AWS SNS (część 3)

Utwórz temat AWS SNS (część 3)
Utwórz temat AWS SNS (część 3)
Utwórz temat AWS SNS (część 3)
Utwórz temat AWS SNS (część 3)
Utwórz temat AWS SNS (część 3)
Utwórz temat AWS SNS (część 3)
  1. Wpisz nazwę w polu Nazwa reguły. W polu Opis wpisz opis swojej reguły. Przechodząc do sekcji Źródło wiadomości, wybralibyśmy najbardziej zaktualizowaną wersję SQL w sekcji „Korzystanie z wersji SQL”. Wpisz * w atrybucie, aby wybrać całą wiadomość MQTT z tematu, w naszym przypadku naszym tematem jest „TempHumid”.
  2. Następnie dodaj akcję powiadamiania „SNS” dla swojej reguły. Następnie kliknij „Konfiguruj akcję”.
  3. Na stronie „Konfiguruj akcję” wybierz utworzony właśnie temat SNS i format wiadomości jako RAW. Następnie wybierz rolę, którą właśnie utworzyłeś za pomocą AWS CLI i kliknij „Dodaj akcję”.
  4. Twoje działanie zostanie skonfigurowane i powróci do „Utwórz regułę”.
  5. Kliknij edytuj, jeśli chcesz edytować regułę.

Krok 12: Utwórz zasobnik na Amazon S3

Utwórz wiadro na Amazon S3
Utwórz wiadro na Amazon S3
Utwórz wiadro na Amazon S3
Utwórz wiadro na Amazon S3
Utwórz wiadro na Amazon S3
Utwórz wiadro na Amazon S3
  1. Wyszukaj S3 na pasku wyszukiwania AWS.
  2. Na stronie Amazon S3 kliknij przycisk „Utwórz zasobnik”, aby rozpocząć.
  3. Wypełnij wyskakujący formularz, który się pojawi, podając następujące informacje:

    • Nazwa zasobnika: seroma-bucket (musi być unikalna we wszystkich istniejących zasobnikach Amazon S3)
    • Region: Zachodnie USA (Oregon)
    • Ustawienia kopiowania: (Ignoruj)
  4. W przypadku kroków od 2 do 3 po prostu pomiń je, klikając „Dalej”, ponieważ nie ma nic do zmiany. W kroku 4 kliknij „Utwórz zasobnik”.
  5. Po utworzeniu powinieneś zobaczyć swoje wiadro na stronie głównej.

Krok 13: Wygeneruj politykę AWS (część 1)

Wygeneruj Politykę AWS (Część 1)
Wygeneruj Politykę AWS (Część 1)
Wygeneruj Politykę AWS (Część 1)
Wygeneruj Politykę AWS (Część 1)
Wygeneruj Politykę AWS (Część 1)
Wygeneruj Politykę AWS (Część 1)
  1. Kliknij utworzony zasobnik, aby wejść na powyższą stronę, a następnie przejdź do „Zasady zasobnika” na karcie „Uprawnienia”.
  2. Następnie kliknij link „Generator polityk” na dole strony, aby wygenerować politykę AWS.
  3. W formularzu wprowadź następujące wartości:

    • Rodzaj polisy: Polityka wiadra S3
    • Efekt: Zezwól
    • Główny: *
    • Usługa AWS: Amazon S3
    • Akcje: GetObject
    • Amazon Resource Name (ARN): arn:aws:s3:::seroma-bucket
  4. Po uzupełnieniu informacji kliknij Dodaj oświadczenie.
  5. Kliknij przycisk „Wygeneruj politykę”.

Krok 14: Wygeneruj politykę AWS (część 2)

Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
Wygeneruj Politykę AWS (Część 2)
  1. Skopiuj wygenerowane kody i kliknij zamknij.
  2. Wróć do edytora zasad Amazon S3 Bucket Policy i wklej skopiowane wcześniej kody.
  3. Dodaj „/*” do kodów tuż za kodami zasobów, jak na powyższym obrazku, a następnie kliknij Zapisz.
  4. Po wykonaniu tej czynności wiadro zostanie pomyślnie skonfigurowane i gotowe do użycia.

Krok 15: Tworzenie tabel dla DynamoDB

Tworzenie tabel dla DynamoDB
Tworzenie tabel dla DynamoDB
Tworzenie tabel dla DynamoDB
Tworzenie tabel dla DynamoDB
  1. Wyszukaj DynamoDB w pasku wyszukiwania usług AWS
  2. Kliknij „Utwórz tabelę” i utwórz 3 tabele z poniższymi informacjami: (Zmieniane są tylko „nazwa tabeli” i „klucz podstawowy”)

    • accesslog, pk datetimevalue
    • status pokoju, pk datetimevalue
    • staffdata, pk nazwa użytkownika

Krok 16: Roomstatus.py

Status pokoju.py
Status pokoju.py
Status pokoju.py
Status pokoju.py
Status pokoju.py
Status pokoju.py
Status pokoju.py
Status pokoju.py

Ta sekcja zawiera kod dla roomsstatus.py, który co minutę zapisuje wszystkie dane dotyczące samej serwerowni. Obejmuje to temperaturę, wilgotność, ruch (obrazy i filmy, jeśli są prawdziwe) oraz logi dostępu. Zapisuje również dane do arkusza kalkulacyjnego Google, dane do DynamoDB, obrazy i filmy (jeśli istnieją) do S3, wyświetla informacje na ekranie LCD, wysyła SMS-y i e-maile, gdy istnieje podejrzenie naruszenia lub gdy temperatura lub wilgotność są nieregularne.

Aby uruchomić pliki Pythona, przejdź do katalogu, w którym znajduje się plik i wpisz w konsoli: "sudo python"

Rysunek 2: Zadeklarowane funkcje umożliwiające wysyłanie alertów SMS i e-mail oraz przesyłanie do S3

Rys 3: Zmienne zadeklarowane dla funkcji i RPi do działania

Rys 4: Początek pętli, która pobiera wartości temperatury i wilgotności z RPi. Zapisuje również dane do arkusza kalkulacyjnego Google

Rys 5: Część zabezpieczająca pętli. Aktywuje się tylko od 19:00 do 7 rano (poza godzinami pracy). Sprawdza ruch w ciągu jednej minuty. Jeśli zostanie wykryty ruch, zrobi zdjęcie i wideo, prześle je do S3, jednocześnie zapisując informacje do DynamoDB w celu późniejszego odniesienia. Następnie wyśle SMS i e-mail, jeśli coś będzie nieprawidłowe.

Rys. 6: Koniec pętli. Zapisuje również dane do DynamoDB i odpowiednio wysyła alerty. Ostatnia linia pętli uśpi skrypt do następnej minuty.

Krok 17: Rfid.py

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

Ta sekcja zawiera kod dla rfid.py, który dodaje funkcję śledzenia, kiedy członek personelu wchodzi do serwerowni. Jest to również część aspektu bezpieczeństwa Seroma, w którym członek personelu nie ma dostępu do serwerowni po godzinach pracy, aby zapobiec naruszeniu danych. Wysyła również e-mail i SMS do wszystkich pracowników, jeśli podejrzewa się naruszenie.

Rys. 2: Rozpoczęcie logiki czytnika RFID. Za każdym razem, gdy karta jest skanowana w czytniku, pobierany jest unikalny identyfikator (uid) karty. Następnie próbujemy znaleźć wartość identyfikatora karty w tabeli staffdata, aby sprawdzić, czy karta należy do któregoś z pracowników. Rys. 3: Jeśli identyfikator karty istnieje w bazie danych, sprawdzi, czy jest w biurze poza godzinami pracy. Jeśli tak, powiadomi resztę pracowników za pomocą wiadomości SMS i e-mail na subskrybowane adresy e-mail. Jeśli nadal jest w godzinach pracy, zapisze wiersz do tabeli dziennika dostępu w bazie danych z odpowiednimi danymi. Wyświetli również komunikat powitalny na wyświetlaczu LCD.

Krok 18: Server.py

Serwer.py
Serwer.py
Serwer.py
Serwer.py
Serwer.py
Serwer.py

To jest plik server.py. Będziemy używać frameworka Flask dla portalu internetowego. Dołączone są również pliki HTML, które należy umieścić w /templates.

Rys. 1: Zdefiniowana pierwsza trasa dla Flaska. Przekieruje użytkownika do strony logowania, jeśli nie jest zalogowany, oraz do strony pulpitu nawigacyjnego, jeśli jest. Definiuje również funkcję, która ma być używana w funkcji transmisji na żywo

Rys. 2, 3, 4: Trasy do kolby. Pobiera dane z tabeli DynamoDB, a następnie zwraca je do plików HTML, aby można je było tam wykorzystać.

Rys. 5: Ostatnie 2 trasy dla Flask. Obsługuje funkcję wylogowania i funkcję transmisji na żywo. Określa również port, na którym będzie działać witryna.

Krok 19: Telegram.py

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

Ta sekcja zawiera kod do bota telegramu Seroma. Wykorzystuje bibliotekę telepot, aby wykorzystać API Bot Telegrama. Działa poprzez akceptowanie otrzymywanych zapytań i wyświetlanie odpowiednich informacji użytkownikowi. Użytkownik może wpisać „pomoc”, aby uzyskać pełną listę poleceń.

Rys 1, 2: Aby skonfigurować bota telegramu, musisz użyć BotFather. Wystarczy wykonać instrukcje, aby uzyskać API HTTP, którego potrzebujemy w naszym kodzie.

Rys 4: Przykład funkcji pobierającej określoną liczbę wierszy danych z bazy danych na żądanie użytkownika

Rysunek 5: Jak bierzemy wkład użytkownika i decydujemy, co odpowiednio uruchomić.

Krok 20: Transmisja na żywo (camera_pi.py)

Transmisja na żywo (camera_pi.py)
Transmisja na żywo (camera_pi.py)
Transmisja na żywo (camera_pi.py)
Transmisja na żywo (camera_pi.py)
Transmisja na żywo (camera_pi.py)
Transmisja na żywo (camera_pi.py)

Wdrożyliśmy nową funkcję do naszego systemu monitorowania serwerowni, transmisję na żywo z tego, co dzieje się w serwerowni, do której można uzyskać dostęp w dowolnym miejscu i czasie. Jak działa ten strumień na żywo: Jest to funkcja wykonywana w Flask wraz z kamerą Pi. Klatki wideo są pobierane tak, jak dzieje się to w prawdziwym życiu, więc można zauważyć, że występuje niewielkie opóźnienie (1-2 sekundy) podczas pobierania i łączenia klatek wideo. Nie można tego zrobić bez wątków, ponieważ wątek w tle odczytuje klatki z kamery i przechowuje bieżącą klatkę. Złożenie wszystkich tych klatek razem spowoduje wyprowadzenie strumienia na żywo.

Rysunek 2: Jest to osobny plik, w którym przechowywane są wszystkie klatki wideo i jak widać, używamy modułu picamera, aby uzyskać dostęp do naszej kamery raspberry pi, ponieważ jest to to, co najbardziej znamy. Mamy klasę Camera, dzięki czemu możemy importować funkcję tak, jakby była to transmisja na żywo, a nie wiele obrazów składanych razem, dlatego w głównym pliku aplikacji wzięlibyśmy ją jako strumień na żywo bez martwienia się o to, co dzieje się za kulisami.

Rysunek 3: To jest część naszego pliku server.py, w którym zakodowana jest część transmisji na żywo. Główną klasą, którą zaimportowaliśmy w tym celu, jest Camera z naszego pliku camera_pi.py na górze naszego pliku server.py. Zdefiniowaliśmy funkcję w naszym katalogu głównym, gen, jednak jest ona wykorzystywana tylko wtedy, gdy przejdziemy do /video_feed, gdzie znajduje się nasz strumień na żywo, gdzie przejdzie przez tę funkcję i zwróci strumień na żywo na stronie internetowej.

Zalecana: