Приветствую всех читателей блога и конкретно этой статьи. В продолжение предыдущего поста предлагаю материал на тему: «Анализ структуры хранилища QV» или Storage Report. Из статьи вы узнаете, как автоматизировать процесс управления хранилищем данных, как оперативно оценить его структуру, динамику изменений объема данных и другие интересные моменты.

Автоматизация управления ХД: Предпосылки

В нашей компании размер хранилища для данных QlikView составляет немногим более 3 ТБ, и два года назад проблемы с нехваткой памяти как таковой не было. Время идёт, бизнес растёт и вместе с бизнесом растёт количество данных в хранилище. И вот уже год назад периодически стал обращать внимание на то, что свободного места не так уж и много.

Когда свободного места становилось меньше, чем 700-800 Гб, начиналась процедура «увеличения свободного места». Алгоритм был простой – с помощью проводника или total commander находилось, какие папки сколько места занимают, искались ненужные архивы, неиспользуемые данные или агрегаты, проверялись папки разработчиков и чистилось, таким образом, порядка 200 Гб. Примерно раз в квартал процедура повторялась.

И, в общем-то, всех всё устраивало, пока не наступило 5 февраля 2016 г. В этот немного снежный зимний день я случайно обратил внимание на то, что свободного места осталось порядка 500 Гб, хотя я точно помнил, что ещё вчера было где-то на 100 Гб больше. И тут я задался вопросом, куда же делись эти заветные 100 Гб, понятно, что никто мне на этот вопрос не смог ответить. Находясь в процессе «увеличения свободного места», я понял, что нужна автоматизация в этом направлении и в качестве инструмента было решено использовать, конечно же, QlikView 🙂 . Да и когда ещё побудешь и заказчиком, и исполнителем одновременно.

Перед реализацией приложения у меня уже были вопросы, ответы на которые я хотел получать с помощью приложения:

  • Прежде всего, какова структура самого хранилища?
  • Какая динамика изменения занятого места?
  • За счет, каких папок увеличилось или уменьшилось хранилище?
  • Ну и очень интересно было узнать, сколько же данных анализируется компанией всего?

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

Экстрактор

Чтобы ответить на вопросы выше, нужен был источник как минимум следующей структуры:

управление хранилищем данных QlikView

В этот же день был сделан экстрактор (Extractor FileTree), вдохновением для которого послужила прошлогодняя подготовка к сертификации, в рамках которой было от корки до корки изучено справочное руководство, где и был написан пример для оператора управления for each..next. На момент прочтения я ещё не понимал для чего это может пригодиться:

 управление хранилищем данных QlikView

Но в феврале время для понимания пришло. Пример выше я и взял за основу будущего экстрактора.

Функция, которая получилась у меня:

управление хранилищем данных QlikView

Саму функцию вызываем только для диска Е:, диск С: не анализируем, так как там удаляются только логи, да и то не часто. Мы чистим следующие логи C:\Users\All Users\QlikTech\WebServer\Log\*.*, так как они занимают больше всего места и не используются нами, остальные логи мы не трогаем, одни нужны для Governance Dashboard, другие для Management Console.

Как выяснилось позже, в итоговый источник попадают абсолютно все файлы и папки на диске, в том числе и скрытые, и системные.

Приложение

Следующим этапом стало создание приложения (Storage Report во вложении).

В отличие от экстрактора, правки в приложение я вношу довольно часто, довожу до ума в свободное от основных задач время. Приятным бонусом стало то, что за время работы с приложением узнал несколько нюансов в работе с QlikView.

Построение аналитической модели

Для построения аналитической модели мне потребовались:

  • файлы, созданные ранее экстрактором,
  • иерархия папок.

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

В итоге получилась следующая структура данных:

управление хранилищем данных QlikView

Количество полей FileDirзависит от максимальной вложенности файлов.

Дизайн

Основные отчёты я построил в первые дни работы с приложением, а вот устранение различных неточностей, учёт многих мелочей, обработка новых идей, а также подготовка к написанию самой статьи заняли большую часть времени работы с дашбордом.

В итоге получилось вот такое приложение:

управление хранилищем данных QlikView

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

Давайте разберём элементы получившегося дашборда.

Заголовок:

управление хранилищем данных QlikView

Отображается выбранная дата отчёта, а также анализируемая в данный момент папка, по умолчанию устанавливается E:\

Выбор даты отчёта:

управление хранилищем данных QlikView

Возможность выбирать основную дату отчёта позволяет посмотреть состояние хранилища на определённую дату. Это важно особенно, если в этот день были подозрительные показатели прироста занимаемой памяти.

Все отчёты в приложении завязаны на эту дату, она изменяет переменную vTodayDate

Кнопки «влево, вправо» позволяют переключаться между датами плюс минус один день, кнопка «воскл. знак»  переключает отчёт на сегодняшний день.

Кнопки управления:

управление хранилищем данных QlikView

Знак процента – включает показ некоторых показателей в процентах.

Ластик – очищает выборки.

Знак вопроса – переводит на пока пустую страницу справки.

Спидометр:

управление хранилищем данных QlikView

Gaude Chart показался наиболее подходящим для показа критичности ситуации с жестким диском. Показывается как в гигабайтах, так и в процентах.

НА ЗАМЕТКУ! Уровни настраивал самостоятельно, для меня более 70% занятого пространства – уже надо быть настороже, а более 90% — надо срочно принимать меры. Не зависит от выборок в приложении.

Для получения такого внешнего вида немного настроил чарт. В том числе, открыл для себя настройки Circular Gauge Setting на вкладке Presentation, где я указал сектор спидометр = 90 градусов и угол поворота относительно центра = 45 градусов:

управление хранилищем данных QlikView

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

Показатели заполнения хранилища:

управление хранилищем данных QlikView

