Приветствую всех читателей блога и конкретно этой статьи. В продолжение предыдущего поста предлагаю материал на тему: «Анализ структуры хранилища QV» или Storage Report. Из статьи вы узнаете, как автоматизировать процесс управления хранилищем данных, как оперативно оценить его структуру, динамику изменений объема данных и другие интересные моменты.
Автоматизация управления ХД: Предпосылки
В нашей компании размер хранилища для данных QlikView составляет немногим более 3 ТБ, и два года назад проблемы с нехваткой памяти как таковой не было. Время идёт, бизнес растёт и вместе с бизнесом растёт количество данных в хранилище. И вот уже год назад периодически стал обращать внимание на то, что свободного места не так уж и много.
Когда свободного места становилось меньше, чем 700-800 Гб, начиналась процедура «увеличения свободного места». Алгоритм был простой – с помощью проводника или total commander находилось, какие папки сколько места занимают, искались ненужные архивы, неиспользуемые данные или агрегаты, проверялись папки разработчиков и чистилось, таким образом, порядка 200 Гб. Примерно раз в квартал процедура повторялась.
И, в общем-то, всех всё устраивало, пока не наступило 5 февраля 2016 г. В этот немного снежный зимний день я случайно обратил внимание на то, что свободного места осталось порядка 500 Гб, хотя я точно помнил, что ещё вчера было где-то на 100 Гб больше. И тут я задался вопросом, куда же делись эти заветные 100 Гб, понятно, что никто мне на этот вопрос не смог ответить. Находясь в процессе «увеличения свободного места», я понял, что нужна автоматизация в этом направлении и в качестве инструмента было решено использовать, конечно же, QlikView 🙂 . Да и когда ещё побудешь и заказчиком, и исполнителем одновременно.
Перед реализацией приложения у меня уже были вопросы, ответы на которые я хотел получать с помощью приложения:
- Прежде всего, какова структура самого хранилища?
- Какая динамика изменения занятого места?
- За счет, каких папок увеличилось или уменьшилось хранилище?
- Ну и очень интересно было узнать, сколько же данных анализируется компанией всего?
По ходу реализации также возникали и другие вопросы, об этом ниже.
Экстрактор
Чтобы ответить на вопросы выше, нужен был источник как минимум следующей структуры:
В этот же день был сделан экстрактор (Extractor FileTree), вдохновением для которого послужила прошлогодняя подготовка к сертификации, в рамках которой было от корки до корки изучено справочное руководство, где и был написан пример для оператора управления for each..next. На момент прочтения я ещё не понимал для чего это может пригодиться:
Но в феврале время для понимания пришло. Пример выше я и взял за основу будущего экстрактора.
Функция, которая получилась у меня:
Саму функцию вызываем только для диска Е:, диск С: не анализируем, так как там удаляются только логи, да и то не часто. Мы чистим следующие логи C:\Users\All Users\QlikTech\WebServer\Log\*.*, так как они занимают больше всего места и не используются нами, остальные логи мы не трогаем, одни нужны для Governance Dashboard, другие для Management Console.
Как выяснилось позже, в итоговый источник попадают абсолютно все файлы и папки на диске, в том числе и скрытые, и системные.
Приложение
Следующим этапом стало создание приложения (Storage Report во вложении).
В отличие от экстрактора, правки в приложение я вношу довольно часто, довожу до ума в свободное от основных задач время. Приятным бонусом стало то, что за время работы с приложением узнал несколько нюансов в работе с QlikView.
Построение аналитической модели
Для построения аналитической модели мне потребовались:
- файлы, созданные ранее экстрактором,
- иерархия папок.
Довольно долго я возился с иерархиями, сейчас я уже с трудом вспоминаю, что и как именно я делал. Главная проблема была в том, чтобы была возможность считать, как и размер файлов в папке без подпапок, так и размер всех файлов и содержимого подпапок.
В итоге получилась следующая структура данных:
Количество полей FileDir№ зависит от максимальной вложенности файлов.
Дизайн
Основные отчёты я построил в первые дни работы с приложением, а вот устранение различных неточностей, учёт многих мелочей, обработка новых идей, а также подготовка к написанию самой статьи заняли большую часть времени работы с дашбордом.
В итоге получилось вот такое приложение:
Изначально я думал разместить отчёты на нескольких вкладках, разделить показатели логически, и, всё же, в итоге я пришёл к одной главной странице со всеми показателями и чартами.
Давайте разберём элементы получившегося дашборда.
Заголовок:
Отображается выбранная дата отчёта, а также анализируемая в данный момент папка, по умолчанию устанавливается E:\
Выбор даты отчёта:
Возможность выбирать основную дату отчёта позволяет посмотреть состояние хранилища на определённую дату. Это важно особенно, если в этот день были подозрительные показатели прироста занимаемой памяти.
Все отчёты в приложении завязаны на эту дату, она изменяет переменную vTodayDate
Кнопки «влево, вправо» позволяют переключаться между датами плюс минус один день, кнопка «воскл. знак» переключает отчёт на сегодняшний день.
Кнопки управления:
Знак процента – включает показ некоторых показателей в процентах.
Ластик – очищает выборки.
Знак вопроса – переводит на пока пустую страницу справки.
Спидометр:
Gaude Chart показался наиболее подходящим для показа критичности ситуации с жестким диском. Показывается как в гигабайтах, так и в процентах.
НА ЗАМЕТКУ! Уровни настраивал самостоятельно, для меня более 70% занятого пространства – уже надо быть настороже, а более 90% — надо срочно принимать меры. Не зависит от выборок в приложении.
Для получения такого внешнего вида немного настроил чарт. В том числе, открыл для себя настройки Circular Gauge Setting на вкладке Presentation, где я указал сектор спидометр = 90 градусов и угол поворота относительно центра = 45 градусов:
Иконка в правом верхнем углу включает отображение чарта с анимацией (по дате), это я сделал исключительно для души, да и достойного чарта, чтобы применить анимацию до этого не было.
Показатели заполнения хранилища:
Чтобы отобразить все эти показатели, нужно знать объём хранилища. В этом мне помогло меню «Мой компьютер» — «Свойства диска»
Показатели также считаются независимо от выборок в приложении.
Значение «Емкости» я добавил в переменную vStorageSpace (это можно сделать как в приложении, через диспетчер переменных, так и в скрипте).
Ниже пример формулы «Свободно», которая является разностью «Всего» и «Занято».
Set Analysis получилось использовать именно так, в диапазоне, хоть мне и нужен один день, по другому значение переменной qlik не принял.
Block Chart «Структура хранилища»
Первое с чего я начал реализацию приложения был Block Chart, до этого не применяемый мною для чего-либо полезного. Именно такой отчёт я и представлял с самого начала.
Для возможности проваливания необходимо создать группу Drill—down и поместить структуру папок начиная с уровня FileDir2, уровень FileDir не имеет смысла, он включает только E:\
Получилось очень удобно.
Также мне очень хотелось увидеть и размер свободного места на этом чарте, это можно сделать, когда мы находимся в самом верху группы Drill-down.
При нажатии на кнопку в структуре появляется новая папка E:\Free space\ на которую и отводится всё свободное пространство.
Для этого я добавил в структуру папок несуществующую папку E:\Free space\ в скрипте.
Чарт «Занято ГБ/Свободное место», показатели по изменению размера хранилища.
Один из первых реализованных отчётов. Два показателя переключаются между собой иконкой в верхнем левом углу, показатели меняются в зависимости от выборок, если провалиться в нужную папку, то будет показана динамика изменений внутри выбранной папки.
Для меня информативными являются показатели, показывающие разницу между объемом хранилища на дату отчёта за определенные периоды.
Для месяца – 30 дней назад, для недели 7 дней назад, для дня – за вчерашний день.
Рассмотрим на примере формулы «День»:
По сути, из объема хранилища на день отчёта вычитаем такое же значение днём ранее, проверив предварительно, что этот день ранее в отчёте присутствует.
Из интересного можно обратить внимание на формат числа, там стоит символ «+», который позволяет отображать знак не только у отрицательных значений, но и у положительных.
Чарт «Прирост в день».
Слева можно выбрать даты, которые также влияют на рассмотренный ранее чарт «Занято ГБ/Свободное место».
Один из самых нужных мне чартов, очень нужно было как раз смотреть, как изменялось хранилище подневно, а если меня интересует конкретный день, то я переключаю на этот день дату отчёта и смотрю, весь отчёт за интересующий день.
По умолчанию показывается динамика всего хранилища, если выбрать конкретную папку, то будет показана динамика по этой папке.
Показатель можно смотреть нарастающим итогом, а также в процентах (от всего объема хранилища).
Дополнительные отчёты
Данная группа состоит из трех отчётов.
«Изменение размера папок», один из самых первых и полезных отчётов.
Благодаря ему можно посмотреть какие именно папки изменились за прошедший день, неделю или месяц. Где убыло, где прибыло. С помощью этого отчёта я нашёл некоторые ненужные процессы, которые генерили ненужные гигабайты.
«Кол-во записей» – этот показатель больше реализован для души, мне всегда было интересно не только, сколько гигабайт информации появляется, но также, сколько записей создаётся и сколько всего обрабатывается нашими приложениями.
Судя по примеру выше, на первом месте у нас идут не обработанные чеки, на втором товародвижение и т.д.
Показывается в соответствии с выбранной папкой и датой отчёта.
«Кол-во файлов»
Данный отчёт нужен был больше для ускорения работы экстрактора данного приложения. Так как чем больше файлов, тем дольше анализируется хранилище. В итоге уменьшил количество файлов на сервере примерно на 20%, удалив ненужные файлы, логи, переоформив некоторые источники в месячные qvd.
Например: Выше видно, что папка с валютой занимает 2-е место, оказалось, что на каждый день свой qvd-файл с валютой, теперь в планах переделать экстрактор.
Прогноз:
Это я тоже сделал больше для души, примерная оценка беззаботной жизни с имеющимся свободным местом, то есть примерно настолько дней хватит имеющегося свободного места, если ничего не делать, а только генерить новые данные и ни о чём не думать.
Хотя, думаю, этот прогноз пригодится, когда будет планироваться покупка более вместительного диска для хранилища QlikView.
Формула простая – берутся две последние недели, разница между воскресеньем и субботой (в это время система только обновляется, разработчики практически не участвуют в жизни сервера). Получаем примерный средний прирост объёма хранилища. Делим имеющееся свободное место на средний прирост, получаем примерное число дней.
Результат
Теперь жить стало намного проще, есть полное понимание картины с жестким диском, а временные затраты на понимание этой картины практически отсутствуют. Несколько раз в неделю я заглядываю в приложение и смотрю на динамику или интересующие меня папки. Как заказчик я более чем доволен 🙂
СКАЧАТЬ
Небольшая инструкция
Как установить себе?
Всем предлагаю установить данное приложение себе. Для корректной работы не потребуется долгих настроек.
- Для вас я публикую как приложение, так и экстрактор. Так что скачивайте.
- Для начала нужно, чтобы хотя бы раз отработал экстрактор и тогда уже часть отчётов в приложении будут полезными. У меня перезапускается от 30 мин до часа. На следующий день уже можно будет смотреть динамику изменений за один день, а через неделю будет больше интересных данных.
- В экстракторе нужно указать диск для анализа (или папку), а также путь сохранения данных.
- В приложении также нужно указать путь к файлам qvd и размер хранилища. Всё остальное должно работать так же, как и на моём сервере.
Благодарю за внимание и за то, что дочитали до конца!!!
По всем возникающим вопросам обращайтесь, проконсультирую (в комментариях). 😀
Отлично!
Добавлю, таким образом можно мониторить также:
— архивные файлы;
— файлы баз данных;
— любые прочие важные файлы.
А чтобы не тратить время на просмотр панелек можно просто настроить оповещения.
Евгений, приветствую!
Да, оповещения — идея полезная, первое, что пришло в голову — если за день прирост составил больше, чем обычно (к примеру 10 Гб), то посылать сообщение.
А отчёты можно делать по потребностям, главное, чтобы были данные!
У нас к сожалению данные хранятся на диске С:
Пришлось немного повозиться, чтобы запустить анализ.
Анализ работает дольше, и считает, что папки ‘C:UsersВсе пользователи’, ‘C:UsersAll Users’ и ‘C:ProgramData’ — это разные папки, поэтому свободное место отображает как отрицательное число. Когда две их этих папок исключил из загрузки — свободное место стало определяться адекватно (с погрешностью в 3 ГБ)
Посмотрим, очень интересное решение.
Пишите еще!
Сергей, добрый день! Рад, что понравилось моё решение 🙂
Диск С: я конечно не тестировал по этой схеме, ещё 3 года назад отказались от хранения каких-либо данных QlikView на системном диске.
Время зависит как от количества файлов, а на системном диске много мелких файлов, логов и т.д., плюс производительность сервера и нагрузка на жесткий диск также должны влиять на время работы.
У себя я поставил обновление на 21:00, когда нагрузка на сервер минимальна.
Жаль ссылки на файлы уже не работают