<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация Proto Observability Platform – cluster checks</title><link>/docs/tags/cluster-checks/</link><description>Recent content in cluster checks on Документация Proto Observability Platform</description><generator>Hugo -- gohugo.io</generator><language>ru</language><atom:link href="/docs/tags/cluster-checks/index.xml" rel="self" type="application/rss+xml"/><item><title>Setup: Cluster Agent и проверки уровня кластера</title><link>/docs/setup/agent/cluster-agent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/setup/agent/cluster-agent/</guid><description>
&lt;p>На этой странице:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#%d0%bd%d0%b0%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b5">Назначение&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b5%d0%bd%d0%be-%d0%b2%d0%b7%d0%b0%d0%b8%d0%bc%d0%be%d0%b4%d0%b5%d0%b9%d1%81%d1%82%d0%b2%d0%b8%d0%b5">Как устроено взаимодействие&lt;/a>&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%b2-helm-%d1%87%d0%b0%d1%80%d1%82%d0%b5">Параметры в Helm-чарте&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#%d1%82%d0%be%d0%ba%d0%b5%d0%bd-cluster-agent">Токен Cluster Agent&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%be%d1%82%d0%ba%d0%b0%d0%b7%d0%be%d1%83%d1%81%d1%82%d0%be%d0%b9%d1%87%d0%b8%d0%b2%d0%be%d1%81%d1%82%d1%8c">Отказоустойчивость&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b8-%d1%83%d1%80%d0%be%d0%b2%d0%bd%d1%8f-%d0%ba%d0%bb%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%b0">Проверки уровня кластера&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#%d0%ba%d0%be%d0%b3%d0%b4%d0%b0-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d1%8c">Когда использовать&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0">Настройка&lt;/a>&lt;/li>
&lt;li>&lt;a href="#%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d0%bd%d0%b8%d1%82%d0%b5%d0%bb%d0%b8-%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%be%d0%ba">Отдельные исполнители проверок&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#admission-controller">Admission Controller&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-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b">Проверка работы&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="назначение">Назначение&lt;/h2>
&lt;p>В Kubernetes агент устанавливается в два вида подов:&lt;/p>
&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;code>protoobp&lt;/code>)&lt;/td>
&lt;td style="text-align:left">DaemonSet — по поду на каждой ноде&lt;/td>
&lt;td style="text-align:left">Метрики ноды и контейнеров, трейсы и логи приложений на этой ноде, проверки интеграций для подов ноды&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Cluster Agent (&lt;code>protoobp-cluster-agent&lt;/code>)&lt;/td>
&lt;td style="text-align:left">Deployment&lt;/td>
&lt;td style="text-align:left">Задачи уровня всего кластера, которые нельзя или не нужно выполнять на каждой ноде&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Cluster Agent:&lt;/p>
&lt;ul>
&lt;li>собирает метрики состояния объектов Kubernetes (Deployment, Pod, Node, Job и др.) — проверка &lt;code>kubernetes_state_core&lt;/code>, параметр &lt;code>protoobp.kubeStateMetricsCore.enabled&lt;/code>, по умолчанию включена;&lt;/li>
&lt;li>собирает события Kubernetes (&lt;code>protoobp.collectEvents&lt;/code>);&lt;/li>
&lt;li>запрашивает API Kubernetes один раз за весь кластер и передаёт агентам на нодах метаданные (имена сервисов, теги подов), снижая нагрузку на API-сервер;&lt;/li>
&lt;li>распределяет между агентами &lt;a href="#%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b8-%d1%83%d1%80%d0%be%d0%b2%d0%bd%d1%8f-%d0%ba%d0%bb%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%b0">проверки уровня кластера&lt;/a>;&lt;/li>
&lt;li>обслуживает &lt;a href="#admission-controller">Admission Controller&lt;/a> — автоматическое подключение трейсеров к подам.&lt;/li>
&lt;/ul>
&lt;p>Cluster Agent включён в Helm-чарте агента по умолчанию (&lt;code>clusterAgent.enabled: true&lt;/code>) и устанавливается вместе с ним — см. &lt;a href="../kubernetes/">Установка агента в Kubernetes&lt;/a>.&lt;/p>
&lt;h2 id="как-устроено-взаимодействие">Как устроено взаимодействие&lt;/h2>
&lt;ul>
&lt;li>Агенты на нодах подключаются к Cluster Agent через сервис Kubernetes по порту &lt;code>5005/tcp&lt;/code>.&lt;/li>
&lt;li>Подлинность соединения подтверждается общим &lt;a href="#%d1%82%d0%be%d0%ba%d0%b5%d0%bd-cluster-agent">токеном&lt;/a>.&lt;/li>
&lt;li>Cluster Agent и агенты на нодах отправляют данные на ProtoOBP Backend независимо друг от друга, каждый по своему &lt;code>pobp_url&lt;/code>.&lt;/li>
&lt;li>API-сервер Kubernetes обращается к Admission Controller Cluster Agent по порту &lt;code>8000/tcp&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Полный список сетевых портов — в разделе &lt;a href="../kubernetes/">Установка агента в Kubernetes&lt;/a>.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Обратите внимание&lt;/h4>
Переменные окружения из &lt;code>protoobp.env&lt;/code> передаются только агентам на нодах. Параметры, которые нужны и Cluster Agent (например, &lt;a href="../proxy/#kubernetes">прокси&lt;/a>), продублируйте в &lt;code>clusterAgent.env&lt;/code>.
&lt;/div>
&lt;h2 id="параметры-в-helm-чарте">Параметры в Helm-чарте&lt;/h2>
&lt;p>Основные параметры секции &lt;code>clusterAgent&lt;/code> файла &lt;code>values.yaml&lt;/code>:&lt;/p>
&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;code>clusterAgent.enabled&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>true&lt;/code>&lt;/td>
&lt;td style="text-align:left">Устанавливать Cluster Agent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.image.name&lt;/code>, &lt;code>clusterAgent.image.tag&lt;/code>&lt;/td>
&lt;td style="text-align:left">—&lt;/td>
&lt;td style="text-align:left">Образ Cluster Agent; тег совпадает с версией агента&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.replicas&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>1&lt;/code>&lt;/td>
&lt;td style="text-align:left">Число реплик&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.token&lt;/code>&lt;/td>
&lt;td style="text-align:left">—&lt;/td>
&lt;td style="text-align:left">Токен связи с агентами на нодах&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.tokenExistingSecret&lt;/code>&lt;/td>
&lt;td style="text-align:left">—&lt;/td>
&lt;td style="text-align:left">Имя существующего Secret с токеном (ключ &lt;code>token&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.env&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>[]&lt;/code>&lt;/td>
&lt;td style="text-align:left">Переменные окружения Cluster Agent&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.confd&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>{}&lt;/code>&lt;/td>
&lt;td style="text-align:left">Конфигурации &lt;a href="#%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0">проверок уровня кластера&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.admissionController.enabled&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>true&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;a href="#admission-controller">Admission Controller&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.resources&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>{}&lt;/code>&lt;/td>
&lt;td style="text-align:left">Запросы и лимиты CPU и памяти&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.createPodDisruptionBudget&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>false&lt;/code>&lt;/td>
&lt;td style="text-align:left">Создать PodDisruptionBudget&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.nodeSelector&lt;/code>, &lt;code>tolerations&lt;/code>, &lt;code>affinity&lt;/code>&lt;/td>
&lt;td style="text-align:left">—&lt;/td>
&lt;td style="text-align:left">Размещение пода&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>protoobp.clusterChecks.enabled&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>true&lt;/code>&lt;/td>
&lt;td style="text-align:left">Проверки уровня кластера&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>protoobp.kubeStateMetricsCore.enabled&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>true&lt;/code>&lt;/td>
&lt;td style="text-align:left">Метрики состояния объектов Kubernetes&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Изменения применяются командой &lt;code>helm upgrade&lt;/code> — см. &lt;a href="../kubernetes/#%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%be%d0%b2">Изменение параметров&lt;/a>.&lt;/p>
&lt;h3 id="токен-cluster-agent">Токен Cluster Agent&lt;/h3>
&lt;p>Токен — общий секрет агентов на нодах и Cluster Agent, строка не короче 32 символов. Если &lt;code>clusterAgent.token&lt;/code> и &lt;code>clusterAgent.tokenExistingSecret&lt;/code> не заданы, чарт генерирует случайный токен &lt;strong>при каждом&lt;/strong> &lt;code>helm upgrade&lt;/code>, и все поды агента перезапускаются. Чтобы токен не менялся, задайте его явно — лучше через собственный Secret:&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">kubectl create secret generic protoobp-cluster-agent-token -n protoobp &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --from-literal&lt;span class="o">=&lt;/span>&lt;span class="nv">token&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>head -c &lt;span class="m">32&lt;/span> /dev/urandom &lt;span class="p">|&lt;/span> base64 &lt;span class="p">|&lt;/span> tr -dc &lt;span class="s1">&amp;#39;A-Za-z0-9&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> head -c 32&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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">clusterAgent&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">tokenExistingSecret&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">protoobp-cluster-agent-token&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="отказоустойчивость">Отказоустойчивость&lt;/h3>
&lt;p>При &lt;code>clusterAgent.replicas: 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">clusterAgent&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">replicas&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&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">createPodDisruptionBudget&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;h2 id="проверки-уровня-кластера">Проверки уровня кластера&lt;/h2>
&lt;h3 id="когда-использовать">Когда использовать&lt;/h3>
&lt;p>Обычная проверка интеграции выполняется агентом той ноды, где работает под сервиса (см. &lt;a href="../autodiscovery/">Автообнаружение&lt;/a>). Проверка уровня кластера (cluster check) выполняется &lt;strong>один раз на весь кластер&lt;/strong>: Cluster Agent назначает её одному из агентов на нодах, а при выходе ноды из строя переназначает другому.&lt;/p>
&lt;p>Такие проверки нужны для сервисов, которые не работают в подах кластера или не привязаны к конкретной ноде:&lt;/p>
&lt;ul>
&lt;li>внешние базы данных и брокеры сообщений (управляемые облачные сервисы, отдельные серверы);&lt;/li>
&lt;li>HTTP-, TCP- и TLS-проверки доступности адресов — см. &lt;a href="../../../instrumentation/network/">Мониторинг сети&lt;/a>;&lt;/li>
&lt;li>сервисы за балансировщиком, которые нужно проверять один раз, а не с каждой ноды.&lt;/li>
&lt;/ul>
&lt;h3 id="настройка">Настройка&lt;/h3>
&lt;p>Конфигурация задаётся в &lt;code>clusterAgent.confd&lt;/code>: каждый ключ становится файлом в &lt;code>conf.d&lt;/code> Cluster Agent. Обязателен параметр &lt;code>cluster_check: true&lt;/code> — без него Cluster Agent не распределяет проверку.&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">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">clusterChecks&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">enabled&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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">clusterAgent&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">confd&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">postgres.yaml&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|-&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> cluster_check: true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> init_config:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> instances:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> - host: pg.db.corp.local
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> port: 5432
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> username: protoobp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> password: ENC[k8s_secret@protoobp/postgres-credentials/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">http_check.yaml&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|-&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> cluster_check: true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> init_config:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> instances:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> - name: Внешний портал
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> url: https://portal.corp.local/health&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Пароли в конфигурации проверок задавайте через &lt;a href="../secrets/">управление секретами&lt;/a>. Секреты разрешаются агентом на ноде, который выполняет проверку.&lt;/p>
&lt;p>Параметры каждой интеграции описаны на её странице в разделе &lt;a href="../../../instrumentation/infra/">Подключение технологий&lt;/a>.&lt;/p>
&lt;h3 id="отдельные-исполнители-проверок">Отдельные исполнители проверок&lt;/h3>
&lt;p>По умолчанию проверки уровня кластера выполняют агенты на нодах. Если проверок много или они тяжёлые (например, запросы к крупным базам данных), их можно вынести в отдельный Deployment — исполнители проверок (cluster checks runners):&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">clusterChecksRunner&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">enabled&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">replicas&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Тогда Cluster Agent распределяет проверки только между этими подами, а агенты на нодах занимаются только своими нодами.&lt;/p>
&lt;h2 id="admission-controller">Admission Controller&lt;/h2>
&lt;p>Admission Controller — веб-хук Kubernetes, который Cluster Agent регистрирует в кластере. При создании пода он может:&lt;/p>
&lt;ul>
&lt;li>добавить в под переменные окружения для отправки трейсов и метрик агенту на той же ноде;&lt;/li>
&lt;li>подключить трейсер приложения через init-контейнер без пересборки образа.&lt;/li>
&lt;/ul>
&lt;p>Подробно настройка описана на странице &lt;a href="../../../instrumentation/k8s/agent-tracer-injection/">Автоматическое подключение трейсеров в Kubernetes&lt;/a>. Основные параметры чарта:&lt;/p>
&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;code>clusterAgent.admissionController.enabled&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>true&lt;/code>&lt;/td>
&lt;td style="text-align:left">Включить веб-хук&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.admissionController.mutateUnlabelled&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>false&lt;/code>&lt;/td>
&lt;td style="text-align:left">Изменять поды без лейбла &lt;code>admission.proto.group/enabled: &amp;quot;true&amp;quot;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>clusterAgent.admissionController.configMode&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>hostip&lt;/code>&lt;/td>
&lt;td style="text-align:left">Как под находит агента: &lt;code>hostip&lt;/code>, &lt;code>service&lt;/code> или &lt;code>socket&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Для работы веб-хука API-сервер Kubernetes должен иметь доступ к нодам по порту &lt;code>8000/tcp&lt;/code>.&lt;/p>
&lt;h2 id="проверка-работы">Проверка работы&lt;/h2>
&lt;p>Команды выполняются в поде Cluster Agent:&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="c1"># общее состояние, лидер, подключённые агенты&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kubectl &lt;span class="nb">exec&lt;/span> -it deploy/protoobp-cluster-agent -n protoobp -- protoobp-cluster-agent status
&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="c1"># распределение проверок уровня кластера по агентам&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kubectl &lt;span class="nb">exec&lt;/span> -it deploy/protoobp-cluster-agent -n protoobp -- protoobp-cluster-agent clusterchecks
&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="c1"># загруженные конфигурации проверок&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kubectl &lt;span class="nb">exec&lt;/span> -it deploy/protoobp-cluster-agent -n protoobp -- protoobp-cluster-agent configcheck
&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="c1"># журнал&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">kubectl logs deploy/protoobp-cluster-agent -n protoobp --since&lt;span class="o">=&lt;/span>1h
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>На агенте ноды, которому назначена проверка, она видна в выводе &lt;code>agent status&lt;/code> (раздел &lt;code>Collector&lt;/code>) и &lt;code>agent configcheck&lt;/code>.&lt;/p>
&lt;p>Частые проблемы:&lt;/p>
&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">В журнале агентов на нодах ошибки подключения или авторизации при обращении к Cluster Agent&lt;/td>
&lt;td style="text-align:left">Токены не совпадают — например, после &lt;code>helm upgrade&lt;/code> без заданного токена перезапустились не все поды. Задайте &lt;a href="#%d1%82%d0%be%d0%ba%d0%b5%d0%bd-cluster-agent">постоянный токен&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Проверка есть в &lt;code>configcheck&lt;/code> Cluster Agent, но не назначена ни одному агенту&lt;/td>
&lt;td style="text-align:left">Не включены &lt;code>protoobp.clusterChecks.enabled&lt;/code> или в файле нет &lt;code>cluster_check: true&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Поды приложений не получают трейсер&lt;/td>
&lt;td style="text-align:left">Нет лейбла &lt;code>admission.proto.group/enabled: &amp;quot;true&amp;quot;&lt;/code> на поде или API-сервер не достучался до порта &lt;code>8000/tcp&lt;/code> — см. &lt;a href="../../../instrumentation/k8s/agent-tracer-injection/">автоматическое подключение трейсеров&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Общие команды и журналы агента — на страницах &lt;a href="../commands/">Команды и проверка работы&lt;/a> и &lt;a href="../logs/">Журналы агента&lt;/a>.&lt;/p></description></item></channel></rss>