Чтобы отобразить все эти показатели,  нужно знать объём хранилища. В этом мне помогло меню  «Мой компьютер» — «Свойства диска»

управление хранилищем данных QlikView

Показатели также считаются независимо от выборок в приложении.

Значение «Емкости» я добавил в переменную vStorageSpace (это можно сделать как в приложении, через диспетчер переменных, так и в скрипте).

управление хранилищем данных QlikView

Ниже пример формулы «Свободно», которая является разностью «Всего» и «Занято».

управление хранилищем данных QlikView

Set Analysis получилось использовать именно так, в диапазоне, хоть мне и нужен один день, по другому значение переменной qlik не принял.

Block Chart «Структура хранилища»

Первое с чего я начал реализацию приложения был Block Chart, до этого не применяемый мною для чего-либо полезного. Именно такой отчёт я и представлял с самого начала.

управление хранилищем данных QlikView

Для возможности проваливания необходимо создать группу Drilldown и поместить структуру папок начиная с уровня FileDir2, уровень FileDir не имеет смысла, он включает только E:\

управление хранилищем данных QlikView

Получилось очень удобно.

Также мне очень хотелось увидеть и размер свободного места на этом чарте, это можно сделать, когда мы находимся в самом верху группы Drill-down.

управление хранилищем данных QlikView

При нажатии на кнопку в структуре появляется новая папка E:\Free space\ на которую и отводится всё свободное пространство.

управление хранилищем данных QlikView

Для этого я добавил в структуру папок несуществующую папку E:\Free space\ в скрипте.

Чарт «Занято ГБ/Свободное место», показатели по изменению размера хранилища.

управление хранилищем данных QlikView

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

Для меня информативными являются показатели, показывающие разницу между объемом хранилища на дату отчёта за определенные периоды.

Для месяца – 30 дней назад, для недели 7 дней назад, для дня – за вчерашний день.

Рассмотрим на примере формулы «День»:

управление хранилищем данных QlikView

По сути, из объема хранилища на день отчёта вычитаем такое же значение днём ранее, проверив предварительно, что этот день ранее в отчёте присутствует.

Из интересного можно обратить внимание на формат числа, там стоит символ «+», который позволяет отображать знак не только у отрицательных значений, но и у положительных.

Чарт «Прирост в день».

управление хранилищем данных QlikView

Слева можно выбрать даты, которые также влияют на рассмотренный ранее чарт «Занято ГБ/Свободное место».

Один из самых нужных мне чартов, очень нужно было как раз смотреть, как изменялось хранилище подневно, а если меня интересует конкретный день, то я переключаю на этот день дату отчёта и смотрю, весь отчёт за интересующий день.

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

Показатель можно смотреть нарастающим итогом, а также в процентах (от всего объема хранилища).

Дополнительные отчёты

управление хранилищем данных QlikView

Данная группа состоит из трех отчётов.

«Изменение размера папок», один из самых первых и полезных отчётов.

Благодаря ему можно посмотреть какие именно папки изменились за прошедший день, неделю или месяц. Где убыло, где прибыло. С помощью этого отчёта я нашёл некоторые ненужные процессы, которые генерили ненужные гигабайты.

«Кол-во записей» – этот показатель больше реализован для души, мне всегда было интересно не только, сколько гигабайт информации появляется, но также, сколько записей создаётся и сколько всего обрабатывается нашими приложениями.

управление хранилищем данных QlikView

Судя по примеру выше, на первом месте у нас идут не обработанные чеки, на втором товародвижение и т.д.

Показывается в соответствии с выбранной папкой и датой отчёта.

«Кол-во файлов»

управление хранилищем данных QlikView

Данный отчёт нужен был больше для ускорения работы экстрактора данного приложения. Так как чем больше файлов, тем дольше анализируется хранилище. В итоге уменьшил количество файлов на сервере примерно на 20%, удалив ненужные файлы, логи, переоформив некоторые источники  в месячные qvd.

Например: Выше видно, что папка с валютой занимает 2-е место, оказалось, что на каждый день свой qvd-файл с валютой, теперь в планах переделать экстрактор.

Прогноз:

управление хранилищем данных QlikView

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

Хотя, думаю, этот прогноз пригодится, когда будет планироваться покупка более вместительного диска для хранилища QlikView.

Формула простая – берутся две последние недели, разница между воскресеньем и субботой (в это время система только обновляется, разработчики практически не участвуют в жизни сервера). Получаем примерный средний прирост объёма хранилища. Делим имеющееся свободное место на средний прирост, получаем примерное число дней.

Результат

Теперь жить стало намного проще, есть полное понимание картины с жестким диском, а временные затраты на понимание этой картины практически отсутствуют. Несколько раз в неделю я заглядываю в приложение и смотрю на динамику или интересующие меня папки. Как заказчик я более чем доволен 🙂

СКАЧАТЬ

Report Storage

Экстрактор

Небольшая инструкция

Как установить себе?

Всем предлагаю установить данное приложение себе. Для корректной работы не потребуется долгих настроек.

  1. Для вас я публикую как приложение, так и экстрактор. Так что скачивайте.
  2. Для начала нужно, чтобы хотя бы раз отработал экстрактор и тогда уже часть отчётов в приложении будут полезными. У меня перезапускается от 30 мин до часа. На следующий день уже можно будет смотреть динамику изменений за один день, а через неделю будет больше интересных данных.
  3. В экстракторе нужно указать диск для анализа (или папку), а также путь сохранения данных.
  4. В приложении также нужно указать путь к файлам qvd и размер хранилища. Всё остальное должно работать так же, как и на моём сервере.

Благодарю за внимание и за то, что дочитали до конца!!!

По всем возникающим вопросам обращайтесь, проконсультирую (в комментариях). 😀