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

Мониторинг проектов Django с помощью Rollbar

Добавьте службу мониторинга в веб-приложения на основе Django с помощью размещенной службы, такой как Rollbar.

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

Один быстрый способ поиска исключений и ошибок в вашем Проекты веб-приложений Django – это добавить несколько строк код для включения размещенного инструмента мониторинга.

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

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

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

  • Веб-фреймворк Django,
  • версия 2.0.4
  • Rollbar мониторинг
  • библиотека приборов,
  • версия 0.13.18 ,
  • сообщать об исключениях и ошибках
  • pip и
  • virtualenv , который уже установлен
  • с Python 3, чтобы установить и изолировать эти библиотеки Django и Rollbar
  • из других ваших приложений
  • бесплатная учетная запись Rollbar , на которую мы отправим сообщение об ошибке
  • данные и просмотреть их, когда они будут захвачены

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

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

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

Начните проект с создания нового виртуальная среда используя следующую команду. Рекомендую вести отдельный каталог например, ~/venvs/, чтобы вы всегда знали, где находятся все ваши виртуальные серверы располагается.

python3 -m venv monitordjango

Активируйте virtualenv с помощью сценария оболочки activate :

source monitordjango/bin/activate

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

Активировать virtualenv в командной строке.

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

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

pip install django==2.0.4 rollbar==0.13.18

Найдите вывод, подобный следующему, чтобы подтвердить зависимости установлены правильно.

Collecting certifi>=2017.4.17 (from requests>=0.12.1->rollbar==0.13.18)
  Downloading certifi-2018.1.18-py2.py3-none-any.whl (151kB)
    100% |████████████████████████████████| 153kB 767kB/s 
Collecting urllib3<1.23,>=1.21.1 (from requests>=0.12.1->rollbar==0.13.18)
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=0.12.1->rollbar==0.13.18)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests>=0.12.1->rollbar==0.13.18)
  Using cached idna-2.6-py2.py3-none-any.whl
Installing collected packages: pytz, django, certifi, urllib3, chardet, idna, requests, six, rollbar
  Running setup.py install for rollbar ... done
Successfully installed certifi-2018.1.18 chardet-3.0.4 django-2.0.4 idna-2.6 pytz-2018.3 requests-2.18.4 rollbar-0.13.18 six-1.11.0 urllib3-1.22

Наши зависимости готовы к работе, поэтому теперь мы можем написать код для наш проект Django.

Наше веб-приложение Django

Django упрощает создание шаблонного кода для новых проектов и приложений с помощью команд django-admin.py . Перейти к каталог, в котором вы обычно храните свои проекты кодирования. Например, на на моем Mac я использую /Users/matt/devel/py/. Затем выполните следующую команду, чтобы запустите проект Django с именем djmonitor :

django-admin.py startproject djmonitor

Команда создаст каталог с именем djmonitor с несколькими подкаталоги, с которыми вы должны быть знакомы, когда вы ранее работал с Django.

Поменяйте каталоги в новый проект.

cd djmonitor

Запустите новое приложение Django для нашего примера кода.

python manage.py startapp billions

Django создаст новую папку с именем billions для нашего проекта. Прежде чем писать, убедитесь, что наши URL-адреса Django работают правильно. код для приложения.

Теперь откройте djmonitor/djmonitor/urls.py и добавьте выделенные строки, чтобы URL-адреса с путем /billions/ будут направлены в приложение, над которым мы работаем.

""" (comments section)
"""
from django.conf.urls import include
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('billions/', include('billions.urls')),
    path('admin/', admin.site.urls),
]

Сохраните djmonitor/djmonitor/urls.py и откройте djmonitor/djmonitor/settings.py . Добавьте приложение миллиарды в settings.py , вставив выделенную строку, которая после вставки станет строкой 40:

# Application definition

INSTALLED_APPS = [ 
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'billions',
]

Сохраните и закройте settings.py .

Напоминание : не забудьте изменить значения по умолчанию DEBUG и SECRET_KEY . значения в settings.py перед развертыванием любого кода в производственной среде. Безопасный ваше приложение правильно с информацией из Контрольный список производственного развертывания Django чтобы вы не добавляли свой проект в список взломанных приложений В интернете.

Затем перейдите в каталог djmonitor/billions . Создайте новый файл с именем urls.py , который будет относиться к маршрутам для приложения миллиарды в проект djmonitor .

Добавьте следующие строки в текущий пустой djmonitor/billions/urls.py файл.

from django.conf.urls import url                                                                                                                              
from . import views

urlpatterns = [ 
    url(r'(?P[\wa-z-]+)', views.they, name="they"),
]

Сохраните djmonitor/billions/urls.py . Еще один файл, прежде чем мы сможем это проверить наше простое приложение Django работает. Откройте djmonitor/billions/views.py .

from django.core.exceptions import PermissionDenied
from django.shortcuts import render


def they(request, slug):
    if slug and slug == "are":
        return render(request, 'billions.html', {})
    else:
        raise PermissionDenied("Hmm, can't find what you're looking for.")

