diff --git a/README.md b/README.md index a4ea65f..3e12bdb 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# iot-clouds \ No newline at end of file +## Creating Logs, configuring Metrics and Alarms diff --git a/lab4-flask_app/Dockerfile b/lab4-flask_app/Dockerfile new file mode 100644 index 0000000..1d06ecd --- /dev/null +++ b/lab4-flask_app/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.6.1-alpine +RUN pip install --upgrade pip +WORKDIR /code +COPY requirements.txt /code +RUN pip install -r requirements.txt --no-cache-dir +COPY . /code +CMD ["python", "app.py"] \ No newline at end of file diff --git a/lab4-flask_app/app.py b/lab4-flask_app/app.py new file mode 100644 index 0000000..7626124 --- /dev/null +++ b/lab4-flask_app/app.py @@ -0,0 +1,30 @@ +from flask import Flask, render_template, request + +import logging +import datetime + +app = Flask(__name__) +logging.basicConfig(level=logging.DEBUG) +PASSWORD = "0000" + + +@app.route('/') +def hello_world(): + return render_template('index.html', utc_dt=datetime.datetime.utcnow()) + + +@app.route('/login', methods=["GET", "POST"]) +def login(): + if request.method == "POST": + password = request.form.get("fpassword") + if password == PASSWORD: + app.logger.info("User logged successfully") + return render_template('login_success.html', utc_dt=datetime.datetime.utcnow()) + else: + app.logger.error("Failed to log in") + return render_template('login_fail.html', utc_dt=datetime.datetime.utcnow()) + return render_template('login.html') + + +if __name__ == '__main__': + app.run(host='0.0.0.0') diff --git a/lab4-flask_app/docker-compose.yml b/lab4-flask_app/docker-compose.yml new file mode 100644 index 0000000..20804c3 --- /dev/null +++ b/lab4-flask_app/docker-compose.yml @@ -0,0 +1,10 @@ +version: '2.8' +services: + lab4-flask: + build: . + image: lab4-flask-app + container_name: lab4-flask + ports: + - "5000:5000" + volumes: + - .:/code diff --git a/lab4-flask_app/requirements.txt b/lab4-flask_app/requirements.txt new file mode 100644 index 0000000..fb0dec5 --- /dev/null +++ b/lab4-flask_app/requirements.txt @@ -0,0 +1 @@ +Flask==2.0.3 \ No newline at end of file diff --git a/lab4-flask_app/templates/base.html b/lab4-flask_app/templates/base.html new file mode 100644 index 0000000..af2fcef --- /dev/null +++ b/lab4-flask_app/templates/base.html @@ -0,0 +1,27 @@ + + + + + {% block title %} {% endblock %} - FlaskApp + + + + +
+
+ {% block content %} {% endblock %} +
+ + + \ No newline at end of file diff --git a/lab4-flask_app/templates/index.html b/lab4-flask_app/templates/index.html new file mode 100644 index 0000000..8135efe --- /dev/null +++ b/lab4-flask_app/templates/index.html @@ -0,0 +1,9 @@ +{% extends 'base.html' %} + +{% block content %} + +

{% block title %} Cloud lab 4 :) {% endblock %}

+

Creating logs. Metrics and Alarms

+

{{ utc_dt }}

+ +{% endblock %} \ No newline at end of file diff --git a/lab4-flask_app/templates/login.html b/lab4-flask_app/templates/login.html new file mode 100644 index 0000000..a815566 --- /dev/null +++ b/lab4-flask_app/templates/login.html @@ -0,0 +1,17 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} Try it out {% endblock %}

+ + + +
+ + + +
+{% endblock %} \ No newline at end of file diff --git a/lab4-flask_app/templates/login_fail.html b/lab4-flask_app/templates/login_fail.html new file mode 100644 index 0000000..138e229 --- /dev/null +++ b/lab4-flask_app/templates/login_fail.html @@ -0,0 +1,8 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} Oops, try again! {% endblock %}

+

Password is incorrect

+

{{ utc_dt }}

+{% endblock %} \ No newline at end of file diff --git a/lab4-flask_app/templates/login_success.html b/lab4-flask_app/templates/login_success.html new file mode 100644 index 0000000..95ae290 --- /dev/null +++ b/lab4-flask_app/templates/login_success.html @@ -0,0 +1,7 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} Success, whoo! {% endblock %}

+

{{ utc_dt }}

+{% endblock %} \ No newline at end of file diff --git a/task.md b/task.md new file mode 100644 index 0000000..e30369b --- /dev/null +++ b/task.md @@ -0,0 +1,10 @@ +## Лабораторна робота 4 +## Створення Logs, налаштування Metrics та Alarms + +### Завдання +- Розробити інтерфейс логування для користувача у вашу аплікацію (розроблену в завданні 2) +- Налаштувати логування. В логах необхідно зберігати дані про вдалий вхід користувача. У разі помилки входу (неправильний пароль чи логін) слід логувати помилку +- Налаштувати Stackdriver Monitoring (GCP) / Unified CloudWatch Agent або AWS CloudWatch Log (AWS) / Azure Monitor (Azure) для вашої аплікації +- Налаштувати тривожні повідомлення (аларми), вказати умови спрацювання Аларма і адресат повідомлення про невдале логування(наприклад email). +- Налаштувати час зберігання логів або їх кількість. +- Здійснити навігацію на сайт та в браузері ввести адресу сторінки, якої немає на сайті. Здійснити спробу невдалого логування на сайт та перевірити надходження повідомлення на електронну пошту