<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация Proto Observability Platform – processing_rules</title><link>/docs/tags/processing_rules/</link><description>Recent content in processing_rules on Документация Proto Observability Platform</description><generator>Hugo -- gohugo.io</generator><language>ru</language><atom:link href="/docs/tags/processing_rules/index.xml" rel="self" type="application/rss+xml"/><item><title>Instrumentation: Обработка логов на агенте</title><link>/docs/instrumentation/logs/agent-processing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/instrumentation/logs/agent-processing/</guid><description>
&lt;p>На этой странице:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#%d0%b3%d0%b4%d0%b5-%d0%b7%d0%b0%d0%b4%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d0%b0">Где задаются правила&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bf%d0%be%d1%80%d1%8f%d0%b4%d0%be%d0%ba-%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f">Порядок применения&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%82%d0%b8%d0%bf%d1%8b-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb">Типы правил&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#exclude_at_match--%d0%b8%d1%81%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8">exclude_at_match — исключить записи&lt;/a>&lt;/li>
&lt;li>&lt;a href="#include_at_match--%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%bd%d1%83%d0%b6%d0%bd%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8">include_at_match — оставить только нужные записи&lt;/a>&lt;/li>
&lt;li>&lt;a href="#mask_sequences--%d0%bc%d0%b0%d1%81%d0%ba%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d0%b5">mask_sequences — маскировать данные&lt;/a>&lt;/li>
&lt;li>&lt;a href="#multi_line--%d1%81%d0%ba%d0%bb%d0%b5%d0%b8%d1%82%d1%8c-%d0%bc%d0%bd%d0%be%d0%b3%d0%be%d1%81%d1%82%d1%80%d0%be%d1%87%d0%bd%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8">multi_line — склеить многострочные записи&lt;/a>&lt;/li>
&lt;li>&lt;a href="#exclude_truncated--%d0%b8%d1%81%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-%d0%be%d0%b1%d1%80%d0%b5%d0%b7%d0%b0%d0%bd%d0%bd%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8">exclude_truncated — исключить обрезанные записи&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#%d0%b0%d0%b2%d1%82%d0%be%d0%bc%d0%b0%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b0%d1%8f-%d1%81%d0%ba%d0%bb%d0%b5%d0%b9%d0%ba%d0%b0-%d0%bc%d0%bd%d0%be%d0%b3%d0%be%d1%81%d1%82%d1%80%d0%be%d1%87%d0%bd%d1%8b%d1%85-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b5%d0%b9">Автоматическая склейка многострочных записей&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d1%81%d0%be%d0%be%d0%b1%d1%89%d0%b5%d0%bd%d0%b8%d1%8f">Размер сообщения&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb">Проверка правил&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Агент обрабатывает каждую запись лога до отправки на ProtoOBP Backend. Отброшенные записи не передаются по сети и не занимают место в хранилище, а замаскированные данные не покидают хост. Обработка выполняется для логов, которые собирает агент. Логи, отправленные напрямую в &lt;code>proto-log-storage&lt;/code> или через OpenTelemetry Collector (см. &lt;a href="../data-ingestion/">Получение логов&lt;/a>), агентом не обрабатываются.&lt;/p>
&lt;h2 id="где-задаются-правила">Где задаются правила&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Уровень&lt;/th>
&lt;th style="text-align:left">Где&lt;/th>
&lt;th style="text-align:left">Действует на&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Глобальный&lt;/td>
&lt;td style="text-align:left">&lt;code>logs_config.processing_rules&lt;/code> в &lt;code>protoobp.yaml&lt;/code> или переменная &lt;code>POBP_LOGS_CONFIG_PROCESSING_RULES&lt;/code> (JSON)&lt;/td>
&lt;td style="text-align:left">все логи, которые собирает агент&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Источник&lt;/td>
&lt;td style="text-align:left">&lt;code>log_processing_rules&lt;/code> в секции &lt;code>logs:&lt;/code> файла интеграции &lt;code>conf.d/&amp;lt;интеграция&amp;gt;.d/conf.yaml&lt;/code>&lt;/td>
&lt;td style="text-align:left">один источник логов&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Контейнер&lt;/td>
&lt;td style="text-align:left">&lt;code>log_processing_rules&lt;/code> в лейбле &lt;code>com.protoobp.ad.logs&lt;/code> или аннотации &lt;code>ad.protoobp.com/&amp;lt;контейнер&amp;gt;.logs&lt;/code>&lt;/td>
&lt;td style="text-align:left">логи одного контейнера — см. &lt;a href="../../../setup/agent/autodiscovery/#%d1%81%d0%b1%d0%be%d1%80-%d0%bb%d0%be%d0%b3%d0%be%d0%b2-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b0%d0%b2%d1%82%d0%be%d0%be%d0%b1%d0%bd%d0%b0%d1%80%d1%83%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5">Автообнаружение&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Каждое правило — объект с полями &lt;code>type&lt;/code> (тип), &lt;code>name&lt;/code> (имя, обязательно) и, для большинства типов, &lt;code>pattern&lt;/code> (регулярное выражение в синтаксисе RE2: без просмотра вперёд и назад).&lt;/p>
&lt;p>Пример для файла интеграции:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># conf.d/myapp.d/conf.yaml&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">logs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">file&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/var/log/myapp/*.log&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">service&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">myapp&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">source&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">java&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">log_processing_rules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">exclude_at_match&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">drop_healthchecks&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;GET /(health|ready)&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>То же в переменной окружения (для Docker и Kubernetes):&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_LOGS_CONFIG_PROCESSING_RULES&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;[{&amp;#34;type&amp;#34;:&amp;#34;exclude_at_match&amp;#34;,&amp;#34;name&amp;#34;:&amp;#34;drop_healthchecks&amp;#34;,&amp;#34;pattern&amp;#34;:&amp;#34;GET /(health|ready)&amp;#34;}]&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>В строке YAML в одинарных кавычках обратная косая черта пишется один раз (&lt;code>'\d+'&lt;/code>), в двойных кавычках и в JSON — дважды (&lt;code>&amp;quot;\\d+&amp;quot;&lt;/code>).&lt;/p>
&lt;h2 id="порядок-применения">Порядок применения&lt;/h2>
&lt;ol>
&lt;li>Сначала выполняется склейка многострочных записей (&lt;code>multi_line&lt;/code> или автоматическая): дальше правила видят уже склеенную запись.&lt;/li>
&lt;li>Затем по порядку применяются глобальные правила, после них — правила источника.&lt;/li>
&lt;li>Каждое правило получает запись в том виде, в каком её оставили предыдущие. Например, если &lt;code>mask_sequences&lt;/code> стоит перед &lt;code>exclude_at_match&lt;/code>, исключающее правило проверяет уже замаскированный текст.&lt;/li>
&lt;li>Как только запись отброшена (&lt;code>exclude_at_match&lt;/code>, &lt;code>include_at_match&lt;/code>, &lt;code>exclude_truncated&lt;/code>), следующие правила к ней не применяются.&lt;/li>
&lt;/ol>
&lt;h2 id="типы-правил">Типы правил&lt;/h2>
&lt;h3 id="exclude_at_match--исключить-записи">exclude_at_match — исключить записи&lt;/h3>
&lt;p>Запись, в которой найдено совпадение с &lt;code>pattern&lt;/code>, отбрасывается.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">log_processing_rules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">exclude_at_match&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">drop_debug&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;\b(DEBUG|TRACE)\b&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="include_at_match--оставить-только-нужные-записи">include_at_match — оставить только нужные записи&lt;/h3>
&lt;p>Отправляются только записи с совпадением; остальные отбрасываются. Если задано несколько правил &lt;code>include_at_match&lt;/code>, запись должна совпасть &lt;strong>с каждым&lt;/strong>. Чтобы оставить записи, совпадающие хотя бы с одним из вариантов, объедините их в одном выражении через &lt;code>|&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">log_processing_rules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">include_at_match&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">only_errors&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;\b(ERROR|FATAL|CRITICAL)\b&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="mask_sequences--маскировать-данные">mask_sequences — маскировать данные&lt;/h3>
&lt;p>Каждое совпадение заменяется строкой &lt;code>replace_placeholder&lt;/code>. На группы захвата можно ссылаться как &lt;code>${1}&lt;/code>, &lt;code>${2}&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">log_processing_rules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">mask_sequences&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">mask_password&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;(password=)\S+&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">replace_placeholder&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;${1}[MASKED]&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Готовые правила для номеров банковских карт и других чувствительных данных — в разделе &lt;a href="../../../intro/security/#%d0%bc%d0%b0%d1%81%d0%ba%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b2-%d0%bb%d0%be%d0%b3%d0%b0%d1%85">Маскирование данных в логах&lt;/a>.&lt;/p>
&lt;h3 id="multi_line--склеить-многострочные-записи">multi_line — склеить многострочные записи&lt;/h3>
&lt;p>Стеки исключений, тексты SQL-запросов и другие многострочные сообщения по умолчанию разбиваются на отдельные записи по строкам. Правило &lt;code>multi_line&lt;/code> задаёт шаблон &lt;strong>начала&lt;/strong> записи: строка, совпадающая с &lt;code>pattern&lt;/code> с первого символа, открывает новую запись, а все следующие строки до следующего совпадения добавляются к ней.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">log_processing_rules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">multi_line&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">new_log_start_with_date&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;\d{4}-\d{2}-\d{2}&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># запись начинается с даты 2026-10-15&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Шаблон автоматически привязывается к началу строки, &lt;code>^&lt;/code> указывать не нужно. Правило &lt;code>multi_line&lt;/code> задаётся только для источника или контейнера, не глобально. Если у источника есть &lt;code>multi_line&lt;/code>, автоматическая склейка для него не применяется.&lt;/p>
&lt;p>Примеры для конкретных систем — на страницах &lt;a href="../../infra/databases/postgresql/">PostgreSQL&lt;/a> и &lt;a href="../../infra/databases/mysql/">MySQL&lt;/a>.&lt;/p>
&lt;h3 id="exclude_truncated--исключить-обрезанные-записи">exclude_truncated — исключить обрезанные записи&lt;/h3>
&lt;p>Отбрасывает записи, которые агент обрезал из-за превышения &lt;a href="#%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d1%81%d0%be%d0%be%d0%b1%d1%89%d0%b5%d0%bd%d0%b8%d1%8f">максимального размера&lt;/a>. Поле &lt;code>pattern&lt;/code> не нужно:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">log_processing_rules&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">exclude_truncated&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">drop_truncated&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="автоматическая-склейка-многострочных-записей">Автоматическая склейка многострочных записей&lt;/h2>
&lt;p>Если формат начала записи заранее неизвестен или источников много, включите автоматическое определение. Агент распознаёт начало записи по метке времени в начале строки и по типовым шаблонам и склеивает продолжения с предыдущей записью. JSON-объекты, разбитые на несколько строк, также собираются в одну запись.&lt;/p>
&lt;p>Для всех источников:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">logs_config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">auto_multi_line_detection&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Для одного источника:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">logs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">file&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/var/log/myapp/*.log&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">service&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">myapp&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">source&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">java&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">auto_multi_line_detection&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Если агент ошибается в определении начала записи, подскажите ему образцы:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">logs_config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">auto_multi_line_detection&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">auto_multi_line_detection_custom_samples&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">sample&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;[INFO] 2026-10-15 10:12:03 Request started&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># образец строки, начинающей запись&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">regex&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;^\[\w+\] \d{4}-\d{2}-\d{2}&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># или регулярное выражение&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">label&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">start_group&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Поле образца&lt;/th>
&lt;th style="text-align:left">Назначение&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>sample&lt;/code>&lt;/td>
&lt;td style="text-align:left">Пример строки; запись считается похожей, если совпадает доля токенов не ниже &lt;code>match_threshold&lt;/code> (по умолчанию &lt;code>0.75&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>regex&lt;/code>&lt;/td>
&lt;td style="text-align:left">Регулярное выражение вместо &lt;code>sample&lt;/code> (одно из двух)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>label&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>start_group&lt;/code> — строка начинает запись (по умолчанию), &lt;code>aggregate&lt;/code> — строка приклеивается к предыдущей, &lt;code>no_aggregate&lt;/code> — строка всегда отдельная запись&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Склеенные записи получают тег &lt;code>multiline:&amp;lt;источник&amp;gt;&lt;/code>, обрезанные — тег &lt;code>truncated:&amp;lt;причина&amp;gt;&lt;/code>. Отключить эти теги можно параметрами &lt;code>logs_config.tag_multi_line_logs: false&lt;/code> и &lt;code>logs_config.tag_truncated_logs: false&lt;/code>.&lt;/p>
&lt;h2 id="размер-сообщения">Размер сообщения&lt;/h2>
&lt;p>Запись длиннее &lt;code>logs_config.max_message_size_bytes&lt;/code> (по умолчанию &lt;code>900000&lt;/code> байт) агент обрезает и отправляет частями; к обрезанным частям добавляется метка &lt;code>...TRUNCATED...&lt;/code> и тег &lt;code>truncated:&amp;lt;причина&amp;gt;&lt;/code>. Склеенная многострочная запись подчиняется тому же ограничению.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">logs_config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">max_message_size_bytes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">256000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Чтобы не хранить обрезанные части, используйте правило &lt;a href="#exclude_truncated--%d0%b8%d1%81%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-%d0%be%d0%b1%d1%80%d0%b5%d0%b7%d0%b0%d0%bd%d0%bd%d1%8b%d0%b5-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8">&lt;code>exclude_truncated&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="проверка-правил">Проверка правил&lt;/h2>
&lt;ol>
&lt;li>Перезапустите агента (правила в лейблах и аннотациях применяются при перезапуске контейнера).&lt;/li>
&lt;li>Выполните &lt;code>protoobp-agent status&lt;/code> (см. &lt;a href="../../../setup/agent/commands/">Команды и проверка работы&lt;/a>). В разделе &lt;code>Logs Agent&lt;/code> для каждого источника видны ошибки конфигурации, в том числе некорректные правила: отсутствие &lt;code>name&lt;/code> или &lt;code>pattern&lt;/code>, неверное регулярное выражение, неизвестный &lt;code>type&lt;/code>.&lt;/li>
&lt;li>Командой &lt;code>protoobp-agent stream-logs&lt;/code> посмотрите поток записей после обработки — в нём видно, что маскирование сработало, а исключённые записи не попадают в поток.&lt;/li>
&lt;li>Проверьте результат в &lt;a href="../logs-explorer/">Logs Explorer&lt;/a>.&lt;/li>
&lt;/ol></description></item></channel></rss>