пятница, 18 октября 2019 г.

Proxmox VE: Replication Job failed

        Нас долгое время задалбывали рандомные варнинги приходящие от ProxmoxVE - Replication Job failed.  Какой-то дополнительной информации - что именно пошло не так и где proxmox не предоставляет. Вообще в этой системе с документацией туго,  и пул реквест им не пришлешь. Зато есть платная поддержка. 
               Эта хрень приходила в почту несколько месяцев,  админы все время грозились что-то сделать, но как-то у них не очень получалось. Мне как начальнику делать нехер, поэтому я закатав рукава полез внутрь proxmox. Внутри там с одной стороны все довольно красиво написано, API, плагины, код не плохого качества. С другой стороны - это все на перле. Никогда не думал что придется вспоминать перл, но как говорится никогда не говори никогда. 
          Оказалось что варнинги выбрасывались заданиями по репликации виртуальных машин с одного сервера на другой. Если быть более точным - реплицировались не сами виртуалки, а снэпшоты сделанные с виртуалки. Причем обычно все отрабатывало штатно, а в некоторых случаях (примерно 10%) это заканчивалось ничем. С чем это было связано - непонятно.
            Покопавшись в коде выяснил что "репликация" производится путем выполнения команд через shell, с каким-то таймаутом.  Если команды не укладывается в заданный таймаут - процесс завершается ошибкой. Никаких настроек типа "таймаут такой-то" в конфигах ProxmoxVE нет. Есть только магические чиселки, прямо в перловом коде. Чиселок много, они разным способом перетирают друг друга, комментарии в коде - это тоже для слабоков.     
            В общем если вас преследует аналогичная проблема, то в случае ZFS менять таймаут нужно в PVE/Storage/ZFS/PoolPlugin.pm, строка 185:
Если вы используете другой сторадж - логично будет посмотреть в других модулях директории PVE/Storage. Место установки  перловых модулей зависит от системы, у меня они лежат в /usr/share/perl5/

понедельник, 23 сентября 2019 г.

AppOptics и другие продукты SolarWinds

        Не в первый раз встречаюсь с продуктами SolarWinds, и каждый раз они оказываются редкостным дермищем которое стоит конских денег. Сначала я познакомился с мониторингом баз данных, в частности MS SQL. Это решение стоит нам около 5k USD в год, это при том что у нас довольно мало серверов баз данных и по сути мы мониторим только прод. Но оно выглядит как дедушка нагиоса или отец заббикса. В общем по сравнению с тем же PMM от перконы(бесплатного между прочим!!) - это просто диназавр из начала двухтясячных. 
         Другой пример - AppOptics. Это такой клон NewRelic, только херовенький. У него все нормально с юхабилити/внешним видом, но он нифига не работает. Ты его ставишь а данные не появляются. Вот уже неделю как разговариваю с саппорттом по поводу этой проблемы и пока результат никакой. Но при всем этом решение также стоит немалых денег. 
          В общем на мой взгляд - SolarWinds это хороший пример дерьмокомпании, которой я всячески желаю обанкротиться.   

вторник, 17 сентября 2019 г.

Code review

      Про code review много чего сказано, написано. Но все как-то кусочками. И не совсем тем что написано я был согласен. А тут наткнулся на документ где (с моей точки зрения) все правильно написано, и довольно полно.  https://google.github.io/eng-practices/review/reviewer/ Самое ценное в этом документе на мой взгляд то что он охватывает не только и не столько техническую часть, сколько организационную и то что касается человеческого общения. Про это вообще мало кто пишет. Многие вообще считают что диктатура при code review - это круто. И не понимают что code review - это в первую очередь менторство, а не поле для самоутверждения.  

воскресенье, 1 сентября 2019 г.

Из Golang в Assembler

       Я в последнее время все меньше пишу про Golang. Наверное потому что пишу в основном про то что меня интересует, а в мире Golang в последнее время меня не так много интересовало.  Недавно был на Golang meetup - из трех докладов интересным в какой-то степени был один, да и тот был интересен в основном отдельными техническими  деталями. Такого чтобы - ах как клево, давно не было. 
       На выходных отсматривал видео с GopherCon 2019. Из того что посмотрел очень понравился доклад Michael McLoughlin про то как они местами переписывают с Golang на Assembler. Ребята на мой взгляд пропагандируют очень здравый подход к оптимизации.  
            Посмотрев этот доклад я с удивлением обнаружил отсылку к докладу с GopherCon Russia. Вообще очень не часто можно встретить в докладах ведущих конференций ссылку на материалы российских конференций. Но в данном случае можно сказать что доклад Marko Kevac о bitmap индексах этого более чем заслужил.  
Для тех кому лень смотреть просто оставлю ссылку на https://github.com/mmcloughlin/avo 

вторник, 13 августа 2019 г.

HTTP smuggling

         Иногда диву даешься как люди способны находить дырки даже в реализациях  относительно простых и очень хорошо изученных протоколах вроде HTTP.  Текстовый протокол, вроде все четко и понятно. Но нет, и тут есть просто куча проблем. Как говорится было гладко на бумаге да забыли про овраги. 
                 Что делать если в запросе два одинаковых заголовка Content-length ? Что если присутствуют взаимоисключающие заголовки типа Content-length и Transfer-encoding ? Кому из них верить ? А что если между названием заголовка и ":" добавить пробел ? Эту и многие другие ситуации разные реализации обрабатывают по разному. В результате до сих пор даже в самых казалось бы известных решениях по защите веб приложений находятся дыры(не буду раскрывать имен раньше времени).  

пятница, 2 августа 2019 г.

Arista EOS (Arista Extensible Operating System)

          Иногда разбираешь как работает та или иная технология - и в голове только одна мысль - "что за дерьмо, и они это еще людям продают!"(луч позора в сторону Microsoft). А иногда читаешь  и думаешь - "блин, вот это ребята молодцы, вот это отлично придумали!". И это про компанию Arista. Мне решительно нравится все что делают эти ребята! 
         На мой взгляд эти парни совершили революцию в на рынке сетевого железа. Взяли x86 процессоры, взяли обычный линукс (fedora), написали обвязку вокруг этого - и сделали самые быстрые в мире свитчи/маршрутизаторы! Обставили всех этих бородатых дядек из контролируют рынок и распродают свои свитчи/маршрутизаторы как горячие пирожки. Казалось бы у Cisco есть все - специализированная OS, специально написанная для подобных вещей, экспертиза в создании специализированных чипов для обработки сетевого траффика. И тут оказывается что балалайка на обычных интеловских процессорах и не модифицированном линукс ядре может обставить их по скорости! Короче я стал фанатом Arista. Ну и плюс ко всему эти ребята очень любят Golang, у них даже в EOS (Arista Extensible Operating System) есть поддержка Golang из коробки.   
            Ну и конечно им на роду поддерживать всякие OpenConfig, OpenFlow и другие элементы SDN. В общем если ребята не продадутcя Cisco то у них есть все шансы захватить мир.