Вы можете перенести из DCImanager 5 историю поставок и перемещений оборудования на складе. История будет доступна для просмотра в системе мониторинга Grafana.

Этапы переноса:

  1. Подготовка данных.
  2. Импорт таблиц из БД DCImanager 5 в БД DCImanager 6.
  3. Создание дашборда в Grafana с источником в виде БД DCImanager 6.

Подготовка данных


  1. Подключитесь к серверу с DCImanager 5 по SSH.
  2. Откройте консоль MySQL: 

    mysql dcimgr
    BASH
  3. Скопируйте содержимое таблицы history_ispare в новую таблицу history_ispare_imported

    CREATE TABLE history_ispare_imported LIKE history_ispare;
    SQL
    INSERT INTO history_ispare_imported SELECT * FROM history_ispare;
    SQL
  4. Добавьте в таблицу history_ispare_imported столбцы barcode, name, idelivery_name, placement_new_s, placement_s

    ALTER TABLE history_ispare_imported ADD COLUMN barcode VARCHAR(255), ADD COLUMN name VARCHAR(255), ADD COLUMN idelivery_name VARCHAR(255), ADD COLUMN placement_new_s VARCHAR(16), ADD COLUMN placement_s VARCHAR(16);
    SQL
  5. Заполните столбцы barcode, name, idelivery_name значениями из других таблиц: 

    UPDATE history_ispare_imported as h LEFT JOIN ispare AS s ON s.id = h.reference LEFT JOIN idelivery AS d ON d.id = s.idelivery SET h.barcode = s.barcode, h.name = s.name, h.idelivery_name = d.name;
    SQL
  6. Заполните новые столбцы placement_new_s и placement_s расшифровками значений из столбцов placement_new и placement

    UPDATE history_ispare_imported SET
      placement_new_s = CASE
      WHEN placement_new = 0 THEN 'in_warehouse'
      WHEN placement_new = 1 THEN 'in_server'
      WHEN placement_new = 2 THEN 'in_equipment'
      WHEN placement_new = 3 THEN 'written_off'
      WHEN placement_new = 4 THEN 'broken'
      WHEN placement_new = 5 THEN 'under_repair'
      WHEN placement_new = 6 THEN 'bad_input'
      WHEN placement_new = 7 THEN 'reserved'
      WHEN placement_new = 8 THEN 'in_delivery'
      WHEN placement_new = 9 THEN 'in_rack'
      ELSE ''
      END,
      placement_s = CASE
      WHEN placement = 0 THEN 'in_warehouse'
      WHEN placement = 1 THEN 'in_server'
      WHEN placement = 2 THEN 'in_equipment'
      WHEN placement = 3 THEN 'written_off'
      WHEN placement = 4 THEN 'broken'
      WHEN placement = 5 THEN 'under_repair'
      WHEN placement = 6 THEN 'bad_input'
      WHEN placement = 7 THEN 'reserved'
      WHEN placement = 8 THEN 'in_delivery'
      WHEN placement = 9 THEN 'in_rack'
      ELSE ''
      END;
    SQL
  7. Добавьте в таблицу history_ispare_imported столбцы servers_name, servers_new_name, rack_name, rack_new_name и заполните их:

    ALTER TABLE history_ispare_imported ADD COLUMN servers_name VARCHAR(64);
    ALTER TABLE history_ispare_imported ADD COLUMN servers_new_name VARCHAR(64);
    ALTER TABLE history_ispare_imported ADD COLUMN rack_name VARCHAR(64); 
    ALTER TABLE history_ispare_imported ADD COLUMN rack_new_name VARCHAR(64);
    UPDATE history_ispare_imported as h LEFT JOIN servers AS s ON h.servers = s.id SET h.servers_name = s.name;
    UPDATE history_ispare_imported as h LEFT JOIN servers AS s ON h.servers_new = s.id SET h.servers_new_name = s.name;
    UPDATE history_ispare_imported as h LEFT JOIN racks AS r ON h.rack = r.id SET h.rack_name = r.name;
    UPDATE history_ispare_imported as h LEFT JOIN racks AS r ON h.rack_new = r.id SET h.rack_new_name = r.name;
    SQL

     

  8. Скопируйте содержимое таблицы history_server в новую таблицу history_servers_imported

    CREATE TABLE history_servers_imported LIKE history_servers;
    SQL
    INSERT INTO history_servers_imported SELECT * FROM history_servers;
    SQL
  9. Добавьте столбец server_name в таблицу history_servers_imported:

    ALTER TABLE history_servers_imported ADD COLUMN server_name VARCHAR(64); 
    SQL
  10. Заполните столбец server_name в таблице history_servers_imported значениями из других таблиц: 

    UPDATE history_servers_imported as h LEFT JOIN servers AS s ON h.reference = s.id SET h.server_name = s.name;
    SQL
  11. Выйдите из консоли MySQL: 

    exit
    SQL
  12. Сохраните дамп новых таблиц: 

    mysqldump dcimgr history_ispare_imported history_servers_imported > imported_history.txt
    BASH
  13. Заархивируйте файл дампа: 

    tar cfz imported_history.txt.tgz imported_history.txt
    BASH
  14. Скопируйте архив на сервер с DCImanager 6: 

    scp imported_history.txt.tgz root@<domain>:
    BASH

    <domain> — доменное имя или IP-адрес сервера с DCImanager 6

