Сценарии администрирования EDMN#

Предусловия#

Предусловия для выполнения сценария представлены индивидуально для каждого сценария администрирования при необходимости.

Правила эксплуатации#

Не применимо.

Описание механизмов безопасности#

Не применимо.

Последовательность выполнения#

Сценарий 1. Создание архивных копий компонентов EDMN#

Предусловия: Необходимо заполнить параметры в конфигурационном файле vars.yml. Пример заполненного файла приведен в документе «Руководство по установке» в разделе «Подготовка окружения EDMN» (подраздел Пример заполненного файла vars.yml).

Администратору должна быть назначена роль по принципу минимальных полномочий.

  • Раздел etcd:

    • backup_installdir_to: — директория создания архивных копий для директории установки etcd;

    • backup_datadir_to: — директория создания архивных копий для данных etcd.

  • Раздел db:

    • backup_installdir_to: — директория создания архивных копий для директории установки db;

    • backup_datadir_to: — директория создания архивных копий для данных db.

  • Раздел collector:

    • backup_installdir_to: — директория создания архивных копий для директории установки коллекторов.

  • Раздел InfluxDB:

    • backup_installdir_to: — директория создания архивных копий для директории установки InfluxDB;

    • backup_datadir_to: — директория создания архивных копий для данных InfluxDB.

  • Раздел monitoring:

    • backup_installdir_to: — директория создания архивных копий для директории установки monitoring;

    • backup_datadir_to: — директория создания архивных копий для данных monitoring.

  • Раздел Prometheus:

    • backup_installdir_to: — директория создания архивных копий для директории установки Prometheus;

    • backup_datadir_to: — директория создания архивных копий для данных Prometheus.

Архивная копия UI EDMN#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook monitoring.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является архив с названием monitoring_backup.tar.gz, расположенный в директории, указанной в параметрах конфигурационного файла vars.yml.

Архивная копия БД#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook db.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является создание архивов db_backup.tar.gz и db_data_backup.tar.gz, расположенных в директориях, указанных в параметрах конфигурационного файла vars.yml.

Архивная копия etcd#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook etcd.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является создание архивов etcd_backup.tar.gz и etcd_data_backup.tar.gz, расположенных в директориях, указанных в параметрах конфигурационного файла vars.yml.

Архивная копия коллекторов#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook collector.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является архив с названием collector_backup.tar.gz, расположенный в директории, указанной в параметрах конфигурационного файла vars.yml.

Архивная копия InfluxDB#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook influxdb.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является создание архивов influxdb_backup.tar.gz и influxdb_data_backup.tar.gz, расположенных в директориях, указанных в параметрах конфигурационного файла vars.yml.

Архивная копия Prometheus#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook prometheus.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является создание архивов prometheus_backup.tar.gz и prometheus_data_backup.tar.gz, расположенных в директориях, указанных в параметрах конфигурационного файла vars.yml.

Архивная копия всех компонентов EDMN#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook synapse_monitoring.yml c тегом backup_create.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом выполнения Jenkins Job является создание архивов:

    • monitoring_backup.tar.gz;

    • etcd_backup.tar.gz;

    • etcd_data_backup.tar.gz;

    • db_backup.tar.gz;

    • db_data_backup.tar.gz;

    • collector_backup.tar.gz;

    • influxdb_backup.tar.gz;

    • influxdb_data_backup.tar.gz;

    • prometheus_backup.tar.gz;

    • prometheus_data_backup.tar.gz.

Все архивы расположены в директориях, указанных в параметрах конфигурационного файла vars.yml. Созданные архивные копии хранятся в директориях в единичном экземпляре, чтобы предотвратить переполнение директории хранения архивов.

Если в указанной директории ранее уже был создан архив, то при попытке повторного создания архивных копий компонентов выполнение Jenkins Job будет прерываться. Поэтому перед созданием нового архива следует предварительно удалить существующие архивные копии из данных директорий. Для этого необходимо запустить Jenkins Job monitoring_custom с выбором соответствующего playbook с тегом backup_remove.

Сценарий 2. Восстановление из архивных копий компонентов EDMN#

Предусловия: Необходимо заполнить параметры в конфигурационном файле vars.yml. Пример заполненного файла приведен в документе «Руководство по установке» в разделе «Подготовка окружения EDMN» (подраздел Пример заполненного файла vars.yml).

