<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация Proto Observability Platform – ошибки</title><link>/docs/tags/%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8/</link><description>Recent content in ошибки on Документация Proto Observability Platform</description><generator>Hugo -- gohugo.io</generator><language>ru</language><atom:link href="/docs/tags/%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>Guides: Приём ошибок из Sentry SDK</title><link>/docs/guides/sentry_integration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/guides/sentry_integration/</guid><description>
&lt;p>&lt;strong>Доступно начиная с версии 202.&lt;/strong>&lt;/p>
&lt;p>Proto Observability Platform принимает ошибки напрямую из приложений,
инструментированных открытыми &lt;strong>Sentry SDK&lt;/strong> (Python, JavaScript/Node.js, Java,
Go, PHP, Ruby, .NET и другие). Чтобы начать отправлять ошибки в платформу,
достаточно указать в SDK адрес платформы (DSN) — переписывать код приложения или
менять библиотеку не нужно.&lt;/p>
&lt;p>Это удобный способ быстро начать работу с платформой: если в приложениях уже
используется Sentry SDK, вы получаете анализ ошибок в ProtoOBP «в день один», а
позже можете подключить полноценный трейсер и собирать не только ошибки, но и
трейсы, транзакции и метрики.&lt;/p>
&lt;p>На этой странице:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#%d0%ba%d0%b0%d0%ba-%d1%8d%d1%82%d0%be-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d0%b5%d1%82">Как это работает&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%88%d0%b0%d0%b3-1-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-dsn">Шаг 1. Настройка DSN&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%88%d0%b0%d0%b3-2-%d1%81%d0%be%d0%bf%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%81-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81%d0%be%d0%bc">Шаг 2. Сопоставление с сервисом&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d1%8b-%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%ba%d0%b8">Примеры отправки&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%87%d1%82%d0%be-%d0%b2%d1%8b-%d1%83%d0%b2%d0%b8%d0%b4%d0%b8%d1%82%d0%b5-%d0%b2-%d0%bf%d0%bb%d0%b0%d1%82%d1%84%d0%be%d1%80%d0%bc%d0%b5">Что вы увидите в платформе&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b4%d0%be%d0%bf%d0%be%d0%bb%d0%bd%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8">Дополнительные настройки&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%be%d0%b3%d1%80%d0%b0%d0%bd%d0%b8%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b8-%d1%81%d0%bb%d0%b5%d0%b4%d1%83%d1%8e%d1%89%d0%b8%d0%b9-%d1%88%d0%b0%d0%b3">Ограничения и следующий шаг&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="как-это-работает">Как это работает&lt;/h2>
&lt;p>Платформа предоставляет приёмный интерфейс, совместимый с протоколом Sentry.
Sentry SDK отправляет событие об ошибке на адрес из DSN, платформа принимает его,
нормализует и сохраняет как ошибку сервиса. Далее ошибка попадает в стандартный
модуль &lt;a href="../../application_performance_monitoring/errors_analytics/">Анализ ошибок APM&lt;/a>:
события объединяются в группы, для каждой группы доступны стек-трейс, сообщения,
счётчики и динамика во времени.&lt;/p>
&lt;p>Отдельная настройка модуля не требуется — ошибки из Sentry SDK отображаются в тех
же разделах, что и ошибки, собранные трейсерами платформы.&lt;/p>
&lt;h2 id="шаг-1-настройка-dsn">Шаг 1. Настройка DSN&lt;/h2>
&lt;p>В Sentry SDK адрес приёма задаётся строкой &lt;strong>DSN&lt;/strong> вида:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">http://&amp;lt;public_key&amp;gt;@&amp;lt;адрес_платформы&amp;gt;/&amp;lt;project_id&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>&amp;lt;public_key&amp;gt;&lt;/code> — произвольный идентификатор проекта; используется для
сопоставления с сервисом (см. &lt;a href="#%d1%88%d0%b0%d0%b3-2-%d1%81%d0%be%d0%bf%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%81-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81%d0%be%d0%bc">шаг 2&lt;/a>).&lt;/li>
&lt;li>&lt;code>&amp;lt;адрес_платформы&amp;gt;&lt;/code> — адрес приёма телеметрии Proto Observability Platform (тот
же хост, на который отправляют данные агенты и трейсеры платформы). Для внешних
приложений используйте &lt;code>https://&lt;/code> и публичный адрес платформы.&lt;/li>
&lt;li>&lt;code>&amp;lt;project_id&amp;gt;&lt;/code> — любое целое число.&lt;/li>
&lt;/ul>
&lt;p>SDK самостоятельно формирует из DSN путь приёма &lt;code>/api/&amp;lt;project_id&amp;gt;/envelope/&lt;/code>
(поддерживается и устаревший путь &lt;code>/api/&amp;lt;project_id&amp;gt;/store/&lt;/code>), поэтому в самом
приложении достаточно указать только DSN.&lt;/p>
&lt;h2 id="шаг-2-сопоставление-с-сервисом">Шаг 2. Сопоставление с сервисом&lt;/h2>
&lt;p>Ошибки в платформе группируются по сервису. Имя сервиса для входящих Sentry-ошибок
определяется в следующем порядке:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Явное сопоставление по &lt;code>public_key&lt;/code> из DSN — переменная окружения
&lt;code>POBP_TRACE_PROCESSOR_SENTRY_PROJECT_MAP&lt;/code> (JSON-объект &lt;code>ключ → имя сервиса&lt;/code>),
задаётся для сервиса &lt;code>proto-trace-processor&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">POBP_TRACE_PROCESSOR_SENTRY_PROJECT_MAP&lt;/span>&lt;span class="o">={&lt;/span>&lt;span class="s2">&amp;#34;checkout-key&amp;#34;&lt;/span>:&lt;span class="s2">&amp;#34;checkout-service&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;billing-key&amp;#34;&lt;/span>:&lt;span class="s2">&amp;#34;billing&amp;#34;&lt;/span>&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Если ключ не задан в сопоставлении — используется тег &lt;code>service&lt;/code> из события.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Если тег не задан — имя хоста (&lt;code>server_name&lt;/code>) из события.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Рекомендуем выделять по одному DSN (public_key) на сервис — это соответствует
модели проектов Sentry и даёт корректную группировку ошибок по сервисам.&lt;/p>
&lt;h2 id="примеры-отправки">Примеры отправки&lt;/h2>
&lt;p>&lt;strong>Python:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sentry_sdk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sentry_sdk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">init&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dsn&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;https://checkout-key@demo.proto.group/1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">environment&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;production&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">release&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;checkout@1.4.2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sentry_sdk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_tag&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;service&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;checkout-service&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mi">1&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sentry_sdk&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">capture_exception&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>JavaScript (браузер / Node.js):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="nx">as&lt;/span> &lt;span class="nx">Sentry&lt;/span> &lt;span class="nx">from&lt;/span> &lt;span class="s2">&amp;#34;@sentry/browser&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Sentry&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">init&lt;/span>&lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">dsn&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;https://frontend-key@demo.proto.group/2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">environment&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;production&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">release&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;web@2.0.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="что-вы-увидите-в-платформе">Что вы увидите в платформе&lt;/h2>
&lt;p>Ошибки, отправленные через Sentry SDK, отображаются в модуле APM в разделе
&lt;strong>Ошибки&lt;/strong>, а также на вкладке &lt;strong>Ошибки&lt;/strong> соответствующего сервиса. Для каждой
группы ошибок доступны:&lt;/p>
&lt;ul>
&lt;li>тип и сообщение ошибки, стек-трейс;&lt;/li>
&lt;li>количество событий, первое и последнее появление, динамика во времени;&lt;/li>
&lt;li>окружение (&lt;code>environment&lt;/code>) и версия приложения (&lt;code>release&lt;/code>).&lt;/li>
&lt;/ul>
&lt;p>Группа определяется по типу ошибки и месту её возникновения в коде (верхний кадр
стека приложения), а при заданном в SDK «отпечатке» (fingerprint) — по нему.&lt;/p>
&lt;h2 id="дополнительные-настройки">Дополнительные настройки&lt;/h2>
&lt;p>Все переменные окружения задаются для сервиса &lt;code>proto-trace-processor&lt;/code> и имеют
рабочие значения по умолчанию.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Переменная&lt;/th>
&lt;th>По умолчанию&lt;/th>
&lt;th>Назначение&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>POBP_TRACE_PROCESSOR_SENTRY_PROJECT_MAP&lt;/code>&lt;/td>
&lt;td>&lt;code>{}&lt;/code>&lt;/td>
&lt;td>Сопоставление &lt;code>public_key&lt;/code>/&lt;code>project_id&lt;/code> → имя сервиса.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_TRACE_PROCESSOR_SENTRY_MIN_LEVEL&lt;/code>&lt;/td>
&lt;td>&lt;code>error&lt;/code>&lt;/td>
&lt;td>Минимальный уровень принимаемых событий (&lt;code>debug&lt;/code>/&lt;code>info&lt;/code>/&lt;code>warning&lt;/code>/&lt;code>error&lt;/code>/&lt;code>fatal&lt;/code>).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_TRACE_PROCESSOR_SENTRY_MAX_EPS&lt;/code>&lt;/td>
&lt;td>&lt;code>100&lt;/code>&lt;/td>
&lt;td>Ограничение числа событий в секунду на проект (защита от всплесков).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_TRACE_PROCESSOR_SENTRY_MAX_BODY_BYTES&lt;/code>&lt;/td>
&lt;td>&lt;code>16777216&lt;/code>&lt;/td>
&lt;td>Максимальный размер запроса (16 МБ).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>POBP_TRACE_PROCESSOR_SENTRY_MAX_DECOMPRESSED_BYTES&lt;/code>&lt;/td>
&lt;td>&lt;code>67108864&lt;/code>&lt;/td>
&lt;td>Максимальный размер после распаковки (64 МБ).&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="ограничения-и-следующий-шаг">Ограничения и следующий шаг&lt;/h2>
&lt;p>Sentry-события содержат отдельные ошибки, но не распределённые трейсы. Поэтому
приложение, отправляющее в платформу только ошибки через Sentry SDK, отображается
в разделе &lt;strong>Ошибки&lt;/strong>, но не появляется как полноценный сервис APM (с трейсами,
транзакциями и метриками производительности).&lt;/p>
&lt;p>Чтобы получить полную наблюдаемость, подключите к этому же приложению полноценный
трейсер Proto Observability Platform или OpenTelemetry, указав то же имя сервиса.
Ошибки из Sentry SDK и данные трейсера объединятся по имени сервиса, и приложение
станет полноценным сервисом APM с трейсами, транзакциями, метриками и ошибками в
едином интерфейсе.&lt;/p></description></item></channel></rss>