BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Production-эксплуатация Grafana » Provisioning и автоматизация: конфигурации, dashboards, data sources, teams

Provisioning и автоматизация: конфигурации, dashboards, data sources, teams

Provisioning Grafana в production-средах требует формализации конфигураций, управления версиями и автоматизации жизненного цикла объектов Grafana: источников данных, дашбордов и команд. Глубокий подход к provisioning позволяет обеспечить повторяемость, аудит изменений, безопасность и эффективную работу многочисленных инстансов Grafana в рамках enterprise-ландшафта и Kubernetes-экосистем.

Provisioning - это не перенос настроек из панели администратора в файл. Это механизм, который обеспечивает источник истины, непрерывную доставку изменений, тестирование конфигураций и безопасное управление доступами в условиях высокой загрузки и строгих требований к соответствию. В этой главе рассмотрены архитектурные принципы, форматы конфигураций, подходы к управлению командами и ролями, а также процессы GitOps и интеграцию с Kubernetes и корпоративными ландшафтами.

  • Архитектура provisioning и управление конфигурациями
  • Конфигурации источников данных и dashboards
  • Управление командами и доступами
  • Автоматизация, CI/CD и интеграции с Kubernetes и enterprise-ландшафтами

     

Архитектура provisioning и управление конфигурациями

Provisioning следует рассматривать как часть архитектуры платформы наблюдаемости: он должен быть идентифицируемым, идемпотентным и повторяемым. Основной принцип - хранение конфигураций в системе контроля версий как единого источника истины, с возможностью развернуть их в разных окружениях (development, staging, production) без ручного вмешательства. Этого достигают через структурированную организацию репозитория, четко разделенные environment-specific каталоги и согласованные политики доступа.

В контексте Grafana provisioning ключевые элементы включают:

  • источники данных (datasources), dashboards и их параметры;
  • команды и роли (teams) для доступа к ресурсам;
  • настройки уведомлений и другие объекты конфигурации, которые могут потребоваться для единообразия мониторинга и аналитики по всей организации.

Архитектурно целесообразно применять модель «GitOps»: изменения в provisioning-хардах вносятся в git-репозиторий, тестируются локально и затем автоматически разворачиваются в целевых кластерах через систему непрерывной доставки (Argo CD, Flux) или через Kubernetes операторов Grafana. В такой схеме жизненный цикл provisioning поддерживает контроль версий, аудит и откаты.

Важно обеспечиваетмость безопасности и секретности: credentials для data sources не должны храниться в открытом виде в файлах provisioning. Их следует хранить в защищенном сейфе (HashiCorp Vault, AWS Secrets Manager и т.п.) и подменять через безопасные механизмы внедрения в runtime Grafana. В идеале credentials загружаются на этапе инициализации инстанса и недоступны напрямую в коде конфигураций.

Пример структуры provisioning на уровне архитектуры может выглядеть так:

  • provisioning/
    • datasources/
      • prometheus.yaml
    • dashboards/
      • system/
        • infra-dashboard.json
    • teams/
      • Platform.yaml
    • users/
      • admin.yaml

Идея - обеспечить независимую версию для каждого типа объектов, обеспечить единый механизм обновления и минимизировать пересечения ответственности между командами эксплуатации и командой разработки.

 

Репозитории и окружения

Каждое окружение может иметь собственную ветку или отдельную папку provisioning, чтобы исключить влияние изменений между средами. Важно определить правила ветвления и слияния: например, изменения в prod должны проходить через ревью и автоматизированные тесты, прежде чем попадут в рабочую инстанцию. В идеале следует внедрить процесс параллельной синхронизации: изменения в development - через dev-провайдер, а затем через процесс промоции в staging и production.

 

Безопасность и секреты

Необходимо разделять конфигурацию и секреты. Для data sources используйте secureJsonData (или аналогичные поля в вашей версии Grafana) для хранения секретов, а сами значения держите в защищенном хранилище. При автоматизированном разворачивании секреты подменяются безопасно, без оставления секретов в файлах provisioning. В контексте Kubernetes полезно размещать чувствительные данные в Kubernetes Secrets и монтировать их через среду выполнения, ограничивая доступ только тем подам, которым они необходимы.

apiVersion: 1
datasources:
  - **name**: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus-operated:9090
    isDefault: true
    jsonData:
      tlsSkipVerify: true
    secureJsonData:
      basicAuthPassword: 'REDACTED'
dashboards:
  enabled: true
  path: /var/lib/grafana/dashboards