Создайте каталог для файлов шаблонов с именем templates в разделе каталог приложения djmonitor/billions .

mkdir templates

В шаблонах создайте новый файл с именем billions.html , содержащий следующая разметка шаблона Django.




  
    They... are BILLIONS!
  
  
    

Хорошо, все наши файлы на месте, поэтому мы можем протестировать приложение. В базовом каталоге вашего проекта запустите разработку Django сервер:

python manage.py runserver

Сервер разработки Django запустится без каких-либо проблем, кроме предупреждение о непримененных миграциях.

(monitordjango) $ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

April 08, 2018 - 19:06:44
Django version 2.0.4, using settings 'djmonitor.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Только маршрут /billions/ успешно затронет наше приложение миллиарды . Пытаться для доступа к “http://localhost: 8000/миллиарды/ар/”. Мы должны увидеть наш шаблон рендерить с гифкой:

Тестирование локального сервера разработки в / миллиарды / are /.

Отлично, наше приложение успешно отрендерило супер-простую HTML-страницу с GIF-изображением одной из моих любимых компьютерных игр. Что, если мы попробуем другой путь в /billions/, например “http://localhost: 8000/billions/arenot/”?

403 Запрещенная ошибка с любым путем в / миллиарды / кроме / миллиарды / are /.

Поднят наш 403 Forbidden, чего мы и ожидали, основываясь на нашем коде. Это несколько надуманный блок кода, но давайте посмотрим, как мы можем поймать и сообщить об этом типе ошибки, не изменяя наш views.py код вообще. Этот подход будет намного проще для нас при изменении существующее приложение, чем необходимость рефакторинга кода для отчета эти типы ошибок, если мы даже знаем, где они существуют.

Мониторинг с помощью Rollbar

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

rollbar.com в Chrome.

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

Зарегистрируйтесь в Rollbar.

После страницы регистрации вы увидите процесс адаптации, где вы можете введите название проекта и выберите язык программирования. Для проекта введите имя в “Full Stack Python” (или любое другое название вашего проекта работает), затем выберите, что вы отслеживаете приложение на основе Python.

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

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

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

Давайте изменим код нашего проекта Django, чтобы позволить Rollbar собирать и агрегировать ошибки, которые появляются в нашем приложении.

Снова откройте djmonitor/djmonitor/settings.py и найдите MIDDLEWARE список. Добавьте rollbar.contrib.django.middleware.RollbarNotifierMiddleware как последний пункт:

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'rollbar.contrib.django.middleware.RollbarNotifierMiddleware',
]

Пока не закрывайте settings.py . Затем добавьте следующие строки в конец файла. Измените значение access_token на свое Маркер доступа на стороне сервера Rollbar и root в каталог, в котором вы разрабатываете свой проект.

ROLLBAR = {
    'access_token': 'access token from dashboard',
    'environment': 'development' if DEBUG else 'production',
    'branch': 'master',
    'root': '/Users/matt/devel/py/blog-code-examples/monitor-django-apps/djmonitor',
    'patch_debugview': False,
}

Если вы не уверены, какой у вас секретный токен, его можно найти на экран подключения Rollbar или “Настройки” -> “Токены доступа” в rollbar.com .

Обратите внимание, что я обычно храню все свои переменные среды в .env

Мы можем проверить, что Rollbar работает, когда мы запускаем наше приложение. Запустить его теперь использую сервер разработки.

python manage.py runserver

Вернувшись в веб-браузер, нажмите кнопку «Готово! Перейти на панель управления».

Если о событии еще не было сообщено, мы увидим такой экран ожидания один:

Ожидание данных о событиях на панели управления.

Убедитесь, что ваш сервер разработки Django все еще работает, и попробуйте перейти на “http://localhost: 8000/миллиарды/arenot/”. Немедленно сообщается об ошибке 403 на приборной панели:

403 Запрещенные исключения на экране панели управления Rollbar.

Мы даже получаем электронное письмо с ошибкой (которое также можно отключить, если вы не хочу получать электронные письма о каждой ошибке):

Электронный отчет об ошибках в вашем приложении Django.

Хорошо, теперь у нас есть мониторинг и отчеты об ошибках, настроенные для нашего Приложение Django!

Что теперь?

Мы научились обнаруживать проблемы в нашем проекте Django с помощью Rollbar и просматривать ошибки в интерфейсе Rollbar. Затем попробуйте более продвинутый мониторинг Rollbar такие функции, как:

Есть еще много чего узнать в области веб-разработка и развертывания, так что продолжайте учиться, читая о веб-фреймворках. Вы также можете узнать больше об интеграции Rollbar с приложениями Python через их документацию по Python .

Вопросов? Дай мне знать через запрос на выпуск GitHub в репозитории Full Stack Python , в Твиттере @fullstackpython или @mattmakai .

Вы видите опечатку, проблему с синтаксисом или непонятную формулировку в этом блоге? после? Вилка источник этой страницы на GitHub и отправьте запрос на перенос с исправлением или отправьте сообщение о проблеме на GitHub .