Статьи

Создание вашего стартапа: регистрация ошибок

Конечный продукт
Что вы будете создавать

Это руководство является частью серии « Создай свой стартап с помощью PHP» на Envato Tuts +. В этой серии я проведу вас через запуск стартапа от концепции до реальности, используя мое приложение Meeting Planner в качестве примера из реальной жизни. На каждом этапе я буду публиковать код Планировщика собраний в качестве примеров с открытым исходным кодом, из которых вы можете извлечь уроки. Я также буду решать вопросы, связанные с бизнесом по мере их возникновения.

После того, как Meeting Planner перешел в альфа-релиз, и люди начали активно использовать его для планирования собраний, возникли ошибки, о которых пользователи редко сообщали. Но в разговорах с людьми по телефону они обычно рассказывали мне о проблемах, с которыми сталкивались.

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

Если вы еще не опробовали Планировщик собраний, запланируйте свою первую встречу . Я принимаю участие в комментариях ниже, так что скажите мне, что вы думаете! Вы также можете связаться со мной в Twitter @reifman . Мне особенно интересно, если вы хотите предложить новые функции или темы для будущих уроков.

Напоминаем, что весь код для Meeting Planner написан на Yii2 Framework для PHP. Если вы хотите узнать больше о Yii2, ознакомьтесь с нашей параллельной серией Программирование с Yii2 .

Давайте начнем.

Регистрация стартапов - Домашняя страница Rollbar

И Rollbar, и Sentry были рекомендованы мне Алексом Макаровым , одним из ведущих разработчиков-добровольцев в Yii Framework . Алекс очень помог мне в расширении моего опыта в Yii2, пока я создаю Meeting Planner и пишу о преимуществах фреймворка.

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

И, хотя я начал работать с основами, использую несколько открытых плагинов Yii2 (их несколько) для Rollbar. У меня начались производственные ошибки, которые на самом деле были вызваны плагинами.

Регистрация стартапов - Rolbar Интегрируем ваше PHP-приложение

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

Построение журнала запуска - Rollbar Список ошибок

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

Чтобы оптимизировать их опыт и мое время, я временно отключил обработку ошибок и решил попробовать использовать Sentry.

Просто чтобы быть ясным, я думаю, что с лучшим расширением Rollbar Yii2 и более тщательной настройкой (которая никогда не документируется хорошо с помощью сторонних плагинов, подобных этим), сервис работал бы хорошо. Я не хочу отговаривать вас от этого.

Sentry — это сопоставимая служба журналирования, хотя и менее дорогая, чем Rollbar. Более низкая стоимость часто помогает стартапам.

Регистрация стартапов - Домашняя страница Sentry

Вы можете видеть, что их первое повышение цен начинается всего с 29 долларов в месяц :

Регистрация стартапов - страница ценообразования

Я начал использовать форму регистрации, чтобы начать:

Регистрация стартапов в зданиях - форма регистрации Sentry

В Sentry я создал новый проект для Meeting Planner, чтобы отслеживать ошибки в этом домене:

Регистрация стартапов - Sentry Создать новую форму проекта

Затем Sentry предлагает вам руководства для ряда языков и фреймворков (Yii еще не включен, подсказка команде Sentry!):

Регистрация стартапов - Sentry Configure Your Application Guide

Для Планировщика собраний я выбрал расширение Notamedia Yii2 Sentry . Я столкнулся с несколькими незначительными проблемами, которые замедлили меня.

Во-первых, у меня были проблемы с поиском уникальных кодов авторизации для моего сайта, чтобы идентифицировать себя для Sentry. Обычно их очень легко найти в веб-сервисах, но поиск занял у меня от 10 до 15 минут.

В нижней части левого меню страницы « Настройки» есть опция « Ключи клиента» (DSN), которая отображает их:

Регистрация стартапов - Sentry Client Keys DSN

Я разбил ключи на три части и поместил их в свой файл mp.ini для всех ключей Meeting Planner:

1
2
3
4
#rollbar_key = «bxxxxxxxxxxxxxxxxxxxxxxxxxxxxf»
sentry_key_public = «bxxxyyyyxxxzzzzyyyyccccc»
sentry_key_private = «8b3333xxxyyyyxxxzzzzyyyyccccc4446»
sentry_id =»9922″

В /frontend/config/main.php я обновил рекомендуемые настройки плагина, чтобы использовать мои конкретные переменные из mp.ini. Они начинаются ниже с $ config :

1
‘log’ => [ ‘traceLevel’ => YII_DEBUG ?

Тогда я не смог заставить Sentry записывать сообщения об ошибках. Оказалось, что документация для плагина notamedia использовала URL sentry.com вместо sentry.io . К счастью, я понял это всего за несколько минут и не тратил слишком много времени.

Sentry отправляет вам вводное электронное письмо, но я не заметил, что оно пришло позже. Тем не менее, это очень полезно:

Регистрация стартапов - Добро пожаловать в Sentry Email

На одном из моих контроллеров в моей локальной среде я просто добавил код в actionIndex который actionIndex бы при загрузке страницы на сайте:

1
\Yii::warning have a problem Portland.’);

Очень быстро начали поступать сообщения об ошибках из локальной и производственной среды. Они приземляются в приборной панели Sentry.

Ведение журнала стартапов - приборная панель Sentry

Вот пример отчета по одной из моих поддельных ошибок тестирования: « У нас проблема в Портленде». Он показывает все полезные данные, которые Sentry собирает для вас, чтобы упростить обнаружение, выявление и отладку производственных ошибок:

Регистрация стартапов - пример отчета об ошибках в Sentry У нас проблема в Портленде

Выше вы можете увидеть теги, связанные с URL-адресами и браузером пользователя. Ниже отчет продолжает показывать строки кода, вызвавшие ошибку:

Построение журнала запуска - 2-й сегмент ошибки примера

Он также показывает куки выше и заголовки и идентификаторы пользователей ниже:

Построение журнала запуска - 3-й сегмент ошибки примера

Это все очень полезно.

По умолчанию Sentry также отправляет вам сообщения об ошибках по электронной почте (чтобы вы сразу узнали о них):

Построение журнала ошибок при запуске - Sentry Email Bug Report

Фактически, очень быстро Sentry показал мне, что хакерские боты WordPress уже пингуют wp-login и wp-admin на моем сайте. Хотя их здесь нет, я хочу минимизировать их влияние. Поэтому я добавил действие neverland в интерфейсный SiteController.php, чтобы просто завершить выполнение приложения.

1
2
3
4
5
public function actionNeverland()
   {
     // for abusive scripts like wp-login probes
     Yii::$app->end();
   }

Sentry также обнаружил проблему с разрешением, которая возникала при кэшировании в моих фоновых задачах. Это тоже было полезно.

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

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

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

Если вы еще этого не сделали, попробуйте составить расписание и поделитесь Планировщиком собраний со своими друзьями. Как обычно, я буду признателен, если вы поделитесь своим опытом ниже в комментариях, и мне всегда интересны ваши предложения. Вы всегда можете связаться со мной в Twitter @reifman напрямую.

Я также все ближе к запуску эксперимента с WeFunder, основанного на реализации новых правил краудфандинга SEC . Вы можете следить за нашим профилем там, если хотите. Я также напишу больше об этом в следующем уроке.