providers:
  - **name**: 'default'
    type: 'file'
    disableDeletion: false
    updateIntervalSeconds: 60
    options:
      path: /var/lib/grafana/dashboards

Конфигурации источников данных и dashboards

Конфигурации источников данных и дашбордов оформляются как код. Это позволяет обеспечить повторяемость, верификацию и контроль изменений. В Grafana provisioning источники данных создаются и обновляются через файлы YAML/JSON, а дашборды - через JSON-файлы (или через API).

 

Форматы конфигураций и схемы

  • Datasources: описываются как YAML; ключевые параметры включают name, type, url, access, isDefault. Чувствительные данные следует хранить в secureJsonData или в секретном хранилище, а ссылку на секрет - не в открытом виде.

  • Dashboards: дашборды обычно хранятся как JSON-файлы и подключаются через провайдеры типа file. Опция foldersFromJson позволяет организовывать структуру папок на основе настроек внутри JSON.

    apiVersion: 1
    providers:
      - **name**: 'default'
        type: 'file'
        disableDeletion: false
        updateIntervalSeconds: 60
        options:
          path: /var/lib/grafana/dashboards
    
    dashboards:
      enabled: true
      path: /var/lib/grafana/dashboards
    

    Управление жизненным циклом и обновлениями

  • Обновления должны быть идемпотентными: повторные применения конфигураций не должны приводить к нежелательным изменениям.

  • Частота обновлений (updateIntervalSeconds) следует подбирать по критическим требованиям к задержкам в обновлении панели, но не перегружать систему частыми повторными импортами.

  • В продакшене полезно применить стратегию "pull-based provisioning": Grafana регулярно читает статические конфигурационные файлы с файловой системы или через API, позволяя централизованно управлять изменениями.

     

Dashboards as Code: рабочие практики

  • Храните dashboards в виде JSON с корректными версиями полей и схемы.
  • Применяйте проверки валидности перед коммитами: lint-инструменты, проверки схем Grafana JSON, а также тестирование панелей.
  • Включайте тесты для критически важных дашбордов, чтобы предотвратить регрессии.

     

Пример сложной конфигурации

apiVersion: 1
providers:
  - **name**: 'prod-dashboards'
    type: 'file'
    disableDeletion: false
    updateIntervalSeconds: 120
    options:
      path: /var/lib/grafana/provisioning/prod/dashboards
      foldersFromJson: true
apiVersion: 1
datasources:
  - **name**: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus-prod:9090
    isDefault: true
    jsonData:
      httpMethod: POST
    secureJsonData:
      bearerToken: 'REDACTED'

Управление командами и доступами

Управление командами и пользователями в Grafana реализуется через механизмы RBAC и концепцию проектов/организаций. В корпоративной среде provisioning часто расширяется за счет управления пользователями и командами на уровне конфигураций, что позволяет быстро формировать согласованные наборы прав для конкретной группы.

 

RBAC и роли в Grafana

  • Admin, Editor, Viewer в рамках организации.
  • В Enterprise существуют дополнительные уровни доступа и инструменты интеграции с корпоративной системойIdentity Management (OIDC/SAML). Provisioning может содержать раздел users и teams, которые автоматически создаются и ассоциируются с организациями Grafana и ролями.

     

Provisioning users и teams

users:
  - **login**: janedoe
    name: "Jane Doe"
    email: jane.doe@example.com
    orgRole: Admin
  - **login**: jsmith
    name: "John Smith"
    email: john.smith@example.com
    orgRole: Editor

teams:
  - **name**: Platform
    members:
      - **login**: janedoe
      - **login**: jsmith
    orgRole: Editor

В этом контексте полезна политика разделения обязанностей: разработчики формируют dashboards и data sources, эксплуатация отвечает за кросс-окружную консолидацию и доступы, а безопасность контролирует хранение и использование секретов. В крупных организациях рекомендуется использовать единый канал аутентификации (OIDC) и соответствующие роли в IAM-системе, чтобы минимизировать противоречия между локальными provisioning-правилами Grafana и корпоративными политиками.

 

Автоматизация, CI/CD и интеграции с Kubernetes и enterprise-ландшафтами

Автоматизация provisioning предполагает тесную интеграцию с пайплайнами CI/CD, GitOps и инфраструктурными операциями, включая Kubernetes и управляющие подходы для enterprise. В этой части рассматриваются практики, которые позволяют поддерживать устойчивость и скорость развертывания графики наблюдаемости в больших ландшафтах.

 

