-
-
Notifications
You must be signed in to change notification settings - Fork 92
Add cookbook page about sentry integration #134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 6 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
aa81f43
Add cookbook page about sentry integration
xepozz 5af619b
Fix link
xepozz ed3d464
Add description about the tool
xepozz d4868ba
Apply suggestions from code review
samdark d0462f9
Update README.md
samdark 5f20fb0
Rename Интеграция с Sentry.md to sentry-integration.md
samdark 6f24957
Update sentry-integration.md
samdark d56c013
Add Russian preface, fix typos
samdark 2e56458
Merge branch 'master' into cookbook-sentry
samdark 8dd93eb
fix typo
samdark ab4e22f
Merge branch 'master' into cookbook-sentry
samdark 578029d
Add English translation
samdark File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| # Книга рецептов Yii3 | ||
|
|
||
| Книга рецептов Yii3 – это бесплатная книга, которая состоит из подсказок и секретов о PHP фреймворке [Yii3](https://www.yiiframework.com/). | ||
| Книга создана сообществом Yii. Роддерживается и редактируется силами команды Yii. | ||
|
|
||
| Не стесняйтесь создать pull request со своими рецептами. Мы сделаем ревью и добавим ваш рецепт в книгу. | ||
|
|
||
| Книга следует [правилам для документации Yii](https://www.yiiframework.com/doc/terms/). | ||
|
|
||
| --- | ||
|
|
||
| Оглавление | ||
| --------------- | ||
|
|
||
| [Встёпление](preface.md) | ||
| [Интеграция с Sentry](sentry-integration.md) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,130 @@ | ||
| # Интеграция с Sentry | ||
|
|
||
| ## Оглавление | ||
| 0. [Что такое Sentry](#Что-такое-Sentry) | ||
| 1. [Установка](#Установка) | ||
| 1.1. [Установка пакета](#Установка-пакета) | ||
| 1.2. [Установка HTTP-драйвера](#Установка-HTTP-драйвера) | ||
| 2. [Настройка](#Настройка) | ||
| 2.1. [Получение и сохранение токена](#Получение-и-сохранение-токена) | ||
| 2.2. [Настройка HTTP-клиента](#Настройка-HTTP-клиента) | ||
| 3. [Интеграция](#Интеграция) | ||
| 3.1. [Веб](#Веб) | ||
| 3.2. [Консоль](#Консоль) | ||
|
|
||
| ## Что такое Sentry | ||
|
|
||
| [Sentry](https://sentry.io/) – это инструмент мониторинга и отладки производительности и стабильности. | ||
| Sentry представляет доступ к событиям, которые вы отправите туда из вашего приложения. | ||
|
|
||
| Чаще всего Sentry используется для мониторинга ошибок (исключений). | ||
| Ошибки можно "обогатить" контекстом для лучшего понимания вызванной проблемы: | ||
| - Аргументы, с которыми вызывалось приложение | ||
| - Теги, для группировки исключений | ||
| - Состояние среды окружения: переменные окружения, состояние приложения и прочие "глобальные" аттрибуты | ||
|
|
||
| Полный список всех возможностей можно найти на официальном сайте: https://sentry.io/welcome/ | ||
|
|
||
| ## Установка | ||
|
|
||
| ### Установка пакета | ||
|
|
||
| Для установки нужного пакета установите пакет `yiisoft/yii-sentry` следующей командой: | ||
|
|
||
| ```shell | ||
| composer require yiisoft/yii-sentry --prefer-dist | ||
|
|
||
| ### Установка HTTP-драйвера | ||
|
|
||
| Библиотека [`getsentry/sentry-php`](https://github.com/getsentry/sentry-php) требует установки `php-http/httplug` пакета и любого HTTP-драйвера. | ||
| Для примеры используется адаптер `Guzzle`. | ||
|
|
||
| > Список всех адаптеров можно найти на [этой](https://docs.php-http.org/en/latest/clients.html#clients-adapters) странице. | ||
|
|
||
| Для установки пакетов выполните в консоли следующую команду. | ||
|
|
||
| ```shell | ||
| composer require php-http/httplug php-http/guzzle7-adapter --prefer-dist | ||
|
|
||
| ## Настройка | ||
|
|
||
| ### Получение и сохранение токена | ||
|
|
||
| Далее сконфигурируем приложение. | ||
|
|
||
| Для начала зарегистрируйтесь в [Sentry](https://sentry.io) и создайте проект. | ||
|
|
||
| Далее в настройках проекта, на вкладке `General Settings`, найдите поле `Security Token` и скопируйте оттуда значение. | ||
|
|
||
| Теперь положите этот токен в настройки пакета. По умолчанию конфиг лежит в `config/packages/yiisoft/yii-sentry/config/params.php`. | ||
| Скопированный токен запишите в значение элемента массива по ключу `yiisoft/yii-sentry` => `options` => `dsn`. Пример: | ||
|
|
||
| ```diff | ||
| 'yiisoft/yii-sentry' => [ | ||
| 'enabled' => true, | ||
| 'options' => [ | ||
| - 'dsn' => '', | ||
| + 'dsn' => 'ТОКЕН', | ||
| ], | ||
| ], | ||
| ``` | ||
|
|
||
|
|
||
| ### Настройка HTTP-клиента | ||
|
|
||
| После установки HTTP-клиента, сконфигурируйте его. | ||
|
|
||
| Создайте файл `config/common/sentry.php` и положите в него следующий код: | ||
|
|
||
| ```php | ||
| <?php | ||
|
|
||
| declare(strict_types=1); | ||
|
|
||
| return [ | ||
| \Http\Client\HttpClient::class => \GuzzleHttp\Client::class, | ||
| \Http\Client\HttpAsyncClient::class => [ | ||
| 'class' => \Http\Adapter\Guzzle7\Client::class, | ||
| '__construct()' => [ | ||
| \Yiisoft\Factory\Definition\Reference::to(\Http\Client\HttpClient::class), | ||
| ], | ||
| ], | ||
| ]; | ||
| ``` | ||
|
|
||
| # Интеграция | ||
|
|
||
| ### Веб | ||
|
|
||
| Поддержка Sentry для `web` реализована как `middleware`. | ||
|
|
||
| А это значит, что достаточно будет добавить `SentryMiddleware` в глобальный список `middleware` в `config/web/application.php`: | ||
|
|
||
|
|
||
| ```diff | ||
| return [ | ||
| Yiisoft\Yii\Web\Application::class => [ | ||
| '__construct()' => [ | ||
| 'dispatcher' => DynamicReference::to(static function (Injector $injector) { | ||
| return ($injector->make(MiddlewareDispatcher::class)) | ||
| ->withMiddlewares( | ||
| [ | ||
| Router::class, | ||
| SubFolder::class, | ||
| + SentryMiddleware::class, | ||
| ErrorCatcher::class, | ||
| ] | ||
| ); | ||
| }), | ||
| 'fallbackHandler' => Reference::to(NotFoundHandler::class), | ||
| ], | ||
| ], | ||
| ]; | ||
| ``` | ||
|
|
||
|
|
||
| ### Консоль | ||
|
|
||
| Sentry поддерживает `console` в виде обработчика события [ConsoleEvents::ERROR](https://symfony.com/doc/current/components/console/events.html#the-consoleevents-error-event). | ||
|
|
||
| Пакет предоставляет конфигурационный файл, который автоматически подписывает приложение на это событие. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.