Импорт данных


  1. Подключитесь к серверу с DCImanager 6 по SSH.
  2. Разархивируйте файл дампа: 

    tar xfz imported_history.txt.tgz
    BASH
  3. Создайте БД dci5_imported

    docker exec mysql mysql -u root -p`docker exec mysql printenv MYSQL_ROOT_PASSWORD` -e'CREATE DATABASE dci5_imported'
    BASH
  4. Импортируйте таблицы из дампа в БД dci5_imported

    docker exec -i mysql mysql -u root -p`docker exec mysql printenv MYSQL_ROOT_PASSWORD` dci5_imported < imported_history.txt
    BASH
  5. Отройте БД dci5_imported в консоли MySQL: 

    docker exec -it mysql mysql -u root -p`docker exec mysql printenv MYSQL_ROOT_PASSWORD` dci5_imported
    BASH
  6. Создайте пользователя dci5_hist_viewer с правами на просмотр импортируемых данных: 

    CREATE USER 'dci5_hist_viewer'@'%' IDENTIFIED BY '<some_pass>';
    SQL

    <some_pass> — пароль пользователя

    GRANT SELECT on dci5_imported.* TO 'dci5_hist_viewer'@'%';
    SQL
  7. Выйдите из консоли MySQL: 

    exit
    SQL
  8. Проверьте импорт данных и права пользователя: 

    docker exec -it mysql mysql -u dci5_hist_viewer -p<some_pass> dci5_imported
    BASH

    <some_pass> — пароль пользователя

    SELECT * FROM history_ispare_imported LIMIT 10 \G; 
    SQL
    exit
    SQL

Настройка Grafana


  1. Подключитесь к серверу с DCImanager 6 по SSH.
  2. Перейдите в докер-контейнер с Grafana: 

    docker exec -it dci_grafana_1 bash
    BASH
  3. Перейдите в директорию /grafana_extra_files/

    cd /grafana_extra_files
    BASH
  4. В файле dci5_history_datasource.yml укажите настройки пользователя для подключения к БД:
    1. user — dci5_hist_viewer.
    2. password — пароль пользователя dci5_hist_viewer

      Пример файла

      apiVersion: 1
      
      datasources:
        - name: dci5_hist
          type: mysql
          url: mysql:3306
          user: dci5_hist_viewer
          jsonData:
            database: dci5_imported
            maxOpenConns: 100 # Grafana v5.4+
            maxIdleConns: 100 # Grafana v5.4+
            maxIdleConnsAuto: true # Grafana v9.5.1+
            connMaxLifetime: 14400 # Grafana v5.4+
          secureJsonData:
            password: secret
      CODE
  5. Скопируйте файлы дашбордов и источников данных в рабочую директорию Grafana: 

    cp dci5_history_datasource.yml /etc/grafana/provisioning/datasources/
    BASH
    cp dci5_servers_dashboard.json /etc/grafana/dashboards_files/
    BASH
    cp dci5_spares_dashboard.json /etc/grafana/dashboards_files/
    BASH
  6. Перезапустите Grafana:

    supervisorctl restart grafana_server
    BASH
  7. Проверьте добавление источника данных dci5_hist:

    1. Откройте интерфейс Grafana: в интерфейсе платформы в правом меню нажмите значок Grafana.
    2. В левом меню Grafana нажмите значок .
    3. Убедитесь, что в списке источников на вкладке Data sources есть dci5_hist.

    4. Чтобы проверить подключение к источнику:
      1. Нажмите на его название.
      2. В открывшейся форме нажмите кнопку Test. При успешном подключении появится сообщение Database Connection OK.

Работа с данными


Импортированные данные доступны в дашбордах:

  • dci5_ispares — история комплектующих;
  • dci5_servers — история серверов.

Чтобы открыть дашборд:

  1. Откройте интерфейс Grafana: в интерфейсе платформы в правом меню нажмите значок Grafana.
  2. Перейдите в нужный дашборд: в левом меню Grafana нажмите значок BrowseGeneral → выберите дашборд dci5_ispares или dci5_servers.

Интерфейс дашборда

Вы можете отфильтровать данные по заданному фильтру:

  • barcode — штрих-код устройства;
  • reference — id записи;
  • name — название устройства;
  • from — начальная дата временного интервала;
  • till — конечная дата временного интервала.

В полях barcode, reference и name вы можете ввести:

  • ALL — для отображения всех устройств;
  • % — для отображения непустых значений.

Чтобы изменить SQL-запрос, по которому данные были добавлены в Grafana, нажмите на заголовок дашборда dci5 servers (dci5 spares) → Edit → введите новый запрос → в верхнем правом углу нажмите кнопку Apply.