GitOps и CI/CD пайплайны

  • Хранение Provisioning как код в Git-репозитории, разделение по окружениям и политикам ревью.

  • Автоматизация тестирования: проверка YAML на валидность, тестирование конфигураций и YAML/JSON-структур, линтинг dashboards и data sources.

  • Инструменты CI/CD (GitHub Actions, GitLab CI) должны включать этапы проверки конфигураций, верификацию схем и безопасных данных, а затем синхронизацию с целевой средой через Argo CD или Flux.

    name: Grafana Provisioning - lint and validate
    on:
      push:
        paths:
          - 'provisioning/**'
    jobs:
      lint-and-validate:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - **name**: Lint YAML
            run: yamllint provisioning/
          - **name**: Validate dashboards
            run: grafana-toolkit lint dashboards --config provisioning/
    

    Тестирование и верификация конфигураций

  • Включение тестов для dashboards: валидность JSON, корректность метаданных и переменных.

  • Использование grafanalint, grafana-toolkit и аналогичных инструментов для проверки соответствия схемам Grafana и лучшим практикам.

  • Непрерывная проверка совместимости с версиями Grafana: при обновлениях платформы необходимо повторно валидировать provisioning.

     

Kubernetes-интеграция и Grafana Operator

  • Развертывание Grafana в Kubernetes через официального оператора (Grafana Operator) или через кастомные ресурсы (CRD). Это обеспечивает declarative управление инстансом Grafana и его provisioning через CRD.

  • Provisioning можно автоматизировать черезConfigMaps или Secrets, монтируемые в поды Grafana. Оператор может синхронизировать конфигурацию provisioning из GitOps-хранилища и автоматически обновлять инстанс.

  • В крупных энтерпрайз-средах используются также интеграции через IAM и SSO: OIDC-провайдеры, LDAP/AD, SAML, чтобы пользователи аутентифицировались в Grafana единожды и получали нужные роли на основе групп.

    apiVersion: grafana.k8s.org/v1alpha1
    kind: Grafana
    metadata:
      name: grafana
    spec:
      config:
        log:
          mode: info
      deployment:
        replicas: 3
      provisioning:
        dashboards:
          secretName: grafana-dashboards
          configMaps:
            - **name**: grafana-dashboards
    

    Масштабирование и отказоустойчивость provisioning

  • idempotent-provisioning: повторное применение конфигураций должно доводить систему до устойчивого состояния без дублирования сущностей.

  • разделение состояния между provisioning и runtime: хранение state в Git-репозитории и детальное логирование изменений.

  • мониторинг provisioning: сбор статистик об обновлениях, ошибках импорта и задержках обновления. Включение alert-правил на сбои загрузки конфигураций.

     

Интеграция с enterprise-ландшафтами

  • обеспечение совместимости с политиками аудита, соответствия и защиты данных.
  • возможность централизованного управления доступами через корпоративные IAM и SSO.
  • резервное копирование конфигураций provisioning, а также миграционные стратегии при смене версий Grafana или моделей данных.

     

Key takeaways

  • Provisioning Grafana превращает конфигурации в повторяемый, проверяемый и безопасный процесс, поддерживаемый GitOps и Kubernetes.
  • Структура provisioning должна быть организована по объектам (datasources, dashboards, teams, users) и окружения, с учетом секретности и разделения ответственности.
  • Dashboards и data sources должны храниться как код: YAML/JSON, тестирование и верификация обязательны для предотвращения регрессий.
  • Управление командами и доступами требует интеграции с корпоративной Identity и использования RBAC и ролей в Grafana, с учетом Enterprise-опций.
  • Автоматизация и CI/CD, включая Kubernetes-операторы и GitOps-подходы, повышают устойчивость развёртываний и скорость изменений.
  • Мониторинг provisioning, аудит изменений и детальная документация жизненного цикла конфигураций являются частью эксплуатационной дисциплины.

     

FAQ

  1. Что такое provisioning в Grafana и зачем он нужен в production?

Provisioning переводит конфигурации Grafana в кодовую форму, которая хранится в системе контроля версий. Это обеспечивает повторяемость развёртываний, аудит изменений, возможность откатиться к предыдущим версиям и согласование между командами в условиях большой инфраструктуры. Без provisioning трудно поддерживать единообразие между десятками инстансов Grafana, особенно при разделении по средам и tenant-ордеров.

 

  1. Как правильно структурировать репозиторий provisioning для нескольких окружений?