Администратору должна быть назначена роль по принципу минимальных полномочий.

  • Раздел etcd:

    • backup_installdir_to: — директория хранения архивных копий для директории установки etcd;

    • backup_datadir_to: — директория хранения архивных копий для данных etcd.

  • Раздел db:

    • backup_installdir_to: — директория хранения архивных копий для директории установки db;

    • backup_datadir_to: — директория хранения архивных копий для данных db.

  • Разделе collector:

    • backup_installdir_to: — директория хранения архивных копий для директории установки коллекторов.

  • Раздел InfluxDB:

    • backup_installdir_to: — директория хранения архивных копий для директории установки InfluxDB;

    • backup_datadir_to: — директория хранения архивных копий для данных InfluxDB.

  • Раздел monitoring:

    • backup_installdir_to: — директория хранения архивных копий для директории установки monitoring.

  • Раздел Prometheus:

    • backup_installdir_to: — директория хранения архивных копий для директории установки Prometheus;

    • backup_datadir_to: — директория хранения архивных копий для данных Prometheus.

Восстановление UI EDMN из архивной копии#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook monitoring.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директории установки EDMN из архива, помещенного в указанную в файле vars.yml директорию.

Восстановление БД из архивной копии#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook db.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директории установки db из архива, помещенного в указанную в файле vars.yml директорию.

Восстановление etcd из архивной копии#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook etcd.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директории установки etcd из архива, помещенного в указанную в файле vars.yml директорию.

Восстановление collector из архивной копии#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook collector.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директории установки collector из архива, помещенного в указанную в файле vars.yml директорию.

Восстановление InfluxDB из архивной копии#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook influxdb.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директории установки InfluxDB из архива, помещенного в указанную в файле vars.yml директорию.

Восстановление Prometheus из архивной копии#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook prometheus.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директории установки Prometheus из архива, помещенного в указанную в файле vars.yml директорию.

Восстановление из архивной копии всех компонентов EDMN#

  1. Необходимо запустить Jenkins Job monitoring_custom (поставляется в дистрибутиве).

  2. Выбрать playbook synapse_monitoring.yml c тегом backup_restore.

  3. Запустить Jenkins Job и дождаться окончания выполнения работы. Результатом будет являться восстановление директорий установки EDMN, db, etcd, InfluxDB, collector, Prometheus из архивов, помещенных в указанную в файле vars.yml директорию.

Сценарий 3. Запуск компонентов EDMN#

Администратору должна быть назначена роль по принципу минимальных полномочий.

С помощью системного сервиса#

Запуск UI EDMN

В командной строке перейти в директорию установки EDMN (параметр ansible monitoring.installdir, настраиваемый в файле vars.yml, например, */opt/monitoring*) и выполнить команду перезапуска:

  • для запуска сервиса:

sudo systemctl start monitoring.service
  • для запуска процесса из директории установки:

./bin/edmn restart

Запуск etcd

В командной строке перейти в директорию установки etcd и выполнить команду перезапуска:

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

sudo systemctl start etcd.service
  • для запуска процесса выполнить команду из директории установки:

./etcd-run-nohup.sh

Запуск InfluxDB

В командной строке перейти в директорию установки InfluxDB и выполнить команду перезапуска:

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

sudo systemctl start influxdb.service
  • для запуска процесса выполнить команду из директории установки:

./usr/bin/influxd -config etc/influxdb/influxdb.conf

Запуск коллекторов

В командной строке перейти в директорию установки коллекторов и выполнить команду перезапуска:

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

sudo systemctl start <Название коллектора>.service
  • для запуска процесса выполнить команду из директории установки:

nohup ./bin/collector run -c ./config/<Название коллектора>.application }} -m ./config/<Название коллектора>.config }} -d config/<Название коллектора>.properties -l config/logback-<Название коллектора>.xml &>/dev/null &

Запуск Prometheus

В командной строке перейти в директорию установки Prometheus и выполнить команду перезапуска:

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

sudo systemctl start prometheus.service
  • для запуска процесса выполнить команду из директории установки:

./prometheus-run.sh

С помощью Jenkins#

Запуск etcd

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook etcd.yml с тегом start.

Запуск UI EDMN

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook monitoring.yml с тегом start.

Запуск InfluxDB

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook influxdb.yml с тегом start.

Запуск коллекторов

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook collector.yml с тегом start.

Запуск Prometheus

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook prometheus.yml с тегом start.

Запуск всех компонентов EDMN

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook synapse_monitoring.yml с тегом start.

С помощью Ansible#

Предварительно необходимо скачать дистрибутив EDMN-scripts-{version}-distrib.zip

Запуск etcd

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> etcd.yml -t start

Запуск UI EDMN

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> monitoring.yml -t start

Запуск InfluxDB

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> influxdb.yml -t start

Запуск коллекторов

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> collector.yml -t start

Запуск Prometheus

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> prometheus.yml -t start

Запуск всех компонентов EDMN

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> synapse_monitoring.yml -t start

Предварительно необходимо скачать дистрибутив EDMN-scripts-{version}-distrib.zip

Сценарий 4. Остановка компонентов EDMN#

Администратору должна быть назначена роль по принципу минимальных полномочий.

