Настройка в платформе Штурвал

Когда в кластере включен Компонент управления модуля мониторинга (Victoria Metrics Agent) (shturval-metrics-collector), вы можете настроить прикладной мониторинг (мониторинг клиентских приложений). Для этого необходимо установить экземпляр VMAgent в неймспейсе user-monitoring для сбора прикладных метрик.

Для проверки прикладного мониторинга вы можете использовать любое приложение, инструментированное метриками в формате OpenMetrics. Например, можно воспользоваться демонстрационным приложением от VictoriaMetrics. Подробнее на странице Проверка прикладного мониторинга.

Обратите внимание! Для корректного сбора метрик с клиентских приложений должны выполняться требования.

Чтобы настроить прикладной мониторинг приложений:

  1. В графическом интерфейсе кластера перейдите в раздел Неймспейсы, создайте неймспейс user-monitoring, в котором будет развернут экземпляр VMAgent:
Скриншот

nsadd nsadd1

  1. С помощью импорта манифестов загрузите в кластер манифесты объектов 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
Скриншот

vmadd

  1. С помощью импорта манифестов загрузите в кластер ресурсы: ServiceAccount, ClusterRole, ClusterRoleBinding, как приведено далее (без изменения параметров).
ServiceAccount, ClusterRoleBinding,ClusterRole
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
Скриншот

sarbac

×