Kubernetes
Установка
Добавление Helm репозитория
# Добавление официального репозитория Astra Monitoring
helm repo add am-helm https://dl.astralinux.ru/...
helm repo update
Установка Reloader
# Добавление репозитория Stakater
helm repo add stakater https://stakater.github.io/stakater-charts
helm repo update
# Установка Reloader
helm install reloader stakater/reloader -n astra-monitoring --create-namespace
Сценарии установки
Скачивание Helm chart и values
# Скачать только values.yaml по умолчанию
helm show values am-helm/astra-icl-monitoring > values.yaml
# Скачать chart для оффлайн установки
helm pull am-helm/astra-icl-monitoring --version 0.0.12
tar -xzf astra-icl-monitoring-0.0.12.tgz
Установка с параметрами в командной строке
# Базовая установка с параметрами в командной строке
helm upgrade astra-monitoring am-helm/astra-icl-monitoring \
-n astra-monitoring \
--install \
--set admin_ui.password="admin123" \
--set grafana.password="grafana123" \
--set clickhouse.password="clickhouse123" \
--set postgresql.password="postgres123" \
--set ingress.dnsSuffix=".mydomain.local"
Установка с custom values.yaml
# Создание custom values.yaml
cat > custom-values.yaml << EOF
ingress:
dnsSuffix: ".mydomain.local"
grafana:
password: "grafana123"
clickhouse:
password: "clickhouse123"
db_backup_enabled: true
db_backup_retention_days: 30
base_backup_copies_number: 2
postgresql:
password: "postgres123"
db_backup_enabled: true
db_backup_retention_days: 30
victoria_metrics:
retention: 45
keepPVC: true
EOF
# Установка с custom values
helm upgrade astra-monitoring am-helm/astra-icl-monitoring \
-n astra-monitoring \
--install \
--values ./custom-values.yaml
Установка с использованием секретов
# Установка с ссылками на существующие секреты
helm upgrade astra-monitoring am-helm/astra-icl-monitoring \
-n astra-monitoring \
--install \
--set admin_ui.secretName="admin-ui-secret" \
--set grafana.secretName="grafana-secret" \
--set clickhouse.secretName="clickhouse-secret" \
--set postgresql.secretName="postgresql-secret" \
--set ingress.dnsSuffix=".mydomain.local" \
--values ./values.yaml
Проверка установки
Проверка Helm release
# Проверить статус установки
helm list -n astra-monitoring
Проверка подов
# Проверить состояние всех подов
kubectl get pods -n astra-monitoring
# Дождаться когда все поды будут в состоянии Running
kubectl wait --for=condition=ready pod -l app.kubernetes.io/name=astra-icl-monitoring -n astra-monitoring --timeout=600s
Проверка сервисов
# Проверить сервисы
kubectl get services -n astra-monitoring
# Проверить ingress
kubectl get ingress -n astra-monitoring
Доступ к компонентам
После успешной установки вы получите доступы к компонентам:
***Admin UI***
https://admin-ui-astra-monitoring.mydomain.local
Login: admin
Password: [установленный пароль]
***Grafana***
https://grafana-astra-monitoring.mydomain.local
Login: admin
Password: [установленный пароль]
Обновление
# Обновление репозитория
helm repo update
# Обновление release
helm upgrade astra-monitoring am-helm/astra-icl-monitoring \
-n astra-monitoring \
--values ./values.yaml
Удаление
Удаление с сохранением данных
# В values.yaml установить:
keepPVC: true
# Удаление release с сохранением PVC
helm uninstall astra-monitoring -n astra-monitoring
Полное удаление
# В values.yaml установить:
keepPVC: false
# Удаление release и PVC
helm uninstall astra-monitoring -n astra-monitoring
# Ручное удаление PVC (если потребуется)
kubectl delete pvc -n astra-monitoring --all
Важно: PVC для бэкапов не удаляются автоматически, их нужно удалять вручную при необходимости.
Устранение проблем
Проверка логов
# Проверить логи конкретного пода
kubectl logs -n astra-monitoring <pod-name>
# Проверить логи с детализацией
kubectl logs -n astra-monitoring <pod-name> --previous
Проверка событий
# Просмотр событий namespace
kubectl get events -n astra-monitoring --sort-by=.metadata.creationTimestamp
Параметры Values
Базовые параметры окружения
environment: prod
# Нужно ли сохранять PV/PVC после удаления чарта
keepPVC: True
# Надо ли создавать секреты, по умолчанию - Да
createGrafanaSecret: true
createClickhouseSecret: true
createPostgreSQLSecret: true
# Основной тип стораджа
storageClass: yc-network-hdd
# Тип стораджа для бекапов (требует Read-Write-Many)
storageClassBackup: csi-s3
Конфигурация Ingress
ingress:
# DNS-суффикс для публикации приложений
# Публикация будет выглядеть так: http(s)://admin-ui-<release_name><dnsSuffix>/
dnsSuffix: .example.loc
className: nginx
# Конфигурация https для Ingress
tlsEnabled: False
secretName: ingress-tls
Конфигурация ClickHouse
Параметры для настройки кластера ClickHouse
clickhouse:
# Если ClickHouse внешняя
# Адрес хоста
# host: svc-mon-dev-clickhouse-proxy
# Если ClickHouse внутренняя
# Название и путь до образа
image: <example-registry/imagename>
# Версия образа
tag: <example-tag>
# Размер хранилища под логи
storageSize: 100Gi
# Размер хранилища под бэкап
backupStorageSize: 50Gi
# Количество шардов Clickhouse
shards: 3
# Порт
port: 9090
# Имя БД
database: astra
# Имя пользователя
user: astra
# Имя секрета k8s с паролем для Clickhouse
# secretName: clickhouse_secret_name
# Включить запуск задачи по обновлению структуры бд
#db_update_enabled: true
db_update_enabled: false
# Хост для подключения к бд для обновления (используется native протокол)
# db_management_host: svc-mon-dev-clickhouse-1
# Порт для подключения к бд для обновления (используется native протокол)
db_management_port: 9000
Конфигурация ClickHouse Keeper
Параметры для координатора кластера ClickHouse
clickhousekeeper:
# Размер хранилища под данные
storageSize: 3Gi
# Название и путь до образа
image: <example-registry/imagename>
# Версия образа
tag: <example-tag>
# Глубина хранения бэкапа конфигурации
backup_retention_days: 5
# Тип стораджа для
storageClass: csi-s3
Конфигурация ClickHouse Proxy
Параметры для прокси-сервера ClickHouse
clickhouseproxy:
# Название и путь до образа
image: <example-registry/imagename>
# Версия образа
tag: <example-tag>
Конфигурация PostgreSQL
Параметры для базы данных PostgreSQL
postgresql:
# Если PostgreSQL внешняя
# Адрес хоста
# host: svc-mon-dev-postgresql
# Если PostgreSQL внутренняя
# Название и путь до образа
image: <example-registry/imagename>
# image: registry.astralinux.ru/am/postgres
# Версия образа
tag: <example-tag>
# Размер хранилища под конфигурацию системы мониторинга
storageSize: 10Gi
# Включить регулярный бекап бд
db_backup_enabled: true
# Таймаут для подключения к бд
db_connection_timeout: 5
# Порт
port: 5432
# Имя БД
database: astra
# Имя пользователя
user: astra
# Имя секрета k8s с паролем для PostgreSQL
# secretName: postgresql_secret_name
# Включить запуск задачи по обновлению структуры бд
db_update_enabled: true
Административный интерфейс (Admin UI)
Параметры для веб-интерфейса управления
admin_ui:
# По-умолчанию Ingress хост динамически создаётся по шаблону
# admin-ui-<Release.Name><Values.ingress.dnsSuffix>
# задание опции ingressPrefix меняет поведение, Ingress хост
# будет создаваться по шаблону:
# <Values.admin_ui.ingressPrefix><Values.ingress.dnsSuffix>
# ingressPrefix: admin-ui
# user: admin
# Имя секрета k8s с паролем для входа в Admin UI
# secretName: admin_ui_secret_name
front:
image: <example-registry/imagename>
tag: <example-tag>
back:
image: <example-registry/imagename>
tag: <example-tag>
Конфигурация Grafana
Параметры для веб-интерфейса дашбордов
grafana:
# По-умолчанию Ingress хост динамически создаётся по шаблону
# grafana-<Release.Name><Values.ingress.dnsSuffix>
# задание опции ingressPrefix меняет поведение, Ingress хост
# будет создаваться по шаблону:
# <Values.grafana.ingressPrefix><Values.ingress.dnsSuffix>
# ingressPrefix: grafana
# Размер хранилища данных для Grafana
storageSize: 5Gi
# Название и путь до образа
image: <example-registry/imagename>
# Версия образа
tag: <example-tag>
# Уникальный ID источника данных Prometheus
prometheus_uid: 'gOyMaiEVz'
# Уникальный ID для источника данных ClickHouse
clickhouse_uid: 'P53F4937A2B5B9367'
# Имя секрета k8s с паролем для входа в Grafana
# secretName: grafana_secret_name
Хранение метрик VictoriaMetrics
Параметры для сбора и хранения метрик
victoria_metrics:
image: <example-registry/imagename>
tag: <example-tag>
# Длительность хранения метрик
retention: 45d
# Размер хранилища метрик
storageSize: 20Gi
# По-умолчанию Ingress хост динамически создаётся по шаблону
# vmetrics-<Release.Name><Values.ingress.dnsSuffix>
# задание опции ingressPrefix меняет поведение, Ingress хост
# будет создаваться по шаблону:
# <Values.victoria_metrics.ingressPrefix><Values.ingress.dnsSuffix>
# ingressPrefix: victoria_metrics
service:
type: NodePort
ports:
- port: 8428
targetPort: 8428
name: vmetrics
# Номер порта, который будет опубликован на нодах k8s
# см. ограничения https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
nodePort: 30618
Конфигурация агента сбора метрик
agent:
# Название и путь до образа
image: <example-registry/imagename>
# Версия образа
tag: <example-tag>
# Размер хранилища под конфигурацию системы мониторинга
storageSize: 2Gi
metrics:
config_api: true
adapter: true
selecter: true
Аутентификация и авторизация (Keycloak)
keycloak:
# По-умолчанию Ingress хост динамически создаётся по шаблону
# oidc-<Release.Name><Values.ingress.dnsSuffix>
# Размер хранилища данных для Keycloak
storageSize: 5Gi
# Название и путь до образа
image: <example-registry/imagename>
# Версия образа
tag: <example-tag>
Сервис лицензий
license_service:
image: <example-registry/imagename>
tag: <example-tag>
log_level: info
port: 8987
Сервис конфигурирвоания агентов config-api
config_api:
image: <example-registry/imagename>
tag: <example-tag>
log_level: info
address: ''
port: 7777
auth_token: ''
is_debug: false
Сборщик трассировок
trace_collector:
image: <example-registry/imagename>
tag: <example-tag>
Сервис уведомлений
notification_service:
image: <example-registry/imagename>
tag: <example-tag>
log_level: info
address: ''
port: 8877
stderr: json
Кэш Redis
redis:
image: <example-registry/imagename>
tag: <example-tag>
# debug - request logs, info less verbose
log_level: info
storageSize: 1Gi
Адаптеры ClickHouse
clickhouse_adapter:
image: <example-registry/imagename>
tag: <example-tag>
port: 8989
clickhouse_selecter:
image: <example-registry/imagename>
tag: <example-tag>
port: 8988
Обработка мониторов
event_processing:
image: <example-registry/imagename>
tag: <example-tag>
log_level: info
Вспомогательные компоненты
vmagent:
image: <example-registry/imagename>
tag: <example-tag>
server_port: 9703
vmalert:
image: <example-registry/imagename>
tag: <example-tag>
# Включить правила из директории alert-rules
includeDefaultRules: "true"
vmauth:
image: <example-registry/imagename>
tag: <example-tag>
service:
type: NodePort
ports:
- port: 8427
targetPort: 8427
name: vmauth
Лицензирование
Имеется возможность загрузить лицензию автоматически при развёртывании
license_url: ""
license_user: ""
license_password: ""