<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация Proto Observability Platform – systemd</title><link>/docs/tags/systemd/</link><description>Recent content in systemd on Документация Proto Observability Platform</description><generator>Hugo -- gohugo.io</generator><language>ru</language><atom:link href="/docs/tags/systemd/index.xml" rel="self" type="application/rss+xml"/><item><title>Instrumentation: Мониторинг systemd-сервисов с помощью Proto Observability Platform</title><link>/docs/instrumentation/infra/other/systemd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/instrumentation/infra/other/systemd/</guid><description>
&lt;p>На этой странице:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#%d1%81%d0%b1%d0%be%d1%80-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba-systemd">Сбор метрик systemd&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-protoobp-%d0%b0%d0%b3%d0%b5%d0%bd%d1%82%d0%b0">Конфигурация ProtoOBP агента&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#%d0%b5%d1%81%d0%bb%d0%b8-%d0%b0%d0%b3%d0%b5%d0%bd%d1%82-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b0%d0%b5%d1%82%d1%81%d1%8f-%d0%b2-%d0%b2%d0%b8%d0%b4%d0%b5-%d1%81%d0%bb%d1%83%d0%b6%d0%b1%d1%8b-systemd-%d0%bd%d0%b0-%d1%85%d0%be%d1%81%d1%82%d0%b5">Если агент запускается в виде службы systemd на хосте&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%b5%d1%81%d0%bb%d0%b8-%d0%b0%d0%b3%d0%b5%d0%bd%d1%82-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b0%d0%b5%d1%82%d1%81%d1%8f-%d0%b2-%d0%b2%d0%b8%d0%b4%d0%b5-docker-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%b9%d0%bd%d0%b5%d1%80%d0%b0">Если агент запускается в виде Docker контейнера&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d0%b8">Параметры конфигурации&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%b8%d1%85-%d1%8e%d0%bd%d0%b8%d1%82%d0%be%d0%b2">Мониторинг нескольких юнитов&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%83%d1%87%d0%b5%d1%82-cpu-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d0%b8-%d0%b8-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87-%d1%81%d0%bb%d1%83%d0%b6%d0%b1%d1%8b">Учет CPU памяти и задач службы&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">Проверка&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba">Список метрик&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bf%d1%80%d0%be%d1%81%d0%bc%d0%be%d1%82%d1%80-%d0%b2-%d0%b2%d0%b5%d0%b1-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81%d0%b5-proto">Просмотр в веб-интерфейсе Proto&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="сбор-метрик-systemd">Сбор метрик systemd&lt;/h2>
&lt;p>Интеграция &lt;code>systemd&lt;/code> собирает метрики самого &lt;code>systemd&lt;/code> и управляемых им юнитов
(служб, сокетов и т.п.): состояние и uptime юнита, потребление CPU и памяти
службой, число перезапусков и задач, статистику соединений сокетов, а также
сводные счётчики юнитов по состояниям. Данные читаются через приватный сокет
systemd (&lt;code>/run/systemd/private&lt;/code>) — отдельный экспортёр или агент внутри
мониторируемой службы не нужен.&lt;/p>
&lt;p>Юниты, за которыми ведётся наблюдение, задаются явно в конфигурации
(&lt;code>unit_names&lt;/code> и/или &lt;code>unit_regexes&lt;/code>). Метрики по конкретному юниту помечаются
меткой &lt;code>unit&lt;/code> (например, &lt;code>unit=&amp;quot;ssh.service&amp;quot;&lt;/code>); системные и сводные метрики
(&lt;code>systemd_can_connect&lt;/code>, &lt;code>systemd_system_state&lt;/code>, &lt;code>systemd_units_total&lt;/code> и т.п.)
метки &lt;code>unit&lt;/code> не имеют. Ко всем метрикам платформа добавляет метку хоста
(&lt;code>host&lt;/code>).&lt;/p>
&lt;h3 id="конфигурация-protoobp-агента">Конфигурация ProtoOBP агента&lt;/h3>
&lt;h4 id="если-агент-запускается-в-виде-службы-systemd-на-хосте">Если агент запускается в виде службы systemd на хосте&lt;/h4>
&lt;p>Когда агент сам работает как systemd-служба на хосте, приватный сокет
systemd доступен по пути по умолчанию (&lt;code>/run/systemd/private&lt;/code>), поэтому
&lt;code>private_socket&lt;/code> указывать не нужно.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Создайте файл конфигурации
&lt;code>/etc/protoobp-agent/conf.d/systemd.d/conf.yaml&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">init_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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">instances&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">unit_names&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="l">ssh.service &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Debian/Ubuntu; на RHEL/CentOS — sshd.service&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="c"># private_socket: /run/systemd/private # путь по умолчанию для хоста&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Перезапустите ProtoOBP агента:&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">systemctl restart protoobp-agent
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Права доступа к приватному сокету&lt;/h4>
Приватный сокет &lt;code>/run/systemd/private&lt;/code> доступен только пользователю &lt;code>root&lt;/code>.
Чтобы интеграция могла читать данные systemd, процесс агента должен иметь
соответствующие права на этот сокет. Если метрика &lt;code>systemd_can_connect&lt;/code>
принимает значение &lt;code>2&lt;/code> (CRITICAL) с ошибкой доступа к сокету — убедитесь, что
агент запущен с достаточными привилегиями для чтения &lt;code>/run/systemd/private&lt;/code>.
&lt;/div>
&lt;h4 id="если-агент-запускается-в-виде-docker-контейнера">Если агент запускается в виде Docker контейнера&lt;/h4>
&lt;p>В этом сценарии приватный сокет systemd хоста и каталог конфигурации
монтируются с хоста внутрь контейнера агента. Ниже — на примере
оркестрируемого compose-файла &lt;code>/opt/protoobp/docker-compose-200.yaml&lt;/code>.&lt;/p>
&lt;p>&lt;strong>1. Добавьте сервису &lt;code>protoobp-agent&lt;/code> два новых volume&lt;/strong> — приватный сокет
systemd (только чтение) и каталог конфигурации интеграции:&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="w"> &lt;/span>&lt;span class="nt">protoobp-agent&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">&amp;lt;&amp;lt;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="cp">*dns-config&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">container_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">protoobp-agent&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">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">${DOCKER_REGISTRY}/protoobp-agent:200&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">restart&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">always&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">networks&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">protoobp&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">pid&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">host&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">volumes&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="l">/run/systemd/private:/host/run/systemd/private:ro&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line hl">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">./conf.d/systemd.d:/etc/protoobp-agent/conf.d/systemd.d:ro&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>2. Создайте каталог конфигурации интеграции:&lt;/strong>&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">mkdir -p /opt/protoobp/conf.d/systemd.d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>3. Создайте файл &lt;code>/opt/protoobp/conf.d/systemd.d/conf.yaml&lt;/code>&lt;/strong> с перечнем
юнитов. Обратите внимание: для контейнера приватный сокет смонтирован по пути
&lt;code>/host/run/systemd/private&lt;/code>, поэтому &lt;code>private_socket&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">init_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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">instances&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">private_socket&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/host/run/systemd/private&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">unit_names&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="l">ssh.service &lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Debian/Ubuntu. На RHEL/CentOS → sshd.service&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>4. Пересоздайте контейнер агента&lt;/strong> из каталога &lt;code>/opt/protoobp&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">docker stop protoobp-agent
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker rm protoobp-agent
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">docker compose -f docker-compose-200.yaml up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="параметры-конфигурации">Параметры конфигурации&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Параметр&lt;/th>
&lt;th>Назначение&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>unit_names&lt;/code>&lt;/td>
&lt;td>Список полных имён systemd-юнитов для мониторинга. Имя указывается с суффиксом типа (&lt;code>.service&lt;/code>, &lt;code>.socket&lt;/code>, &lt;code>.mount&lt;/code> и т.п.). Маски/шаблоны здесь не поддерживаются — нужно точное имя.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>unit_regexes&lt;/code>&lt;/td>
&lt;td>Регулярные выражения (синтаксис Go &lt;code>regexp&lt;/code>), которыми отбираются имена юнитов. Применяется вместе с &lt;code>unit_names&lt;/code>. Должен быть задан хотя бы один из параметров: &lt;code>unit_names&lt;/code> или &lt;code>unit_regexes&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>private_socket&lt;/code>&lt;/td>
&lt;td>Путь к приватному сокету systemd, через который агент читает данные. По умолчанию &lt;code>/run/systemd/private&lt;/code>; для агента в Docker — &lt;code>/host/run/systemd/private&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>substate_status_mapping&lt;/code>&lt;/td>
&lt;td>Сопоставление substate юнита со статусом метрики &lt;code>systemd_unit_substate&lt;/code> (&lt;code>ok&lt;/code> / &lt;code>warning&lt;/code> / &lt;code>critical&lt;/code> / &lt;code>unknown&lt;/code>). Substate без явного сопоставления даёт статус &lt;code>unknown&lt;/code>. Без этого параметра метрика &lt;code>systemd_unit_substate&lt;/code> не публикуется.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>tags&lt;/code>&lt;/td>
&lt;td>Статические теги, добавляемые ко всем метрикам этого инстанса.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>min_collection_interval&lt;/code>&lt;/td>
&lt;td>Минимальный интервал сбора на уровне агента, секунды.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="мониторинг-нескольких-юнитов">Мониторинг нескольких юнитов&lt;/h3>
&lt;p>В одном инстансе можно перечислить несколько юнитов и/или задать их шаблоны
регулярными выражениями. Метрики каждого юнита помечаются меткой &lt;code>unit&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">init_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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">instances&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">unit_names&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="l">ssh.service&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="l">docker.service&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="l">docker.socket&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="c"># Дополнительно отобрать юниты по регулярным выражениям (синтаксис Go):&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">unit_regexes&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="l">cron\.service&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="l">nginx.*&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">tags&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="l">env:prod&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Метрику &lt;code>systemd_unit_substate&lt;/code> можно включить и настроить под конкретный
юнит — задайте сопоставление substate → статус (без этого параметра метрика не
публикуется):&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">init_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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">instances&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">unit_names&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="l">ssh.service&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">substate_status_mapping&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">ssh.service&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">running&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ok&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">dead&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">critical&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="учет-cpu-памяти-и-задач-службы">Учет CPU памяти и задач службы&lt;/h3>
&lt;p>Метрики &lt;code>systemd_service_cpu_time_consumed&lt;/code>, &lt;code>systemd_service_memory_usage&lt;/code> и
&lt;code>systemd_service_task_count&lt;/code> доступны только если для соответствующей службы
включён учёт ресурсов (accounting) в systemd. На многих современных
дистрибутивах учёт памяти и задач включён по умолчанию; учёт CPU чаще требуется
включить явно.&lt;/p>
&lt;p>Включить учёт для отдельной службы можно через drop-in:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-ini" data-lang="ini">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># /etc/systemd/system/ssh.service.d/accounting.conf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">[Service]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">CPUAccounting&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">yes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">MemoryAccounting&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">yes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na">TasksAccounting&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">yes&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-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">systemctl daemon-reload
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">systemctl restart ssh.service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Учёт можно включить и глобально, прописав &lt;code>DefaultCPUAccounting=yes&lt;/code>,
&lt;code>DefaultMemoryAccounting=yes&lt;/code>, &lt;code>DefaultTasksAccounting=yes&lt;/code> в
&lt;code>/etc/systemd/system.conf&lt;/code>.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Требования к версии systemd&lt;/h4>
Часть метрик зависит от версии systemd: &lt;code>systemd_service_cpu_time_consumed&lt;/code>
требует systemd ≥ 220, &lt;code>systemd_service_restart_count&lt;/code> — systemd ≥ 235,
&lt;code>systemd_socket_connection_refused_count&lt;/code> — systemd ≥ 239. На более старых
версиях такие метрики просто не публикуются.
&lt;/div>
&lt;h3 id="проверка">Проверка&lt;/h3>
&lt;p>Запустите проверку вручную и убедитесь, что проверка собирает метрики:&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">docker &lt;span class="nb">exec&lt;/span> protoobp-agent agent check systemd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>(для агента-службы на хосте — &lt;code>agent check systemd&lt;/code> без &lt;code>docker exec&lt;/code>).&lt;/p>
&lt;p>Ожидаемый вывод — &lt;code>Instance ID: ... [OK]&lt;/code> и ненулевое &lt;code>Metric Samples&lt;/code>:&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"> Running Checks
&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>&lt;/span>&lt;span class="line">&lt;span class="cl"> systemd
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Instance ID: systemd:69bbed4048f9672a [OK]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Configuration Source: file:/etc/protoobp-agent/conf.d/systemd.d/conf.yaml
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Total Runs: 1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Metric Samples: Last Run: 16, Total: 16
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Events: Last Run: 0, Total: 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Service Checks: Last Run: 3, Total: 3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Average Execution Time : 14ms
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Last Execution Date : 2026-06-05 15:33:31 UTC (1780673611000)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Last Successful Execution Date : 2026-06-05 15:33:31 UTC (1780673611000)
&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-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker &lt;span class="nb">exec&lt;/span> protoobp-agent agent status &lt;span class="p">|&lt;/span> grep -A &lt;span class="m">10&lt;/span> &lt;span class="s2">&amp;#34;systemd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Строка &lt;code>Service Checks: 3&lt;/code> в выводе — это проверки systemd (доступность,
состояние системы и состояние одного юнита). В protoobp их результаты доступны
как числовые метрики &lt;code>systemd_can_connect&lt;/code>, &lt;code>systemd_system_state&lt;/code> и
&lt;code>systemd_unit_state&lt;/code> (см. &lt;a href="#%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%bc%d0%b5%d1%82%d1%80%d0%b8%d0%ba">Список метрик&lt;/a>).&lt;/p>
&lt;h3 id="список-метрик">Список метрик&lt;/h3>
&lt;p>Метрики по конкретному юниту помечаются меткой &lt;code>unit&lt;/code> (например,
&lt;code>unit=&amp;quot;ssh.service&amp;quot;&lt;/code>); сводные и системные метрики метки &lt;code>unit&lt;/code> не имеют. Ко
всем метрикам добавляется метка хоста (&lt;code>host&lt;/code>).&lt;/p>
&lt;p>&lt;strong>Метрики состояния и здоровья&lt;/strong>&lt;/p>
&lt;p>Это результаты проверок systemd, опубликованные как числовой &lt;strong>код статуса&lt;/strong>:
&lt;code>0&lt;/code> = OK, &lt;code>1&lt;/code> = WARNING, &lt;code>2&lt;/code> = CRITICAL, &lt;code>3&lt;/code> = UNKNOWN. В исправном состоянии
значение равно &lt;code>0&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>systemd_can_connect&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Доступность systemd: смог ли агент подключиться к приватному сокету. &lt;code>0&lt;/code> (OK) — норма, &lt;code>2&lt;/code> (CRITICAL) — подключиться не удалось.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_system_state&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Общее состояние systemd. &lt;code>0&lt;/code> (OK) при &lt;code>running&lt;/code>; &lt;code>2&lt;/code> (CRITICAL) при &lt;code>degraded&lt;/code> / &lt;code>maintenance&lt;/code> / &lt;code>stopping&lt;/code>; &lt;code>3&lt;/code> (UNKNOWN) при &lt;code>initializing&lt;/code> / &lt;code>starting&lt;/code>. Текстовая расшифровка — в метке &lt;code>message&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_unit_state&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Active-состояние юнита (метка &lt;code>unit&lt;/code>). &lt;code>0&lt;/code> (OK) при &lt;code>active&lt;/code>; &lt;code>2&lt;/code> (CRITICAL) при &lt;code>inactive&lt;/code> / &lt;code>deactivating&lt;/code> / &lt;code>failed&lt;/code>; &lt;code>3&lt;/code> (UNKNOWN) при &lt;code>activating&lt;/code>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Метрика &lt;code>systemd_unit_substate&lt;/code> (код статуса по substate юнита) публикуется
только если в конфигурации задан параметр &lt;code>substate_status_mapping&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Метрики юнитов&lt;/strong>&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>systemd_unit_active&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Находится ли юнит в состоянии &lt;code>active&lt;/code> (1 / 0).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_unit_loaded&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Загружен ли юнит (1 / 0).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_unit_monitored&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Признак того, что юнит под мониторингом (значение всегда &lt;code>1&lt;/code>).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_unit_uptime&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Время с момента активации юнита, секунды.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_units_total&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Общее число юнитов в системе.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_units_loaded_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Число загруженных юнитов.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_units_monitored_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Число юнитов под мониторингом.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_units_by_state&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Число юнитов в разбивке по состоянию (метка &lt;code>state&lt;/code>: &lt;code>active&lt;/code>, &lt;code>inactive&lt;/code>, &lt;code>activating&lt;/code>, &lt;code>deactivating&lt;/code>, &lt;code>failed&lt;/code>).&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Метрики служб&lt;/strong> (&lt;code>.service&lt;/code>) — требуют включённого accounting (см.
&lt;a href="#%d1%83%d1%87%d0%b5%d1%82-cpu-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d0%b8-%d0%b8-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87-%d1%81%d0%bb%d1%83%d0%b6%d0%b1%d1%8b">Учет CPU памяти и задач службы&lt;/a>)&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Метрика&lt;/th>
&lt;th>Тип&lt;/th>
&lt;th>Ед.&lt;/th>
&lt;th>Описание&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>systemd_service_cpu_time_consumed&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>нс&lt;/td>
&lt;td>Суммарное потребление CPU службой (&lt;code>CPUUsageNSec&lt;/code>). Требует &lt;code>CPUAccounting=yes&lt;/code>, systemd ≥ 220.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_service_memory_usage&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>байт&lt;/td>
&lt;td>Текущее потребление памяти службой (&lt;code>MemoryCurrent&lt;/code>). Требует &lt;code>MemoryAccounting=yes&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_service_restart_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>—&lt;/td>
&lt;td>Сколько раз служба была перезапущена по &lt;code>Restart=&lt;/code> (&lt;code>NRestarts&lt;/code>). Требует systemd ≥ 235.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_service_task_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>задачи&lt;/td>
&lt;td>Текущее число задач в службе (&lt;code>TasksCurrent&lt;/code>). Требует &lt;code>TasksAccounting=yes&lt;/code>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Метрики сокетов&lt;/strong> (&lt;code>.socket&lt;/code>)&lt;/p>
&lt;p>Появляются только если в &lt;code>unit_names&lt;/code> / &lt;code>unit_regexes&lt;/code> указан юнит-сокет
(&lt;code>.socket&lt;/code>). При мониторинге одних только служб (как в примере с &lt;code>ssh.service&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>systemd_socket_connection_accepted_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Число принятых соединений сокета (&lt;code>NAccepted&lt;/code>).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_socket_connection_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Текущее число соединений сокета (&lt;code>NConnections&lt;/code>).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>systemd_socket_connection_refused_count&lt;/code>&lt;/td>
&lt;td>gauge&lt;/td>
&lt;td>Число отклонённых соединений сокета (&lt;code>NRefused&lt;/code>). Требует systemd ≥ 239.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="просмотр-в-веб-интерфейсе-proto">Просмотр в веб-интерфейсе Proto&lt;/h3>
&lt;p>После того как проверка поднялась, метрики доступны в веб-интерфейсе Proto. Например,
потребление памяти службой &lt;code>ssh.service&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-promql" data-lang="promql">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">systemd_service_memory_usage&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">unit&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">ssh.service&lt;/span>&lt;span class="p">&amp;#34;}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Состояние юнита (код статуса: &lt;code>0&lt;/code> — OK, &lt;code>2&lt;/code> — CRITICAL):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-promql" data-lang="promql">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">systemd_unit_state&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">unit&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">ssh.service&lt;/span>&lt;span class="p">&amp;#34;}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>