Рубрики
Без рубрики

Как добавить размещенный мониторинг в веб-приложения Flask

Научитесь добавлять размещенный мониторинг в веб-приложения Flask с помощью Rollbar.

Автор оригинала: Matt Makai.

Как узнать, правильно ли работает ваше приложение с минимальным ошибки после сборки и разворачивая это? Самый быстрый и простой способ для мониторинга вашего работающего веб-приложения Flask необходимо интегрировать один из многих доступных фантастических размещенных инструменты мониторинга.

В этом посте мы быстро добавим мониторинг Rollbar чтобы выявлять ошибки и визуализировать, как наше приложение работает правильно. Там также есть много других отличных инструментов мониторинга, которые вы можете проверить на странице мониторинга.

Наши инструменты

Мы можем использовать Python 2 или 3 для создания этого учебное пособие, но Python 3 настоятельно рекомендуется для всех новых приложений. я использовал Python 3.6.2 в выполнить мой код. Мы также будем использовать следующие зависимости приложений во всем сообщение:

  • Веб-фреймворк Flask,
  • версия 0.12.2
  • Мониторинг pyrollbar
  • библиотека приборов,
  • версия 0.13.12
  • мигалка для поддержки сигнализации
  • в приложениях Flask, чтобы pyrollbar мог сообщать обо всех ошибках
  • бесплатная учетная запись Rollbar , на которую мы отправим сообщение об ошибке
  • данные и просмотреть их, когда они будут захвачены
  • pip и
  • виртуальная среда virtualenv
  • библиотека, поставляемая вместе с Python 3, для установки и изоляции
  • Библиотеки Flask и Rollbar из других проектов Python, над которыми вы работаете

Если вам нужна помощь в получении настроена среда разработки перед запуском этого кода взгляните на это руководство по настройке Python 3 и Flask в Ubuntu 16.04 LTS.

Весь код в этом сообщении в блоге доступен с открытым исходным кодом по лицензии MIT. на GitHub в разделе каталог monitor-flask-apps репозитория blog-code-examples . Используйте исходный код и злоупотребляйте им для своих собственных приложений.

Установка зависимостей

Перейдите в каталог, в котором вы храните виртуальные файлы Python. Создайте новую виртуальную среду для этого проекта, используя следующие команда.

python3 -m venv monitorflask

Активируйте virtualenv.

source monitorflask/bin/activate

Командная строка изменится после активации virtualenv:

Активация нашей виртуальной среды Python в командной строке.

Помните, что вам нужно активировать virtualenv в каждом новом терминале окно, в котором вы хотите использовать virtualenv для запуска проекта.

Flask, Rollbar и Blinker теперь можно установить в активированный virtualenv.

pip install flask==0.12.2 rollbar==0.13.12 blinker==1.4

Наши необходимые зависимости должны быть установлены в нашем virtualenv после короткого периода установки. Ищите вывод, подобный следующему, чтобы подтверждаю, что все работает.

Installing collected packages: blinker, itsdangerous, click, MarkupSafe, Jinja2, Werkzeug, Flask, idna, urllib3, chardet, certifi, requests, six, rollbar
  Running setup.py install for blinker ... done
  Running setup.py install for itsdangerous ... done
  Running setup.py install for MarkupSafe ... done
  Running setup.py install for rollbar ... done
Successfully installed Flask-0.12.2 Jinja2-2.9.6 MarkupSafe-1.0 Werkzeug-0.12.2 blinker-1.4 certifi-2017.4.17 chardet-3.0.4 click-6.7 idna-2.5 itsdangerous-0.24 requests-2.18.1 rollbar-0.13.12 six-1.10.0 urllib3-1.21.1

Теперь, когда у нас есть зависимости Python, установленные в нашем virtualenv мы можем создать начальную версию нашего приложения.

Создание нашего приложения Flask

Создайте папку для своего проекта с именем monitor-flask-apps . Изменить на папку, а затем создайте файл с именем app.py со следующими код.

import re
from flask import Flask, render_template, Response
from werkzeug.exceptions import NotFound


app = Flask(__name__)
MIN_PAGE_NAME_LENGTH = 2


