Установка мониторинга и логирования
В этом документе приведены инструкции по установке компонентов мониторинга и логирования в кластере 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 выполните следующие шаги:
Установите последнюю версию Ubuntu 20.04 LTS:
sudo apt update && sudo apt upgrade -y
Разрешите администратору доступ по SSH, скопировав SSH-ключи в
~/.ssh/authorized_keys
.Разрешите администратору беспарольный доступ
sudo
. Заменитеadmin_1
на нужного пользователя:
sudo su
cat << EOF >> /etc/sudoers
admin_1 ALL=(ALL) NOPASSWD:ALL
EOF
Перезагрузите сервер:
sudo reboot
Добавление хоста в кластер Kubernetes
Все действия выполняются на ВМ1, если не указано иное.
На ВМ3 клонируйте репозиторий:
Замените {TAG_NAME}
любым доступным тегом (для получения полного списка тегов используйте git tag
):
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}
Установите базовые компоненты Kubernetes:
./install_kube_base.sh
На ВМ1 получите регистрационный токен или URL:
kubeadm token create --print-join-command
###Пример токена:
kubeadm join 192.168.205.164:6443 --token 3yeqrm.abnp3yof8vivcbge --discovery-token-ca-cert-hash sha256:b58cfd679a3bb49f444dfe4869fad5e19f4fba87f1d6ae5f20da06c60f51684e
Скопируйте токен и примените на ВМ3 через
sudo
:
###Пример:
sudo kubeadm join 192.168.205.164:6443 --token 3yeqrm.abnp3yof8vivcbge --discovery-token-ca-cert-hash sha256:b58cfd679a3bb49f444dfe4869fad5e19f4fba87f1d6ae5f20da06c60f51684e
Проверьте на ВМ1, что сервер добавлен и находится в статусе
Ready
:
kubectl get nodes
###Пример ответа:
NAME STATUS ROLES AGE VERSION
k8s-monitoring-01 Ready <none> 3m28s v1.28.2
Добавьте
label
иtaint
на данный сервер, чтобы он использовался только для мониторинга. Выполните следующие команды, заменивk8s-single-analytics
на имя вашего сервера:
##Пример:
kubectl taint nodes k8s-monitoring-01 monitoring:NoSchedule
kubectl label nodes k8s-monitoring-01 monitoring=true
На ВМ3 подготовьте локальное хранилище, выполнив следующие команды:
cd ~/aivp-deploy-release/kubernetes/k8s-onprem
./prepare_local_storage.sh 1 10 sdb make_fs
Установка компонентов мониторинга и логирования
Все действия выполняются на ВМ1, если не указано иное.
Для установки компонентов мониторинга и логирования выполните шаги:
На ВМ1 перейдите в рабочую директорию:
cd ~/aivp-deploy-release/kubernetes/k8s-onprem
Скопируйте
sources.sh.sample
вsources.sh
, если не было сделано ранее, и проверьте конфигурации секции мониторинга.
Для корректной работы мониторинга компонента Analytics требуется, чтобы переменнаяMONITORING
была установлена в значениеyes
во время установки Analytics. При необходимости обновите установку Analytics.
vim ./sources.sh
# Параметры 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
Подготовьте конфигурационные файлы для мониторинга:
./configure-monitoring.sh
Проверьте конфигурационные файлы в папке
../monitoring/
и внесите изменения при необходимости. Для мониторинга S3 MinIO вам нужно настроитьbearer_token
в директивахjob_name: minio-job
иjob_name: minio-job-bucket
в файлеprometheus-config-map.yaml
. Чтобы получить токены, выполните следующие команды (в этом примере,local
это название хранилища MinIO S3):
mc admin prometheus generate local
mc admin prometheus generate local bucket
Отредактируйте bearer_token
или весь блок конфигурации MinIO в файле prometheus-config-map.yaml
через vim ../monitoring/prometheus-config-map.yaml
:
- 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]
Установите мониторинг и логирование, выполнив следующую команду:
./deploy-monitoring.sh
По завершению установки, вы сможете подключиться к Grafana и импортировать дашборды из коллекции дашбордов, расположенной в папке ~/aivp-deploy-release/monitoring/grafana-dashboards/
текущего репозитория при условии, что автоматическое предоставление дашбордов не настроено. В конце скрипта вы получите URL-адреса для разных компонентов.
Дополнительные шаги
Дополнительные шаги необходимы для обеспечения клиентского доступа к Grafana по HTTPS через прокси-сервер Nginx. В некоторых случаях можно использовать внешний прокси.
Отредактируйте файл конфигурации
nginx.conf
путем раскомментирования строк кода:
vim ../nginx/nginx.conf
location /monitoring {
proxy_pass http://grafana.monitoring.svc:3000;
}
Примените изменения и обновите компоненты VMS:
./update-vms.sh
Настройте компонент Grafana, добавив указанные переменные среды (
GF_SERVER_ROOT_URL
иGF_SERVER_SERVE_FROM_SUB_PATH
) в спецификацию контейнера:
kubectl -n monitoring edit deployments.apps grafana
...
containers:
- env:
- name: GF_SERVER_ROOT_URL
value: https://<domain-url>/monitoring
- name: GF_SERVER_SERVE_FROM_SUB_PATH
value: "true"
...