Skip to main content
Skip table of contents

Установка мониторинга и логирования

В этом документе приведены инструкции по установке компонентов мониторинга и логирования в кластере Kubernetes.

Добавление сервера под мониторинг и логирование в кластер Kubernetes

Для установки компонентов мониторинга и логирования в кластере Kubernetes необходимо использовать отдельный хост Виртуальная машина 3 (ВМ3), оснащенный локальным диском для хранения данных мониторинга и логирования.

Мониторинг и логирование состоят из следующих ключевых компонентов:

  • Grafana

  • InfluxDB

  • Prometheus

  • Loki

  • Fluent Bit

Для добавления сервера мониторинга на кластер Kubernetes, подготовьте хост и установите Ubuntu 20.04 LTS.

Подготовка хоста

Подготовьте хост ВМ3 со следующими характеристиками:

  • ОС: Ubuntu 20.04 LTS

  • процессор - 8 ядер

  • ОЗУ - 32 ГБ

  • Диск1: 100ГБ (sda), системный диск

  • Диск2: 500ГБ (sdb), для хранения данных мониторинга и логирования

  • 1 vNIC, IP-адрес

  • Образец названия хоста k8s-monitoring-xx (xx: 01, 02 ...)

Настройка Ubuntu 20.04 LTS

Для настройки Ubuntu выполните следующие шаги:

  1. Установите последнюю версию Ubuntu 20.04 LTS:

CODE
sudo apt update && sudo apt upgrade -y 
  1. Разрешите администратору доступ по SSH, скопировав SSH-ключи в ~/.ssh/authorized_keys.

  2. Разрешите администратору беспарольный доступ sudo. Замените admin_1 на нужного пользователя:

CODE
sudo su 
CODE
cat << EOF >> /etc/sudoers
admin_1 ALL=(ALL) NOPASSWD:ALL
EOF
  1. Перезагрузите сервер:

CODE
sudo reboot

Добавление хоста в кластер Kubernetes

Все действия выполняются на ВМ1, если не указано иное.

  1. На ВМ3 клонируйте репозиторий:

Замените {TAG_NAME} любым доступным тегом (для получения полного списка тегов используйте git tag):

CODE
git clone https://x-token-auth:ATCTT3xFfGN0Yn6g-w5oVglgBISU0KP96SItt6MP_npjhlfDdjINehKYW__XmTEpXTJfGMppWss1T0lYpIegZGjO_PEMZZh-vCNcEgfjpLUv9G2dJ9YhPpxM6n8RQtOIK_XToUaCysmK4Zk3mjc4iDcN6m34y5rGuPWnaqOWLMXDrH2AkhFgbuk=5DE8AF2B@bitbucket.org/naveksoft/aivp.git
cd ./aivp-deploy-release/kubernetes/k8s-onprem/
git checkout {TAG_NAME}
  1. Установите базовые компоненты Kubernetes:

CODE
./install_kube_base.sh
  1. На ВМ1 получите регистрационный токен или URL:

CODE
kubeadm token create --print-join-command
CODE
###Пример токена:
kubeadm join 192.168.205.164:6443 --token 3yeqrm.abnp3yof8vivcbge --discovery-token-ca-cert-hash sha256:b58cfd679a3bb49f444dfe4869fad5e19f4fba87f1d6ae5f20da06c60f51684e
  1. Скопируйте токен и примените на ВМ3 через sudo:

CODE
###Пример:
sudo kubeadm join 192.168.205.164:6443 --token 3yeqrm.abnp3yof8vivcbge --discovery-token-ca-cert-hash sha256:b58cfd679a3bb49f444dfe4869fad5e19f4fba87f1d6ae5f20da06c60f51684e
  1. Проверьте на ВМ1, что сервер добавлен и находится в статусе Ready:

CODE
kubectl get nodes
CODE
###Пример ответа:
NAME                   STATUS   ROLES           AGE     VERSION
k8s-monitoring-01      Ready    <none>          3m28s   v1.28.2
  1. Добавьте label и taint на данный сервер, чтобы он использовался только для мониторинга. Выполните следующие команды, заменив k8s-single-analytics на имя вашего сервера:

CODE
##Пример:
kubectl taint nodes k8s-monitoring-01 monitoring:NoSchedule
kubectl label nodes k8s-monitoring-01 monitoring=true
  1. На ВМ3 подготовьте локальное хранилище, выполнив следующие команды:

CODE
cd ~/aivp-deploy-release/kubernetes/k8s-onprem
./prepare_local_storage.sh 1 10 sdb make_fs

