Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Подключение к узлу по SSH
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение к кластеру
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Установка приложений из Cloud Marketplace
      • Основы работы с Cloud Marketplace
      • Установка Argo CD
      • Установка Container Storage Interface для S3
      • Установка Crossplane
      • Установка External Secrets Operator
      • Установка Falco
      • Установка Filebeat
      • Установка Fluent Bit
      • Установка Gateway API
      • Установка GitLab Agent
      • Установка GitLab Runner
      • Установка HashiCorp Vault
      • Установка Ingress-контроллера Application Load Balancer
      • Установка Jaeger
      • Установка Kyverno & Kyverno Policies
      • Установка Loki
      • Установка Metrics Provider
      • Установка NodeLocal DNS
      • Установка Policy Reporter
      • Установка Thumbor
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка NodeLocal DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Object Storage
    • Управление кластером Kubernetes
      • Получение информации о кластере Kubernetes
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Интеграция с Container Registry
    • Подпись и проверка Docker-образов Container Registry
    • Сканирование уязвимостей Container Registry при непрерывном развертывании приложений с помощью GitLab
    • Запуск рабочих нагрузок с GPU
    • Установка Ingress-контроллера NGINX с Let's Encrypt®
    • Установка Ingress-контроллера NGINX с сертификатом из Certificate Manager
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Вертикальное масштабирование приложения в кластере
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Проверка DNS Challenge для сертификатов Let's Encrypt®
    • Мониторинг кластера с помощью Prometheus и Grafana
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Изменение параметров сервера метрик (Metrics Server)
    • Использование продуктов Cloud Marketplace
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка Application Load Balancer Ingress-контроллера
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов API Kubernetes
      • Том
      • Сервис
    • Группа узлов
      • Автоматическое масштабирование группы узлов
      • Расселение подов с узла
      • Динамическое резервирование ресурсов для узла
      • Группы узлов с GPU
    • Сеть в Managed Service for Kubernetes
    • Внешние узлы кластера
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • NodeGroupService
      • VersionService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listNodeGroups
        • listNodes
        • listOperations
        • start
        • stop
        • update
      • NodeGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listNodes
        • listOperations
        • update
      • Version
        • Overview
        • list
  • Вопросы и ответы
    • Общие вопросы
    • Хранилище данных
    • Настройка и обновление
    • Автоматическое масштабирование
    • Ресурсы
    • Логи
    • Все вопросы на одной странице
  1. Практические руководства
  2. Мониторинг кластера с помощью Prometheus и Grafana

Мониторинг кластера с помощью Prometheus и Grafana

Статья создана
Yandex Cloud
  • Перед началом работы
  • Установите Prometheus
  • Установите кеширующий прокси trickster
  • Установите Grafana
  • Настройте и проверьте работу Grafana
  • Удалите созданные ресурсы

Managed Service for Kubernetes позволяет выгружать метрики объектов кластера в системы мониторинга.

Из этой статьи вы узнаете, как настроить систему сбора метрик Prometheus и систему визуализации Grafana в кластере Managed Service for Kubernetes. Для ускорения передачи метрик будет установлен кеширующий прокси trickster.

Чтобы настроить систему мониторинга кластера Kubernetes:

  • Установите Prometheus.
  • Установите кеширующий прокси trickster.
  • Установите Grafana.
  • Настройте и проверьте работу Grafana.

Перед началом работы

  1. Создайте кластер Managed Service for Kubernetes и группу узлов любой подходящей конфигурации с доступом в интернет.

  2. Установите kubectl и настройте его на работу с созданным кластером.

  3. Установите менеджер пакетов Helm версии не ниже 3.7.0.

Установите Prometheus

Система мониторинга Prometheus сканирует объекты кластера Kubernetes и собирает их метрики в собственную базу данных. Собранные метрики доступны внутри кластера по протоколу HTTP.

  1. Добавьте репозиторий, содержащий дистрибутив Prometheus:

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts && \
    helm repo update
    
  2. Установите Prometheus:

    helm install my-prom prometheus-community/prometheus
    
  3. Убедитесь, что все поды перешли в состояние Running:

    kubectl get pods -l "app=prometheus"
    

    Результат выполнения команды:

    NAME                                              READY  STATUS   RESTARTS  AGE
    my-prom-prometheus-alertmanager-7b8f48b99d-xt6ws  2/2    Running  0         81s
    my-prom-prometheus-node-exporter-pxpwg            1/1    Running  0         81s
    my-prom-prometheus-pushgateway-69f47c5f55-swrfb   1/1    Running  0         81s
    my-prom-prometheus-server-7b4c958476-m4v78        2/2    Running  0         81s
    

Установите кеширующий прокси trickster

