{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Андрей Крисанов: заметки с тегом мониторинг",
    "_rss_description": "Блог Андрея Крисанова о разработке в эпоху ИИ: прикладной ИИ, инфраструктура ИИ, ИИ-нативные продукты и управление инженерными командами.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/agenticeng.ru\/tags\/monitoring\/",
    "feed_url": "https:\/\/agenticeng.ru\/tags\/monitoring\/json\/",
    "icon": "https:\/\/agenticeng.ru\/pictures\/userpic\/userpic@2x.jpg?1775503436",
    "authors": [
        {
            "name": "Андрей Крисанов",
            "url": "https:\/\/agenticeng.ru\/",
            "avatar": "https:\/\/agenticeng.ru\/pictures\/userpic\/userpic@2x.jpg?1775503436"
        }
    ],
    "items": [
        {
            "id": "6",
            "url": "https:\/\/agenticeng.ru\/all\/dcgm-exporter-k3s-wsl2\/",
            "title": "Установка DCGM Exporter в локальный Kubernetes-кластер с NVIDIA GPU",
            "content_html": "<p>В <a href=\"\/all\/wsl-nvidia-gpu\/\">предыдущей заметке<\/a> я рассказывал как развернуть локальный кластер Kubernetes с доступом к GPU внутри WSL2 окружения. Для того, чтобы собирать детальные метрики с видеокарты, <i>nvidia-smi<\/i> не достаточно, т. к. GPU-Util показывает только активность в рамках короткого sampling-окна. Для анализа того, что происходит с GPU при обработке задач, нужен DCGM. <a href=\"https:\/\/github.com\/NVIDIA\/dcgm-exporter\">dcgm-exporter<\/a> — это утилита NVIDIA для сбора GPU-метрик через DCGM, которая отдает их через HTTP-метод \/<i>metrics<\/i> для Prometheus и похожих систем мониторинга.<\/p>\n<p>При попытке установить <i>dcgm-exporter<\/i> в k3s кластер Helm chart по умолчанию создает <i>ServiceMonitor<\/i>. Но если в кластере не установлен Prometheus оператор, процесс завершится с ошибкой:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">no matches for kind &quot;ServiceMonitor&quot; in version &quot;monitoring.coreos.com\/v1&quot;\nensure CRDs are installed first<\/code><\/pre><p>Это ожидаемое поведение. В dcgm-exporter chart по умолчанию <i>serviceMonitor.enabled: true<\/i>, а <i>ServiceMonitor<\/i> относится к CRD из экосистемы Prometheus Operator. В том же чарте <i>runtimeClassName<\/i> — пустой.<\/p>\n<p>Проверяем, что Kubernetes все еще видит GPU:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">kubectl get nodes -o json | jq &#039;.items[].status.allocatable&#039;<\/code><\/pre><p>На моей системе результат такой:<\/p>\n<pre class=\"e2-text-code\"><code class=\"json\">{\n  &quot;cpu&quot;: &quot;20&quot;,\n  &quot;ephemeral-storage&quot;: &quot;1027046117185&quot;,\n  &quot;hugepages-1Gi&quot;: &quot;0&quot;,\n  &quot;hugepages-2Mi&quot;: &quot;0&quot;,\n  &quot;memory&quot;: &quot;16233644Ki&quot;,\n  &quot;nvidia.com\/gpu&quot;: &quot;1&quot;,\n  &quot;pods&quot;: &quot;110&quot;\n}<\/code><\/pre><p>Далее добавляем репозиторий:<\/p>\n<pre class=\"e2-text-code\"><code class=\"shell\">helm repo add gpu-helm-charts https:\/\/nvidia.github.io\/dcgm-exporter\/helm-charts\nhelm repo update<\/code><\/pre><p>Отключаем создание <i>ServiceMonitor<\/i> и указываем Nvidia runtime class:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">helm install dcgm-exporter gpu-helm-charts\/dcgm-exporter \\\n  --set serviceMonitor.enabled=false \\\n  --set runtimeClassName=nvidia<\/code><\/pre><p>Проверяем, что pod с экспортером поднялся:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">kubectl get pods -l app.kubernetes.io\/name=dcgm-exporter -o wide\nkubectl logs -l app.kubernetes.io\/name=dcgm-exporter --tail=50<\/code><\/pre><p>Успешный запуск выглядит примерно так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Starting dcgm-exporter\nAttempting to initialize DCGM.\nInitialized DCGM Fields module.\nAttempting to initialize NVML library.\nNVML provider successfully initialized for Kubernetes MIG support\nDCGM successfully initialized!\nSuccessfully queried DCGM profiling metric groups\nHTTP server started - ready to serve metrics\nListening on [::]:9400<\/code><\/pre><p>Это означает, что:<\/p>\n<ul>\n<li>DCGM инициализировался<\/li>\n<li>NVML инициализировался<\/li>\n<li>exporter увидел GPU<\/li>\n<li>HTTP endpoint с метриками уже работает<\/li>\n<\/ul>\n<p>Если chart создал сервис, его можно посмотреть так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">kubectl get svc<\/code><\/pre><p>Дальше пробрасываем порт:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">kubectl port-forward svc\/dcgm-exporter 9400:9400<\/code><\/pre><p>И проверяем:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">curl http:\/\/127.0.0.1:9400\/metrics | head -50\ncurl http:\/\/127.0.0.1:9400\/health<\/code><\/pre><p>Если все ок, \/<i>health<\/i> вернет успешный ответ, а \/<i>metrics<\/i> начнет отдавать метрики вида <i>DCGM_FI_*<\/i>.<\/p>\n",
            "summary": "Установка NVIDIA DCGM Exporter в локальный Kubernetes-кластер под WSL2: как обойти ошибку ServiceMonitor, настроить runtimeClassName и проверить сбор GPU-метрик.",
            "date_published": "2026-04-23T17:31:40+03:00",
            "date_modified": "2026-04-23T17:33:37+03:00",
            "tags": [
                "gpu",
                "kubernetes",
                "nvidia",
                "wsl2",
                "инфраструктура ИИ",
                "мониторинг"
            ],
            "_date_published_rfc2822": "Thu, 23 Apr 2026 17:31:40 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}