Установка компонентов мониторинга и логирования

Все действия выполняются на ВМ1, если не указано иное.

Для установки компонентов мониторинга и логирования выполните шаги:

  1. На ВМ1 перейдите в рабочую директорию:

CODE
cd ~/aivp-deploy-release/kubernetes/k8s-onprem
  1. Скопируйте sources.sh.sample в sources.sh, если не было сделано ранее, и проверьте конфигурации секции мониторинга.
    Для корректной работы мониторинга компонента Analytics требуется, чтобы переменная MONITORING была установлена в значение yes во время установки Analytics. При необходимости обновите установку Analytics.

CODE
vim ./sources.sh
CODE
# Параметры Monitoring (требуется, если развернут мониторинг)
export MONITORING=no                            				     #развернуть Monitoring (yes или no) 
export PROVISION_DASHBOARDS=yes							             #grafana панели автоматически генерировать (yes или no)
export INFLUX_USR=admin 							                 #укажите influxdb администратора
export INFLUX_PSW=0hmSYYaRci6yJblARc6aHbHZ4YelTXTo				     #укажите пароль для администратора influxdb (использовать только буквы и цифры)
export INFLUX_TOKEN=2pORp9tDo40Lm32oGUKFLL8r1UuNbgUT				 #укажите токен для influxdb API 
  1. Подготовьте конфигурационные файлы для мониторинга:

CODE
./configure-monitoring.sh
  1. Проверьте конфигурационные файлы в папке ../monitoring/ и внесите изменения при необходимости. Для мониторинга S3 MinIO вам нужно настроить bearer_token в директивах job_name: minio-job и job_name: minio-job-bucket в файле prometheus-config-map.yaml. Чтобы получить токены, выполните следующие команды (в этом примере, local это название хранилища MinIO S3):

CODE
mc admin prometheus generate local
CODE
mc admin prometheus generate local bucket

Отредактируйте bearer_token или весь блок конфигурации MinIO в файле prometheus-config-map.yaml через vim ../monitoring/prometheus-config-map.yaml:

CODE
  - job_name: minio-job
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibmF2ZWtzb2Z0IiwiZXhwIjo0ODUwMzk2OTA3fQ.WWCLGWb-usnTqR5aWGDwRpSlgl0VfDvthSSWYxhf3X1UNXCRWoGIZz386Q3KIShzAHipamIoFyf5oR9YCebobg
    metrics_path: /minio/v2/metrics/cluster
    scheme: http
    static_configs:
      - targets: [minio.minio-single.svc:9000]
  - job_name: minio-job-bucket
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibmF2ZWtzb2Z0IiwiZXhwIjo0ODUwNTIwMjkyfQ.acVDRmB-kLSFCkzIIZAinzTRguHYYKZeM0ebwHHKfSDhjq3xYb4YaNwfHrJKoI4E3z5fTGD7sal4QwF5nxdn-w
    metrics_path: /minio/v2/metrics/bucket
    scheme: http
    static_configs:
      - targets: [minio.minio-single.svc:9000]
  1. Установите мониторинг и логирование, выполнив следующую команду:

CODE
./deploy-monitoring.sh

По завершению установки, вы сможете подключиться к Grafana и импортировать дашборды из коллекции дашбордов, расположенной в папке ~/aivp-deploy-release/monitoring/grafana-dashboards/ текущего репозитория при условии, что автоматическое предоставление дашбордов не настроено. В конце скрипта вы получите URL-адреса для разных компонентов.

Дополнительные шаги

Дополнительные шаги необходимы для обеспечения клиентского доступа к Grafana по HTTPS через прокси-сервер Nginx. В некоторых случаях можно использовать внешний прокси.

  1. Отредактируйте файл конфигурации nginx.conf путем раскомментирования строк кода:

CODE
 vim ../nginx/nginx.conf
CODE

    location /monitoring {
        proxy_pass http://grafana.monitoring.svc:3000;
    }
  1. Примените изменения и обновите компоненты VMS:

CODE
./update-vms.sh
  1. Настройте компонент Grafana, добавив указанные переменные среды (GF_SERVER_ROOT_URL и GF_SERVER_SERVE_FROM_SUB_PATH) в спецификацию контейнера:

CODE
kubectl -n monitoring edit deployments.apps grafana
CODE
...
containers:
- env:
  - name: GF_SERVER_ROOT_URL
    value: https://<domain-url>/monitoring
  - name: GF_SERVER_SERVE_FROM_SUB_PATH
    value: "true"
...

 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.