Кеширующий прокси trickster ускоряет чтение из базы данных Prometheus, что позволяет отображать метрики Grafana практически в реальном времени, а также снизить нагрузку на Prometheus.

  1. Добавьте репозиторий, содержащий дистрибутив trickster:

    helm repo add tricksterproxy https://helm.tricksterproxy.io && \
    helm repo update
    
  2. Создайте конфигурационный файл trickster.yaml, содержащий настройки trickster:

    trickster.yaml
    frontend:
      listenAddress: ""
      tlsListenAddress: ""
      tlsListenPort: ""
      connectionsLimit: "0"
    origins:
      - name: default
        originType: prometheus
        originURL: http://my-prom-prometheus-server:80
    profiler:
      enabled: false
      port: 6060
    prometheusScrape: false
    prometheus:
      serviceMonitor:
        enabled: false
        interval: 30s
        labels: {}
    replicaCount: 1
    image:
      repository: tricksterproxy/trickster
      tag: "1.1"
      pullPolicy: IfNotPresent
    service:
      annotations: {}
      labels: {}
      clusterIP: ""
      externalIPs: []
      loadBalancerIP: ""
      loadBalancerSourceRanges: []
      metricsPort: 8481
      servicePort: 8480
      type: ClusterIP
    ingress:
      enabled: false
      annotations: {}
      extraLabels: {}
      hosts: []
      tls: []
    volumes:
      persistent:
        type: "persistentVolume"
        enabled: false
        mountPath: "/tmp/trickster"
        accessModes:
          - ReadWriteOnce
        annotations: {}
        existingClaim: ""
        size: 15Gi
      generic:
        type: "generic"
        enabled: true
        mountPath: "/tmp/trickster"
    podAnnotations: {}
    resources: {}
    securityContext: {}
    

    Вы можете изменить размер хранилища, отведенного для работы кеширующего прокси. Укажите нужное значение размера хранилища в параметре volumes.persistent.size.

  3. Установите trickster:

    helm install trickster tricksterproxy/trickster --namespace default -f trickster.yaml
    
  4. Убедитесь, что под trickster перешел в состояние Running:

    kubectl get pods -l "app=trickster"
    

Кеширующий прокси доступен внутри кластера по адресу http://trickster:8480. Grafana будет обращаться по этому URL для получения метрик.

Установите Grafana

При развертывании приложения будут созданы:

  • Deployment приложения Grafana.
  • PersistentVolumeClaim для резервирования внутреннего хранилища.
  • Service типа LoadBalancer для организации сетевого доступа к консоли управления Grafana.

Чтобы установить Grafana:

  1. Создайте конфигурационный файл grafana.yaml.

    grafana.yaml
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    spec:
      selector:
        matchLabels:
          app: grafana
      template:
        metadata:
          labels:
            app: grafana
        spec:
          securityContext:
            fsGroup: 472
            supplementalGroups:
              - 0
          containers:
            - name: grafana
              image: grafana/grafana:latest
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 3000
                  name: http-grafana
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  path: /robots.txt
                  port: 3000
                  scheme: HTTP
                initialDelaySeconds: 10
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 2
              livenessProbe:
                failureThreshold: 3
                initialDelaySeconds: 30
                periodSeconds: 10
                successThreshold: 1
                tcpSocket:
                  port: 3000
                timeoutSeconds: 1
              resources:
                requests:
                  cpu: 250m
                  memory: 750Mi
              volumeMounts:
                - mountPath: /var/lib/grafana
                  name: grafana-pv
          volumes:
            - name: grafana-pv
              persistentVolumeClaim:
                claimName: grafana-pvc
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
    spec:
      ports:
        - port: 3000
          protocol: TCP
          targetPort: http-grafana
      selector:
        app: grafana
      sessionAffinity: None
      type: LoadBalancer
    

    При необходимости измените:

    • Размер хранилища, отведенного для работы Grafana, в параметре spec.resources.requests.storage для kind: PersistentVolumeClaim.
    • Вычислительные ресурсы, выделяемые поду Grafana, в параметрах spec.containers.resources для kind: Deployment.
  2. Установите Grafana:

    kubectl apply -f grafana.yaml
    
  3. Убедитесь, что под Grafana перешел в состояние Running:

    kubectl get pods -l "app=grafana"
    

Настройте и проверьте работу Grafana

  1. Узнайте адрес, на котором доступен сервис Grafana, и перейдите по этому адресу:

    export GRAFANA_IP=$(kubectl get service/grafana -o jsonpath='{.status.loadBalancer.ingress[0].ip}') && \
    export GRAFANA_PORT=$(kubectl get service/grafana -o jsonpath='{.spec.ports[0].port}') && \
    echo http://$GRAFANA_IP:$GRAFANA_PORT
    
  2. В открывшемся окне браузера введите логин и пароль admin/admin, после чего установите новый пароль для пользователя admin.

  3. Добавьте источник данных с типом Prometheus и следующими настройками:

    • Name — Prometheus.
    • URL — http://trickster:8480.
  4. Нажмите кнопку Save & test и убедитесь, что источник данных успешно подключен (Data source is working).

  5. Импортируйте дашборд Kubernetes Deployment Statefulset Daemonset metrics, содержащий основные метрики Kubernetes. Укажите идентификатор дашборда (8588) при импорте.

    Совет

    Для проверки сценария вы можете использовать любой подходящий дашборд из каталога Grafana.

  6. Откройте дашборд и убедитесь, что Grafana получает метрики от кластера Managed Service for Kubernetes.

Удалите созданные ресурсы

Если созданные ресурсы вам больше не нужны, удалите их:

  1. Удалите кластер Managed Service for Kubernetes.
  2. Если вы зарезервировали для кластера публичный статический IP-адрес, удалите его.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Установите Prometheus
  • Установите кеширующий прокси trickster
  • Установите Grafana
  • Настройте и проверьте работу Grafana
  • Удалите созданные ресурсы