С помощью системного сервиса#

Остановка UI EDMN

Необходимо зайти на узел, на котором будет производиться остановка, под пользователем monitoring:

  • Определить, запущен сервис или процесс, командой:

systemctl list-units --state=active,activating | grep "^[ ]*monitoring.service"

Если данная команда не вывела результата, то запущен процесс, иначе — сервис.

  • При запущенном сервисе — остановить сервис командой:

sudo systemctl stop monitoring.service
  • При запущенном процессе — остановить процесс из директории установки командой:

./bin/edmn stop

Остановка etcd

Необходимо зайти на узел, на котором будет производиться остановка, под пользователем etcd.

  • Определить, запущен сервис или процесс, командой:

    systemctl list-units --state=active,activating | grep "^[ ]*etcd.service"
    

    Если данная команда не вывела результата, то запущен процесс, иначе — сервис.

    • При запущенном сервисе — остановить сервис командой:

    sudo systemctl stop etcd.service
    
    • При запущенном процессе — остановить процесс командой:

    pkill etcd
    

Остановка InfluxDB

Необходимо зайти на узел, на котором будет производиться остановка, под пользователем influxdb.

  • Определить, запущен сервис или процесс, командой:

    systemctl list-units --state=active,activating | grep "^[ ]*influxdb.service"
    

    Если данная команда не вывела результата, то запущен процесс, иначе — сервис.

    • При запущенном сервисе — остановить сервис командой:

    sudo systemctl stop influxdb.service
    
    • При запущенном процессе — остановить процесс командой:

    pkill influxd
    

Остановка коллекторов

Необходимо зайти на узел, на котором будет производиться остановка, под пользователем collectors.

  • Определить, запущен сервис или процесс, командой:

    systemctl list-units --state=active,activating | grep "^[ ]*collectors.service"
    

    Если данная команда не вывела результата, то запущен процесс, иначе — сервис.

    • При запущенном сервисе — остановить сервис командой:

    sudo systemctl stop collectors.service
    
    • При запущенном процессе — остановить процесс командой:

    pkill -f <название коллектора>
    

Остановка Prometheus

Необходимо зайти на узел, на котором будет производиться остановка, под пользователем prometheus.

  • Определить, запущен сервис или процесс, командой:

    systemctl list-units --state=active,activating | grep "^[ ]*prometheus.service"
    

    Если данная команда не вывела результата, то запущен процесс, иначе — сервис.

    • При запущенном сервисе — остановить сервис командой:

    sudo systemctl stop prometheus.service
    
    • При запущенном процессе — остановить процесс командой:

    pkill prometheus
    

С помощью Jenkins#

Остановка etcd

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook etcd.yml с тегом stop.

Остановка UI EDMN

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook monitoring.yml с тегом stop.

Остановка InfluxDB

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook influxdb.yml с тегом stop.

Остановка коллекторов

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook collector.yml с тегом stop.

Остановка Prometheus

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook prometheus.yml с тегом stop.

Остановка всех компонентов EDMN

  1. Запустить Jenkins Job monitoring_custom.

  2. Выбрать playbook synapse_monitoring.yml с тегом stop.

С помощью Ansible#

Предварительно необходимо скачать дистрибутив EDMN-scripts-{version}-distrib.zip

Запуск etcd

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> etcd.yml -t stop

Запуск UI EDMN

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> monitoring.yml -t stop

Запуск InfluxDB

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> influxdb.yml -t stop

Запуск коллекторов

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> collector.yml -t stop

Запуск Prometheus

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> prometheus.yml -t stop

Запуск всех компонентов EDMN

  1. Перейти в директорию ansible

  2. Выполнить команду ansible-playbook -i <Путь до вашего инвентори> synapse_monitoring.yml -t stop

Предварительно необходимо скачать дистрибутив EDMN-scripts-{version}-distrib.zip.

Сценарий 5. Загрузка конфигурационного файла коллектора на сервер#

Для загрузки конфигурационного файла коллектора на сервер необходимо:

  1. Указать в vars в блоке collector следующие параметры(custom_config, config), согласно примеру:

Пример:

   artemis-metrics:
      type: artemis
      custom_config: true # Включение/выключение добавления конфигурационного файла коллектора на сервер
      config: artemis-metrics.conf # имя конфигурационного файла коллектора который будет загружен на сервер
      application: artemis-application.conf
      serverSslPort:
      serverPort:
      jmxUser:
      jmxPassword:
  1. В вашей директории inventory создать директорию config (если она не была создана), пример расположения папки ниже:

├── ...
├── files
├── inventories
│   ├── EXAMPLE
|   |   ├── config
│   │   │   └── artemis-metrics.conf (Название конфигурационного файла, указанное в параметре config)
│   │   ├── group_vars
│   │   │   └── all
│   │   │       ├── vars.yml
│   │   │       └── vault.yml
│   │   ├──ssl
│   │   │   ├── influx.jks
│   │   │   ├── kafka-dev-cluster-1.jks
│   │   │   ├── mon.jks
│   │   │   ├── prometheus.jks
│   │   │   ├── prometheus.keystore.jks
│   │   │   ├── prometheus.truststore.jks
│   │   │   ├── server.keystore.jks
│   │   │   ├── server.truststore.jks
│   │   │   ├── vault.jks
│   │   │   └── vault.truststore.pem
│   │   │
│   │   └── inventory
│   │
│   ├── [новая директория]
│   │   ├── group_vars
│   │   │   └── all
│   │   │       ├── vars.yml
│   │   │       └── vault.yml
│   │   ├──ssl
│   │   │   ├── influx.jks
│   │   │   ├── kafka-dev-cluster-1.jks
│   │   │   ├── mon.jks
│   │   │   ├── prometheus.jks
│   │   │   ├── prometheus.keystore.jks
│   │   │   ├── prometheus.truststore.jks
│   │   │   ├── server.keystore.jks
│   │   │   ├── server.truststore.jks
│   │   │   ├── vault.jks
│   │   │   └── vault.truststore.pem
│   │   │
│   │   └── inventory
│   │
├── roles
│   │   ...
├── ansible.cfg
├── collector.yml
├── ***.yml
├──...
  1. Перейти в Jenkins Job, и запустить job со следующими тегами и playbook:

    playbook collector.yml/synapse_monitoring.yml

Примечание: В первом случае, мы сгенерим новый конфигурационный файл и перезапустим только коллекторы, во втором же случае мы также перезапустим мониторинг.

`tags: Custom_config, restart`

Примечание: Тег Custom_config перенесет на сервер в установочную директорию ваш конфигурационный файл, restart перезапустит коллектор/мониторинг.

  1. Проверить, что Jenkins Job завершилась со статусом SUCCESS, перейти в мониторинг и проверить, что появились новые метрики.

Сценарий 6. Добавление нового коллектора при наличии установленных через тег collector_already_installed#

Сценарий добавления нового коллектора, при уже установленных выполняется при использовании тега collector_already_installed, выполняется при уже выполненной первичной установки с дистрибутивом. Добавление с тегом collector_already_installed выполняется уже без дистрибутива.

С использованием Jenkins Job monitoring_custom#

  1. Убедиться, что был добавлен новый коллектор в vars.

  2. Убедиться, что была произведена первичная установка с дистрибутивом.

  3. В jenkins запустить job с параметрами:

    • job_config_renew: true (Выбрать чекбокс)

    • inventory: <Выбрать ваш инветори из списка>

  4. В jenkins запустить job с параметрами:

    • inventory: <Выбрать ваш инветори из списка>

    • playbook: collector.yml

    • tags: run_only, collector_already_installed, install, restart

    • usedCollectors: <Выбрать новый коллектор>

  5. Дождаться окончания работы jenkins job.

После выполнения jenkins job, на сервере появится новый коллектор.

Сценарий 7. Удаление system/user сервиса коллектора#

Сценарий удаления system/user сервиса коллектора, выполняется с использованием тега: run_only и использовании playbook:

  • collector_system_service_delete.yml - для удаления system сервиса;

  • collector_user_service_delete.yml - для удаления пользовательского сервиса.

С использованием Jenkins Job monitoring_custom#

  1. Убедиться, что systemd сервис коллектор установлен.

  2. Убедиться, что systemd сервис указан в vars.

  3. В jenkins запустить job с параметрами:

    • inventory: <Выбрать ваш инветори из списка>

    • playbook:

      • collector_system_service_delete.yml - для удаления system сервиса

      • collector_user_service_delete.yml - для удаления пользовательского сервиса

    • tags: run_only

    • usedCollectors: <Выбрать коллектор для которого надо произвести удаления>

  4. Подтвердить удаление сервиса коллектора.

  5. Дождаться окончания работы jenkins job.

После выполнения jenkins job, выбранный коллектор будет удален.

Сценарий 8. Удаление конкретного коллектора#

Сценарий удаления коллектора, выполняется при использовании тегов: run_only, uninstall.

С использованием Jenkins Job monitoring_custom#

  1. Убедиться, что коллектор установлен.

  2. В jenkins запустить job с параметрами:

    • inventory: <Выбрать ваш инветори из списка>

    • playbook: collector.yml

    • tags: run_only, uninstall

    • usedCollectors: <Выбрать новый коллектор>

  3. Подтвердить удаление.

  4. Дождаться окончания работы jenkins job.

После выполнения jenkins job, выбранный коллектор будет удален.

Результат#

Сценарии администрирования выполнены.