Как настроить прикладной мониторинг
Локальный сбор метрик приложений в клиентском кластере.
Когда в кластере включён Модуль мониторинга. Компонент управления (shturval-metrics-collector) (shturval-metrics-collector, Victoria Metrics Agent), можно настроить прикладной мониторинг — сбор метрик клиентских приложений. Для этого в неймспейсе user-monitoring разворачивается отдельный экземпляр VMAgent.
Проверить работу можно на любом приложении с метриками в формате OpenMetrics; в инструкции — демо-приложение VictoriaMetrics.
Обратите внимание! Обратите внимание! Для корректного сбора метрик с клиентских приложений должны выполняться требования.
Перед началом
Перед настройкой проверьте:
- В кластере установлен и включён shturval-metrics-collector.
- Что приложение готово к сбору метрик: см. Требования к приложениям.
- Что у вас есть права на создание кастомных ресурсов и доступ к интерфейсу/CLI кластера.
Что будет создано
| Объект | Неймспейс | Назначение |
|---|---|---|
| Namespace | — | user-monitoring — изоляция прикладного мониторинга |
VMSingle |
user-monitoring |
Локальное хранилище метрик приложений |
VMAgent |
user-monitoring |
Сбор метрик и запись в VMSingle (или remoteWrite) |
ServiceAccount, ClusterRole, ClusterRoleBinding |
user-monitoring + cluster |
RBAC для VMAgent |
PodMonitor / ServiceMonitor / VMPodScrape / VMServiceScrape |
неймспейс приложения | Описание целей сбора метрик |
Схема:
- создаётся неймспейс
user-monitoring; - в нём разворачиваются VMSingle (хранилище) и VMAgent (сбор и remoteWrite);
- для ваших приложений создаются объекты, описывающие сбор метрик (PodMonitor/ServiceMonitor или VMPodScrape/VMServiceScrape).
Шаг 1. Создать неймспейс user-monitoring
В графическом интерфейсе кластера перейдите в раздел Неймспейсы и создайте новый неймспейс user-monitoring.
Скриншот интерфейса платформы


Шаг 2. Загрузить VMSingle и VMAgent
Через импорт манифестов загрузите манифесты VMSingle и VMAgent с нужными параметрами.
Пример VMSingle:
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMSingle
metadata:
name: user-monitoring # Имя не может быть изменено
namespace: user-monitoring
spec:
storage:
volumeClaimTemplate:
spec:
resources:
requests:
storage: <ваше значение параметра>
| Параметр | Описание | Тип | Пример |
|---|---|---|---|
requests.storage |
Запрашиваемый объём для хранения прикладных метрик | string | 3Gi |
Пример VMAgent:
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAgent
metadata:
labels:
app: vmagent-user-monitoring # Имя не может быть изменено
app.kubernetes.io/component: monitoring
app.kubernetes.io/name: user-monitoring
name: user-monitoring
namespace: user-monitoring
spec:
externalLabels:
cluster: client-cluster
extraArgs:
<ваше значение параметров>
logFormat: <ваше значение параметра>
logLevel: <ваше значение параметра>
nodeScrapeNamespaceSelector:
matchExpressions:
- key: shturval.tech/system-namespace
operator: DoesNotExist
podScrapeNamespaceSelector:
matchExpressions:
- key: shturval.tech/system-namespace
operator: DoesNotExist
port: "8429"
probeNamespaceSelector:
matchExpressions:
- key: shturval.tech/system-namespace
operator: DoesNotExist
remoteWrite:
- url: <ваше значение параметра>
replicaCount: <ваше значение параметра>
resources:
limits:
cpu: <ваше значение параметра>
memory: <ваше значение параметра>
requests:
cpu: <ваше значение параметра>
memory: <ваше значение параметра>
scrapeConfigNamespaceSelector:
matchExpressions:
- key: shturval.tech/system-namespace
operator: DoesNotExist
scrapeInterval: <ваше значение параметра>
securityContext:
fsGroup: 2000
runAsGroup: 2000
runAsNonRoot: true
runAsUser: 1000
serviceAccountName: vmagent-user-monitoring
serviceScrapeNamespaceSelector:
matchExpressions:
- key: shturval.tech/system-namespace
operator: DoesNotExist
staticScrapeNamespaceSelector:
matchExpressions:
- key: shturval.tech/system-namespace
operator: DoesNotExist
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/infra
operator: Exists
vmAgentExternalLabelName: ""
| Параметр | Описание | Тип данных | Пример |
|---|---|---|---|
extraArgs |
Список дополнительных аргументов запуска | []object | envflag.enable: "true", envflag.prefix: VM_, promscrape.dropOriginalLabels: "true", promscrape.maxScrapeSize: "67108864", promscrape.streamParse: "true", remoteWrite.tmpDataPath: /tmp |
logFormat |
Формат лога | string | default |
logLevel |
Уровень лога | string | INFO |
replicaCount |
Количество реплик | integer | 1 |
remoteWrite |
Ссылки на удалённые хранилища метрик для записи | []object | url: vmcluster.local:8480/insert/123/prometheus |
resources |
Ресурсы requests и limits | []object | limits: cpu: 10, memory: 10Gi; requests: cpu: 50m, memory: 50Mi |
scrapeInterval |
Частота сбора метрик | integer | 15s |
Скриншот интерфейса платформы

Шаг 3. Загрузить ServiceAccount, ClusterRole, ClusterRoleBinding
Через импорт манифестов загрузите ресурсы (без изменения параметров):
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: vmagent-user-monitoring
app.kubernetes.io/component: monitoring
app.kubernetes.io/name: user-monitoring
name: vmagent-user-monitoring
namespace: user-monitoring
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: vmagent-user-monitoring
app.kubernetes.io/component: monitoring
app.kubernetes.io/name: user-monitoring
name: vmagent-user-monitoring
rules:
- apiGroups: ["discovery.k8s.io"]
resources: ["endpointslices"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["services", "endpoints", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["nodes", "nodes/proxy", "nodes/metrics"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["configmaps","secrets"]
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: vmagent-user-monitoring
app.kubernetes.io/component: monitoring
app.kubernetes.io/name: user-monitoring
name: vmagent-user-monitoring
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: vmagent-user-monitoring
subjects:
- kind: ServiceAccount
name: vmagent-user-monitoring
namespace: user-monitoring
Скриншот интерфейса платформы

Дальше можно проверить настройку на демо-приложении: Как проверить прикладной мониторинг.