@app.route("//")
def show_page(page):
    try:
        valid_length = len(page) >= MIN_PAGE_NAME_LENGTH
        valid_name = re.match('^[a-z]+$', page.lower()) is not None
        if valid_length and valid_name:
            return render_template("{}.html".format(page))
        else:
            msg = "Sorry, couldn't find page with name {}".format(page)
            raise NotFound(msg)
    except:
        return Response("404 Not Found")


if __name__ == "__main__":
    app.run(debug=True)

В приведенном выше коде приложения есть стандартный импорт Flask, поэтому мы можем создать веб-приложение Flask и отобразить файлы шаблонов. У нас есть сингл функция с именем show_page для обслуживания одного маршрута Flask. show_page проверяет, содержит ли путь URL только буквенные символы нижнего регистра для потенциальное имя страницы. Если название страницы можно найти в шаблонах папка, то страница отображается, в противном случае создается исключение что страница не может быть найдена. Нам нужно создать хотя бы один шаблон file, если наша функция когда-либо вернет ответ без ошибок.

Сохраните app.py и создайте новый подкаталог с именем templates под своим каталог проекта. Создайте новый файл с именем battlegrounds.html и поместите следующую разметку шаблона Jinja2.




  
    You found the Battlegrounds GIF!
  
  
    

PUBG so good.

Вышеупомянутый шаблон Jinja2 представляет собой базовый HTML-код без каких-либо встроенные теги шаблонов . Шаблон создает очень простую страницу с описанием заголовка “PUBG so good” и GIF из этого отличная компьютерная игра .

Пришло время запустить и протестировать наш код. Перейдите в базовый каталог вашего проект, в котором находится файл app.py . Выполните app.py с помощью python команду следующим образом (убедитесь, что ваш virtualenv все еще активирован в терминал, на котором вы запускаете эту команду):

python app.py

Сервер разработки Flask должен запуститься и отобразить несколько строк вывода.

Запустить сервер разработки Flask локально.

Что происходит, когда мы обращаемся к приложению, запущенному на порт localhost 5000 ?

При тестировании нашего приложения Flask по базовому URL возникает ошибка HTTP 404.

Страница статуса HTTP 404 не найдена, чего мы и ожидали, потому что мы только определил единственный маршрут, и он не находился на базовом пути.

Мы создали шаблон с именем battlegrounds.html , который должен быть доступен когда мы идем в localhost: 5000/battlegrounds/.

При тестировании нашего приложения Flask на / battlegrounds / мы получаем подходящий шаблон с GIF.

Приложение успешно нашло шаблон battlegrounds.html , но это единственный доступный. Что если мы попробуем localhost: 5000/fullstackpython/?

Если шаблон не найден, мы получаем ошибку 500.

Ошибка HTTP 500. Это не хорошо.

Ошибки 404 и 500 очевидны для нас прямо сейчас, потому что мы локальное тестирование приложения. Однако что происходит, когда приложение развернут, и пользователь получает ошибку в собственном веб-браузере? Они будут обычно уходят из-за разочарования, и вы никогда не узнаете, что произошло если вы не добавите отслеживание ошибок и мониторинг приложений.

Теперь мы изменим наш код, добавив Rollbar, чтобы ловить и сообщать об этих ошибки, возникающие у наших пользователей.

Обработка ошибок

Перейдите на главную страницу Rollbar , чтобы мы могли добавить их размещенные инструменты мониторинга в нашем часто ошибочном приложении Flask.

Домашняя страница Rollbar в веб-браузере.

Нажмите кнопку «Зарегистрироваться» в правом верхнем углу. Введите свой адрес электронной почты, имя пользователя и пароль, которые вы хотите указать на странице регистрации.

Введите основную информацию об учетной записи на странице регистрации.

После страницы регистрации вы увидите процесс адаптации, где вы можете введите название проекта и выберите язык программирования. Для проекта name введите “Battlegrounds” и выберите, что вы отслеживаете приложение Python.

Создайте новый проект с именем «Battlegrounds» и выберите Python в качестве языка программирования.

Нажмите кнопку «Продолжить» внизу, чтобы двигаться дальше. Следующий экран показывает нам несколько быстрых инструкций по добавлению мониторинга в наш Flask применение.

Настройте свой проект, используя токен доступа на стороне сервера.

Давайте изменим наше приложение Flask, чтобы проверить, можем ли мы правильно подключиться к сервису Rollbar. Измените app.py , чтобы включить следующие выделенные линий.