Рекомендуется разделить конфигурации по объектам (datasources, dashboards, teams, users) и по окружениям (dev, staging, prod). Ветки или отдельные каталоги окружений должны поддерживать процесс промоции изменений через ревью и тестирование. Используйте GitOps и CI/CD для автоматизации синхронизации между репозиторием и реальными инстансами Grafana.

 

  1. Какие меры безопасности применяются к credentials в provisioning?

credentials должны храниться вне открытого текста. Используйте secureJsonData или эквивалентные поля для безопасных значений, а сами секреты храните в Vault, AWS Secrets Manager или другом секретном хранилище. При деплойменте подменяйте секреты безопасно, не записывая их в файлы provisioning.

 

  1. Как обеспечить тестирование Provisioning и dashboards?

Постройте пайплайны CI/CD, которые выполняют YAML/JSON валидацию, lintинг и структурное тестирование dashboards через grafana-toolkit или grafanalint. Дополнительно тестируйте миграции: что произойдет при обновлении Grafana и изменении схем provisioning.

 

  1. Как организовать управление командами и доступами в Grafana?

В корпоративной среде применяйте RBAC и роли (Admin, Editor, Viewer) в рамках организации Grafana, дополнительно используя SSO и групповые политики в IAM. Provisioning can create users и teams, и затем присваивать им роли и доступ к конкретным источникам данных и папкам дашбордов.

 

  1. Какие подходы подходят для Kubernetes-интеграции provisioning?

Используйте Grafana Operator или CRD-подход для декларативного управления инстансами Grafana и их provisioning. mounting provision files через ConfigMaps/Secrets и синхронизацию через GitOps-подходы обеспечивает устойчивость и консистентность. Поддерживайте совместимость с корпоративными IAM и SSO.

 

  1. Какие риски связаны с Provisioning и как их минимизировать?

Риски: просмотр секретов, несоответствие версий, конфликты изменений, утечки. Меры: строгий контроль доступа к репозиторию provisioning, секреты в защищенных хранилищах, автоматические тесты и аудиты, версии для каждого объекта, автоматическое откатывание в случае ошибок.

 

  1. Как осуществлять миграцию provisioning между версиями Grafana?

Планируйте миграцию как перплексированный процесс: версионируйте конфигурации, проводите совместимость- и регрессионные тесты на dev/staging, и последовательно промоционируйте в prod. В случае изменения форматов конфигураций - обновляйте пайплайны тестирования.

 

  1. Какие инструменты полезны для разработки provisioning?

Grafana Tooling (grafana-toolkit, grafanalint), yamllint, линтеры JSON, CI-инструменты (GitHub Actions, GitLab CI), инструменты для GitOps (Argo CD, Flux), а также Kubernetes Operator для Grafana. Используйте их в связке для автоматизации и контроля качества.

 

  1. Как обеспечить аудит и соответствие политиками при provisioning?

Ведите не только версию конфигураций, но и журналы изменений, доступ и ревью. Привяжите provisioning к событиям аудита в корпоративной системе IAM и ведите централизованный журнальный путь изменений. Это упрощает демонстрацию соответствия требованиям регуляторов и внутренним политикам.

 

← Предыдущая статья
Защита данных и секретов: шифрование, менеджмент секретов, политики
Следующая статья →
Инфраструктура как код для Grafana: Helm, оператор, CRD, параметры и версионирование

 

Узнать стоимость решенияЗапросить видео презентацию

Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • «ПрофХолод» — крупнейший в России производитель сэндвич-панелей с пенополиуретаном. 

  • Ручная обработка заявок на займы в МФО ДоброЗайм была малоэффективной и приводила к высоким затратам по ФОТ отдела верификации и андеррайтинга. При этом время обработки заявок было высоким, как и количество ошибок под влиянием человеческого фактора. Дополнительные сложности создавал сложный документооборот, обусловленный неконсолидированной кредитной историей и скоринговой оценкой. Все это суммарно мешало масштабированию бизнеса МФО.

  • НПФ «Будущее» — один из крупнейших негосударственных пенсионных фондов России, предоставляющий услуги по пенсионному обеспечению и накоплениям. Фонд активно внедряет цифровые технологии для повышения качества обслуживания клиентов.

  • ГК «Акрон Холдинг», одно из крупнейших в России промышленно-металлургических предприятий, запустил проект по модернизации управления данными. В качестве целевого решения для анализа ключевых данных компания выбрала систему PIX BI. В компании уже более 100 пользователей PIX BI, и в этом году в планах увеличить их число в два раза.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.