Инвентаризируй это, инвентаризируй то: SAM

    Удовольствие от уборки способен получить далеко не каждый, но и жить в бардаке невозможно. Вот и CIO приходится проводить инвентаризацию нажитого за годы оборудования и софта, чтобы не столкнуться с Error Code: 418 I’m a teapot.

    Да, наверное, есть компании, которые держат свои угодья в полном порядке, ведь они давно озаботились этим вопросом, изучили методологию управления активами и взяли под контроль весь жизненный цикл ИТ-инфраструктуры и всего программного обеспечения ( cout << «УТОПИЯ!» << endl;). Не будем сейчас об этих тружениках. Если вы не из их числа, предлагаем разобраться со способами оптимизации процессов управления ИТ-активами. Поговорим про SAM Services и различные методы инвентаризации, а закруглиться мы бы хотели на сводной таблице с наиболее часто используемыми нами тулами и их фичами.

    Как должна была выглядеть сцена пыток Ковача. Кадр из сериала Altered Carbon / «Видоизмененный углерод»

    Программа SAM Services в последнее время претерпела изменения (нынче не то, что прежде, folks). Оптимизация инфраструктуры и рабочих нагрузок, оценка рисков и угроз безопасности – теперь проекты стали более кастомизированными, с лицензионной оптимизацией или без нее. На выходе заказчик получит исчерпывающий персонализированный отчет, содержащий рекомендации и предложения по улучшению существующей инфраструктуры, а в качестве бонуса – лицензионный анализ, экономящий время и силы на то, чтобы привести активы к идеальному состоянию.

    Проекты проходят в несколько этапов. Как корабль назовешь, так он и будет плавать, поэтому первостепенно определиться с целями и задачами, для чего жизненно необходимо выявить все «хотелки» и «болячки», чтобы уже со знанием дела перейти к последующему шагу – сбору данных и анализу (сюда же относится составление карты для оптимизированной среды на основе бизнес-задач). И вот мы подошли к финальному этапу, когда заказчик получает рекомендации по оптимизации инфраструктуры с юридическим, экономическим и, безусловно, техническим обоснованием.

    Для обследования инфраструктуры рекомендуется использовать нижеперечисленные инструменты – если вы pro, можно несколько сразу, поскольку они отлично дополняют друг друга:


    • Active Directory стандартно используется для централизованного управления и хранит данные об объектах (ресурсах, службах, учетных записях пользователей и компьютеров).
    • Altiris – комплексное решение для безопасного управления рабочими станциями, ноутбуками и серверами на всем протяжении их жизненного цикла, включая задачи развертывания, управления ресурсами, установки исправлений и устранения неполадок.
    • Dell KACE – устройство управления высоконагруженными корпоративными системами, обеспечивает широкий функционал, сопровождение оборудования на протяжении всего жизненного цикла и масштабируемость в диапазоне от 100 до 20 000 конечных узлов.
    • Intune – облачная служба для управления мобильными устройствами, мобильными приложениями и компьютерами в облачной среде.
    • LANDESK – инструмент управления жизненным циклом аппаратного и программного обеспечения: от закупки до утилизации; проводит анализ инвентарной информации аппаратного и программного обеспечения на основе данных от производителей аппаратного и программного обеспечения о новых закупках, отслеживает использование программного обеспечения.
    • Lansweeper – автоматизированная система инвентаризации, создания отчетов и управления парком компьютеров.
    • Microsoft Assessment and Planning Toolkit (MAPT) – утилита для инвентаризации, оценки и составления отчетов о серверной инфраструктуре и рабочих станциях.
    • System Center Configuration Manager (SCCM) – продукт для управления ИТ-инфраструктурой на основе Microsoft Windows и смежных устройств.
    • System Center Virtual Machine Manager – централизованное управление виртуальной инфраструктурой.
    • VMware vCenter – централизованное управление виртуальной инфраструктурой VMware.

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

    Один из самых доступных инструментов (совсем free of charge) для обследования инфраструктуры – MAPT. В первую очередь рассмотрим именно этого нашего любимчика – регулярно используем его в проектах «ЛАНИТ-Интеграция». Когда нужно оперативно найти и минимизировать риски в области ИБ в инфраструктуре, перевести бизнес-процессы заказчика в облако и оптимизировать существующую инфраструктуру, именно с данного решения мы всегда начинаем работы. Он свободно распространяемый и, в отличие от остальных, не требует подготовки инфраструктуры перед использованием. К сожалению, функционал MAPT позволяет только обнаруживать и собирать данные, поэтому требует установки дополнительных tools.

    Кадр из сериала Altered Carbon / «Видоизмененный углерод»

    В комплекте с МАРT устанавливается SQL 2008 R2 редакции Express. У Express редакции имеется ограничение в объеме БД: 10 Гб максимум. Так что если мы нацелены на исследование масштабной инфраструктуры заказчика, перед началом установки МАРT необходимо также установить SQL Server редакции Standard.

    МАРT помогает нам в сборе информации об устройстве и его производительности, поддерживает Windows и некоторые версии Unix\Linux систем. Работает по типу сканера, в качестве диапазонов поиска можно задать подсеть IP-адресов, импортировать имена устройства из файла, использовать Active Directory, SCCM. Более наглядно:


    На выходе МАРT позволяет сформировать нам отчеты о текущей инфраструктуре, которые также можно использовать для лицензионного анализа. Однако последнее сделать труднее, т.к. МАРT генерирует множество различных отчетов с разрозненной информацией и для сведения их в нечто удобоваримое нужно время. Для автоматизации процесса можно воспользоваться скриптом (в приложении) или выполнить SQL запрос.

    Приложение
    Данный скрипт создан для решения следующих задач:

    1. Подсчет процента инвентаризированных устройств;
    2. Подсчет количества развертываний клиентских ОС и офисных продуктов;
    3. Формирование таблицы с полученными данными в csv файл.

    Входные данные (отчеты из МАРТ формата xlsx):

    1. По устройствам AD (ActiveDevicesUsageTracker);
    2. По офисным продуктам (Office)

    Выходной файл содержит следующие таблицы:

    1. Клиентские операционные системы (ОС);
    2. Microsoft Office;
    3. Microsoft Visio;
    4. Microsoft Project;

    Листинг:

    $path = "C:\Users\Administrator\Desktop"
    
    
    
    
    ################# Общее  #######################
    $i = $null
    $j = $null
    $k = $null
    
    
    [array]$OutputInfoAboutInventMAPT = "Computer Name" + "`t" +	"Operating System"  + "`t" +	"Type"  + "`t" +	"WMI Status" + "`t" + "Virtual (Y/N)" + "`t" +	"Days Since Last Activity" #активные устройства собран МАРТ
    [array]$AllActive = "Computer Name" + "`t" +	"Operating System"  + "`t" +	"Type"  + "`t" +	"WMI Status" + "`t" + "Virtual (Y/N)" + "`t" +	"Days Since Last Activity" #активные устройства со всеми ОС
    [array]$AllActiveClient = $null #активные устройства с клиентской ОС
    [array]$InventPC_NoStatistik = $null 
    
    
    $objExcel = New-Object -ComObject Excel.Application 
    $WorkBook = $objExcel.Workbooks.Open($path + "\AD.xlsx") 
    $objExcel.visible = $false 
    $WorkSheetMapt = $WorkBook.sheets.item("Device Details")
    $MaptInventPC = $WorkSheetMapt.Range("A:A").value2 -ne $null
    $OS = $WorkSheetMapt.Range("C:C").value2 -ne $null
    $Type = $WorkSheetMapt.Range("D:D").value2 -ne $null
    $WMIStatus = $WorkSheetMapt.Range("F:F").value2 -ne $null
    $ActiveDay = $WorkSheetMapt.Range("J:J").value2 -ne $null
    
    
    
    
        for ($i = 0; $i -le $MaptInventPC.count; $i++)
        {
            if (($ActiveDay[$i] -le 90)  -and ($WMIStatus[$i] -eq "Success"))  
            {  
            $OutputInfoAboutInventMAPT += $MaptInventPC[$i] + "`t" + $OS[$i] + "`t" +	$Type[$i]  + "`t" + $WMIStatus[$i] + "`t" + $ActiveDay[$i] 
            }
        }
    
        $AllSuccess = $OutputInfoAboutInventMAPT[1..$OutputInfoAboutInventMAPT.Count] 
    
    
         for ($i = 0; $i -le $MaptInventPC.count; $i++)
        {
            if ($ActiveDay[$i] -le 90)   
            {  
            $AllActive += $MaptInventPC[$i] + "`t" + $OS[$i] + "`t" +	$Type[$i]  + "`t" + $WMIStatus[$i] + "`t" + $ActiveDay[$i] 
            }
        }
    
        $ProcentInventPC = $AllSuccess.count * 100 / $AllActive.count 
    
    
        "Всего обнаружено активных устройст" + "`t" + $AllActive.count >> "C:\Users\Administrator\Desktop\Info.csv"
        "Всего инвентаризировано активных устройств" + "`t" + $AllSuccess.Count  >> "C:\Users\Administrator\Desktop\Info.csv"
        "% инвентаризации" + "`t" + $ProcentInventPC  >> "C:\Users\Administrator\Desktop\Info.csv"
    
    
    
    
        ################### Таблица с клиентскими ОС ###################################
         
         for ($i = 0; $i -le $MaptInventPC.count; $i++)
        {
            if (($ActiveDay[$i] -le 90) -and ($Type[$i] -eq "Client"))  
            {  
            $AllActiveClient += $OS[$i]  
            }
        }
    
        $CountActiveClient = $AllActiveClient | Group-Object | Select-Object -Property Name, Count
    
        "Семейство продуктов" + "`t" + "Всего развертываний ПО" >> "C:\Users\Administrator\Desktop\Info.csv"      
    
        for ($i=0; $i -le $CountActiveClient.count; $i++)
        {
        $CountActiveClient[$i].name + "`t" + $CountActiveClient[$i].count >> "C:\Users\Administrator\Desktop\Info.csv"           
        }
    
        $WorkBook.Close()
    
    
    
     
    
    
    
        ################## MS Office  ###########################
        [array]$visio = $null
        [array]$project = $null
    
        $WorkBookOffice = $objExcel.Workbooks.Open($path + "\Office.xlsx")
        $objExcel.visible = $false # на экране не отображается
        $WorkSheetOffice = $WorkBookOffice.sheets.item("Office2016Assessment")
        $WorkSheetApp = $WorkBookOffice.sheets.item("OfficeAppSummary")
        $NameOfficeSuite = $WorkSheetOffice.Range("G:G").value2 -ne $null
        $AppName = $WorkSheetApp.Range("A:A").value2 -ne $null
        $AppNumInstallCopie = $WorkSheetApp.Range("D:D").value2 -ne $null
    
    
    
        "`n" + "`n" + "`n" + "`n" + "MS Office" + "`n" + "Название" + "`t" + "Количество" >> "C:\Users\Administrator\Desktop\Info.csv"     
    
        $CountOfficeSuite  = $NameOfficeSuite| Group-Object | Select-Object -Property Name, Count
    
        for ($i=0; $i -le $CountOfficeSuite.count; $i++)
        {
        $CountOfficeSuite[$i].name + "`t" + $CountOfficeSuite[$i].count >> "C:\Users\Administrator\Desktop\Info.csv"         
        }
    
    
        ################# Visio #############################
    
    
         for ($i = 0; $i -le $AppName.count; $i++)
         {
            if (($AppName[$i] -like "*visio*" ) -and ($AppName[$i] -notlike "*viewer*"))  
            {  
            $visio += $AppName[$i] + "`t" + $AppNumInstallCopie[$i-1]  
            }
         }
    
    
         "`n" + "`n" + "Visio" + "`n" + "Семейство продуктов" + "`t" + "Всего развертываний ПО"  >> "C:\Users\Administrator\Desktop\Info.csv"        
    
         for ($i=0; $i -le $visio.count; $i++)
        {
        $visio[$i] >> "C:\Users\Administrator\Desktop\Info.csv"         
        }
    
    
    
         ###################### Project ######################
    
         for ($i = 0; $i -le $AppName.count; $i++)
         {
            if (($AppName[$i] -like "*project*" ) -and ($AppName[$i] -notlike "*viewer*"))  
            {  
            $project += $AppName[$i] + "`t" + $AppNumInstallCopie[$i-1]  
            }
         }
    
    
         "`n" + "`n" + "Project" + "`n" + "Семейство продуктов" + "`t" + "Всего развертываний ПО" >> "C:\Users\Administrator\Desktop\Info.csv"                
    
        for ($i=0; $i -le $project.count; $i++)
        {
        $project[$i] >> "C:\Users\Administrator\Desktop\Info.csv"        
        }

    В таблицах AllDevices_Assessment.HardwareInventoryCore, AllDevices_Assessment.HardwareInventoryEx, Core_Inventory.AdDiscoveredDevices, Core_Inventory.Devices, SqlServer_Assessment.SqlInstances и представлениях MAP_External_Access.InstalledProductsView собрана основная часть необходимого.

    Второе место по доступности и функциональности делят SCCM, Altiris, LANDESK, которые мы решили не столько разобрать по косточкам, сколько продемонстрировать разнообразие инструментов, поэтому с нетерпением ждем ваши правки и комментарии:


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

    Кадр из сериала Altered Carbon / «Видоизмененный углерод»

    SAM-проекты с течением времени приобрели совершенно иной размах, по концепции приблизившись к всестороннему консалтингу по части оптимизации и поддержки инфраструктуры, совершенствования ИБ. Составление соотношения всего используемого ПО с фактически закупленным (лицензионный анализ) — бонус проекта. Основная цель заключается в том, чтобы заказчик по окончании проекта мог сам поддерживать идеальный порядок. В конечном итоге, ничто не идет в сравнение с чувством удовлетворения при виде идеально прибранных и управляемых угодий, где минимизированы риски всевозможных угроз и оптимизирована поддержка инфраструктуры заказчика. Welcome to the Brave New World с кастомизированностью и закрытыми IT-гештальтами.

    Всем КАРМЫ, а мы с моим дорогим соавтором dnmnk пока будем ждать ваши комментарии и замечания.

    ГК ЛАНИТ 246,44
    Ведущая многопрофильная группа ИТ-компаний в РФ
    Поделиться публикацией
    Комментарии 19
    • +6
      Тема очень благодатная, на Хабре то и дело всплывает, и решения действительно нужны рынку. Но, блин, насколько равнодушны к теме руководители, особенно в регионах. Каждый из них ждёт, когда клюнет кто-то, а потом увольняет админа, СТО и кого попало. А между тем, SAM — это и экономия, и безопасность, и защита нервов от выгорания.

      1. Легко проходят аудиты и инвентаризации.
      2. Руководитель защищён от происков сотрудников, которые а) ставят нелицензионный софт; б) тащат игры и свои «just фрилансерские» софтины.
      3. Экономия за счёт того, что вы анализируете степень и количество использования лицензий.
      4. Защита о последствий вендорских проверок (если вы ООО «Рожки и копытца» на 10 человек, это не гарантия отсутствия вендорских проверок). Штрафы сейчас нехилые, а вендоры бдят — им тоже хочется есть и справедливо работать :-)

      Это лишь немногие, базовые плюсы, которые с лихвой окупают SAM-систему. И если бизнес этого не понимает, то тут как с незащищённой любовью — рано или поздно залетишь. Такое игнорировать нельзя.
      • +5
        Руководитель защищён от происков сотрудников, которые а) ставят нелицензионный софт; б) тащат игры и свои «just фрилансерские» софтины
        Рассказываю. В одной разработческой конторе, работающей на 17 регионов мира на 7 языках, стал появляться прогиб по всем направлениям: багтрекер рос, бэклог не пустел, продажники явно намекали, что с ИТ-шниками что-то не так. Ну а айтишники говорили, что это всё продажники продать не могут, а они-то зайки. Это длилось два года, пока как-то не оказался уволенным сисадмин по каким-то приинам (нам не донесли). Пришёл новый парниша, поставил какую-то простую SAM-систему (потом перешли на известную, называть не буду, под постом их конкурента — невежливо) и через неделю пришёл к ген.диру. ИТ-департамент замер.

        Ничего ему не ответил директор, но будучи троллем, вывесил на утро на портале список сотрудников и активных лицензий:

        — 7 человек — игры
        — дизайнеры вдвоём делали на фрилансе какой-то рекламный буклет для выставки сельхозоборудования в палёном Кореле
        — два разработчика развернули крякнутый старый Borland и писали курсачи на заказ — подряд прям (к слову, Embarcadero был партнёром компании).

        Ну и по мелочи — винрары, антивирусы, офис, переводчики и прочие радости.

        Вихрь был неслабый, провели зачистку компов и местами людей. В итоге через 2 месяца вышел новый релиз — от нечего делать люди начали работать. И да, влетели на штраф от Adobe.
        • 0

          Подозреваю, что людям сильно недоплачивали. Штраф от Adobe в вашем рассказе выглядит корола пой.

          • 0

            *котолампой

            • +3
              Как же я безнадёжно стар — пришлось гуглить котолампу. Нет, история реальная и я бы раскрыл подробности, но эта компания есть на Хабре, а я ушёл всего пару лет назад, не хочется портить отношения, раскрыв историю тотального раздолбайства и слива со стороны своих же сотрудников.
            • +2
              Людям платили выше рынка на 20%, сейчас платят выше на 30%. Но разве вы никогда не видели, как люди на деньгам разматываются и нифига не делают? Прямо вот каждый рубль отбивают все? Не-а, в каждой компании таких оплачиваемых прицепов хватает.
            • +2
              В моей практике был забавный случай, связанный с играми:
              В инфраструктуре одной крупной гос. корпорации в качестве антивирусной системы использовался KSC. Как только запускалась антивирусная проверка, звонил начальник одного из крупных отделов и жаловался на зависания и плохую работу компа. Хочу заметить, что на тот момент у его техники были топовые характеристики. Мы долго не могли понять, в чем же проблема, пока не пришла пора проводить инвентаризацию имеющегося софта. Выгрузки делали из KSC и на ПК начальника нашли World of Tanks, очень уж прожорливая на тот момент, да и в целом, на любителя. Тут-то пазл и сошелся)
          • 0
            Ожидал увидеть GLPI
            • +2
              еще не довелось поработать, зато здесь делятся опытом
            • 0
              Жаль не включили в сравнение BigFix, которого Гартнер ставит сразу за SCCM. Да и про плагин от Flexera к последнему стоило рассказать.
              • +4
                По опыту проводимых мной SAM проектов, нередко бесценным оказывался Kaspersky Security Center, домена может и не быть даже в сети на 1000 компьютеров, а антивирус есть всегда. Агент касперского собирает всю необходимую информацию и хранит ее в базе, из которой все необходимое можно вытащить.
                Что касается статьи, есть несколько замечаний:
                1. Данные из АД не могут быть инструментами SAM, из АД можно получить только примерное число живых компьютеров и пользователей. С таким же успехом можно использовать данные с DHCP и DNS серверов.
                2. Аналогичным образом не могут быть инструментами SAM и Microsoft VMM с VMware vCenter. Не предназначены они для этого.
                3. LANDESK уже 1,5 года зовется как Ivanti, информацию по пользователям и службам он умеет собирать с ПК. Кстати, что имеется ввиду под колонкой Usage, если аналог Software Mettering в SCCM то делать он это умеет?
                4. MAPT сам по себе не много что умеет, но зато умеет подключатся к AD, SCCM, VMM и vCenter. В связки с этими продуктами он выдает весьма качественную информацию, однако чтобы получить детальный расклад по каждой машине нужно писать свой запрос к базе, в стандартных отчетах этого нет. Информацию о имеющихся лицензиях загрузить в MAPT нельзя, приходится руками делать такой отчет.
                5. Хоть Microsoft и заявляет обратное, но как инструмент SAM SCCM не сильно приспособлен. Например, в стандартных отчетах он не может определить редакцию SQL Server. Возможности внести информацию о имеющихся лицензиях весьма слабая, хотя возможно я сильно привередлив после того как попробовал LANDesk Data Analytics.
                • +2
                  Андрей, спасибо, что поделились опытом.
                  Вы правы, по поводу Ivanti, но в миру все же чаще по-прежнему используется LANDesk (а в остальном по 3 пункту, простите, не совсем ясен Ваш вопрос; под Usage имеется ввиду сбор данных производительности устройства в определенный момент времени), а вот что касается, Каспа, то Вы, безусловно, правильно выделили его достоинства, но, к сожалению: а) он платный; б) далеко не все кто, жаждут устанавливать именно его. Можно еще добавить в) не профильный инструмент, но думаем, это и так очевидно.
                  По поводу AD, VMM и vCenter, они рассматривались как источники данных. И МАРТ — не панацея, потому рассматриваем комплексный подход. Так как мы давно занимаемся проектами SAM, мы наработали пул инструментов, помогающих нам автоматизировать процессы обработки данных, проведения анализа и построения отчетов.
                  • +1
                    под Usage имеется ввиду сбор данных производительности устройства в определенный момент времени

                    Для чего это в SAM проектах?
                    Кстати LANDesk умеет собиарть данные о службах и их статусе.
                    Никто не говорит, что Каспер бесплатный, но он очень часто был в моих проектах и покрытие антивируса как правило выше чем другими инструментами, даже тем же доменом.
                    Его не надо разворачивать, просто взял БД и получил нужные данные. Опять же никто не мешает взять данные из других антивирусов, не скажу про всю Одессу, но в НОДе тоже есть кое-какая информация о установленном ПО (правда там в настройках нужно поставить галку собирать данные о ПО).
                    Кстати, а как вы инвентаризируете ПО на не доменных машинах, если ничего другого нет (SCCM, LANDesk и проч.)?
                    И еще вопрос почему во второй таблице в колонке User напротив большинства продуктов стоит N. Точно могу сказать SCCM и LANDesk эти данные умеют забирать, еще и выберут пользователей которые недавно логинились? А уж связка кто за каким компом чаще работает оказывает в проекте большую помощь.
                    А вообще мы тут уже обсуждаем профессиональные тонкости реализации SAM проектов, а они как правило у каждого свои :)
                    • +2
                      Спасибо, что подметили недочеты — уже исправили.

                      Для чего это в SAM проектах?

                      Например, клиент пришел и хочет понять, как перераспределить имеющиеся вычислительные мощности, при миграции в облако или использовании гибридной структуры сколько и каких ресурсов необходимо арендовать у провайдера облачных сервисов. Внимание уделяется ресурсам и их использованию, а не только сухому подсчету лицензий. Есть разные варианты проектов: по оценке нагрузок, управлению виртуальными средами, оценке безопасности. И не только эти — вариантов много, и всё зависит от того, что хочет клиент.
                      Что касается не доменных машин, можно использовать МАРТ, с не доменными устройствами он успешно справляется, или запросы к wmi и реестру, распространяемые через PsExec и подобные ему утилиты.
                      • +1
                        сколько и каких ресурсов необходимо арендовать
                        Вот тут бы я все же SCOM или MAPT использовал, они для этого больше предназначены.
                        В свое время сталкивался с проблемой что MAPT не работает в рабочих группах названных кирилицей. Но вроде уже поправили.
                        PsExec хорош когда есть единый пароль. А вот когда его нет иногда приходилось собирать информацию с помощью WinAudit руками на каждом ПК, кстати рекомендую программу очень удобная. Умеет по сети в БД писать.
                • +1
                  Можете порекомендовать какие нибудь Open Source решения.
                  • +1
                    Посмотрите на GLPI + FusionInventory или OCS Inventory. На Хабре много статей про эту связку.
                  • +1
                    Писал недавно про KACE на Хабре, почитайте — интересное решение.

                    А можете пояснить значение полей в вашей сравнительной таблице? Интересуют User, Event, Usage, Service.
                    • 0
                      Систем, предназначенных для инвентаризации и управления множество — здесь выбор в зависимости от потребностей и личных предпочтений.
                      В данной статье мы рассмотрели наиболее популярные и часто используемые.
                      Под Usage имеется ввиду сбор данных производительности устройства в определенный момент времени, event – журнал событий, service – данные о сервисах и их состоянии (условное вкл./выкл.), а user – это банальные данные о пользователях.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое