• Система сбора, анализа, уведомлений и визуализации логов на syslog-ng, elasticsearch, kibana, grafana, elasticalert

    • Tutorial

    image


    Что мы получим после этой статьи:


    Систему сбора и анализа логов на syslog-ng, elasticsearch в качестве хранилища данных, kibana и grafana в качестве систем визуализации данных, kibana для удобного поиска по логам, elasticalert для отправки уведомлений по событиям. Приготовьтесь, туториал объемный.


    Какие логи будем собирать:


    • все системные логи разложенные по индексам в зависимости от их facility(auth,syslog,messages и т.д.);
    • логи nginx — access и error;
    • логи pm2;
    • и др.

    Обоснование выбора системы


    Почему я выбрал связку с syslog-ng в качестве отправителя, парсера и приемщика логов? Да потому что он очень быстрый, надежный, не требовательный к ресурсам(да да — logstash в качестве агентов на серверах и виртуальных машинах просто убожество в плане пожирания ресурсов и требованием java), с внятным синтаксисом конфигов(вы видели rsyslog? — это тихий ужас), с широкими возможностями — парсинг, фильтрация, большое количество хранилищ данных(postgresql,mysql,elasticsearch,files и т.д.), буферизация(upd не поддерживает буферизацию), сторонние модули и другие фишки.


    Требования:


    • Ubuntu 16.04 или debian 8-9;
    • vm для развертывания;
    • Прямые руки.

    Приступим или добро пожаловать под кат

    Читать дальше →
  • Быстрые TCP сокеты на Erlang

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

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

      Статья адресована как Erlang программистам, так и всем, кто просто интересуется Erlang. Глубокие знания языка не требуются.
      Читать дальше →
    • Секционирование PostgreSQL с помощью pg_pathman



        Александр Коротков, Дмитрий Иванов (Postgres Professional)


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

        Александр Коротков: Как правильно уже сказали, наш доклад будет посвящен расширению pg_pathman, которое реализует продвинутое секционирование в Postgres. Основную часть доклада будет рассказывать мой коллега Дмитрий Иванов, который сейчас очень активно включился в работу над расширением pg_pathman, а я буду время от времени что-то добавлять.
        Читать дальше →
      • Запросы GraphQL без подключения к сети с помощью Redux Offline и Apollo

        • Translation
        • Tutorial

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


        А это… не просто.


        Посмотрим, как создать эффективное решение, работающее без подключения к сети, на React и слое данных GraphQL с применением Apollo Client. Статья разбита на две части. На этой неделе разберем оффлайновые запросы. На следующей неделе примемся за мутации.

        Читать дальше →
      • HTTP/2 Server Push не так прост, как я думал

        • Translation


        Фото найдено на просторах Википедии


        Привет! Меня зовут Макс Матюхин, я работаю PHP-программистом в Badoo. Мы постоянно изучаем различные возможности по ускорению работы нашего приложения и самыми интересными находками, конечно, делимся в нашем блоге на Хабре.


        Вторая версия протокола HTTP обещает нам много улучшений, и одной из любопытных особенностей HTTP/2 является поддержка push. Теоретически эта возможность позволяет ускорить загрузку приложения. Недавно Jake Archibald написал большую статью, в которой проанализировал особенности реализации push в различных браузерах, и оказалось, что таких особенностей довольно много.


        Мы уже публиковали пост, описывающий базовый функционал HTTP/2 Server Push, а этот будет хорошим дополнением, рассказывающим, как в реальности обстоят дела с поддержкой HTTP/2 Server Push в различных браузерах.

        Читать дальше →
      • Обзор систем мониторинга серверов. Заменяем munin на…

        • Tutorial
        Очень долго хотел написать статью, но не хватало времени. Нигде (в том числе на Хабре) не нашёл такой простой альтернативы munin, как описанная в этой статье.


        Читать дальше →
      • Советы по Postgres для Rails разработчиков

        • Translation

        В апреле на RailsConf в Фениксе мы обсудили огромное количество советов по использованию Postgres с Rails, и подумали, что будет полезно их записать и поделиться с более широкой аудиторией. Здесь вы найдете некоторые из них, касающиеся отладки и улучшения производительности базы данных вашего Rails приложения.

        Читать дальше →
      • Открываем доступ к видеозаписям HighLoad++ за последние пять лет

          image

          Мы выложили в открытый доступ видеозаписи последних пяти лет конференции разработчиков высоконагруженных систем HighLoad++. Смотрите, изучайте, делитесь и подписывайтесь на канал YouTube.

          Более терабайта записей и 500 видеороликов! Это всё, под катом только реклама :)

          Перейти в канал YouTube!

          Читать дальше →
        • Шифрование в EXT4. How It Works?

          image Паранойя не лечится! Но и не преследуется по закону. Поэтому в Linux Kernel 4.1 добавлена поддержка шифрования файловой системы ext4 на уровне отдельных файлов и директорий. Зашифровать можно только пустую директорию. Все файлы, которые будут созданы в такой директории, также будут зашифрованы. Шифруются только имена файлов и содержимое, метаданные не шифруются, inline data (когда данные файла, не превышающие по размеру 60 байт, хранятся в айноде) в файлах не поддерживается. Поскольку расшифровка содержимого файла выполняется непосредственно в памяти, шифрование доступно только в том случае, когда размер кластера совпадает с PAGE_SIZE, т.е. равен 4К.
          Читать дальше →
        • Gixy — open source от Яндекса, который сделает конфигурирование Nginx безопасным

            Nginx, однозначно, один из крутейших веб-серверов. Однако, будучи в меру простым, довольно расширяемым и производительным, он требует уважительного отношения к себе. Впрочем, это относится к почти любому ПО, от которого зависит безопасность и работоспособность сервиса. Признаюсь, нам нравится Nginx. В Яндексе он представлен огромным количеством инсталляций с разнообразной конфигурацией: от простых reverse proxy до полноценных приложений. Благодаря такому разнообразию у нас накопился некий опыт его [не]безопасного конфигурирования, которым мы хотим поделиться.



            Но обо всем по порядку. Нас давно терзал вопрос безопасного конфигурирования Nginx, ведь он — полноправный кубик веб-приложения, а значит, и его конфигурация требует не меньшего контроля с нашей стороны, чем код самого приложения. В прошлом году нам стало очевидно, что этот процесс требует серьезной автоматизации. Так начался in-house проект Gixy, требования к которому мы обозначили следующим образом:

            — быть простым;
            — но расширяемым;
            — с возможностью удобного встраивания в процессы тестирования;
            — неплохо бы уметь резолвить инклюды;
            — и работать с переменными;
            — и про регулярные выражения не забыть.
            Читать дальше →
          • Кластер PostgreSQL высокой надежности на базе Patroni, Haproxy, Keepalived

            • Tutorial
            Привет, Хабр! Встала передо мной недавно задача: настроить максимально надежный кластер серверов PostgreSQL версии 9.6.

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

            Планируя кластер я проштудировал много статей, как из основной документации к PostgreSQL, так и различных howto, в том числе с Хабра, и пробовал настроить стандартный кластер с RepMgr, эксперементировал с pgpool.

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

            В итоге где-то (уже не вспомню точно где) нашел ссылку на прекрасный проект Zalando Patroni, и все заверте…
            Читать дальше →
          • OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

            • Tutorial


            Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья.


            Также вы узнаете почему 100% по тестам — не всегда хорошо в реальности.

            Читать дальше →
          • Как запустить ClickHouse своими силами и выиграть джекпот

              Мы решили описать простой и проверенный путь для тех, кто хочет внедрить аналитическую СУБД ClickHouse своими силами или просто испробовать ClickHouse на собственных данных. Именно этот путь прошли мы сами в новостном агрегаторе СМИ2 и добились впечатляющих результатов.


              Clickhouse-client


              В предисловии статьи — небольшой рассказ о наших попытках внедрить Druid и InfluxDB. Почему после успешного запуска ClickHouse мы смогли отказаться от использования InfiniDB и Cassandra.


              Читать дальше →
            • Вызов функций Go из других языков

              • Translation

              image


              С версии 1.5 компилятор Go поддерживает несколько режимов сборки, определяемых флагом buildmode. Их ещё называют режимами исполнения Go (Go Execution Modes). С их помощью go tool может компилировать пакеты Go в нескольких форматах, включая архивы и библиотеки общего пользования Go (shared libraries), архивы и библиотеки общего пользования Си, а с версии 1.8 — и динамические плагины Go.


              В статье мы рассмотрим компилирование пакетов Go в библиотеки Си. В этом режиме сборки компилятор генерирует стандартный бинарный файл объекта (shared object) (.so), передавая функции Go в качестве API в стиле Си. Мы поговорим о том, как создавать библиотеки Go, которые можно вызывать из C, Python, Ruby, Node и Java.


              Весь код доступен на GitHub.

              Читать дальше →
            • Микросервисы: опыт использования в нагруженном проекте



                На конференции HighLoad++ 2016 руководитель разработки «М-Тех» Вадим Мадисон рассказал о росте от системы, для которой сотня микросервисов казалась огромным числом, до нагруженного проекта, где пара тысяч микросервисов — обыденность.

                Тема моего доклада — то, как мы запускали в продакшн микросервисы на достаточно нагруженном проекте. Это некий агрегированный опыт, но поскольку я работаю в компании «M-Tех», то давайте я пару слов расскажу о том, кто мы.

                Если коротко, то мы занимаемся видеоотдачей — отдаём видео в реальном времени. Мы являемся видеоплатформой для «НТВ-Плюс» и «Матч ТВ». Это 300 тысяч одновременных пользователей, которые прибегают за 5 минут. Это 300 терабайт контента, который мы отдаем в час. Это такая интересная задача. Как это всё обслужить?

                Про что сама эта история? Это про то, как мы росли, как проект развивался, как происходило какое-то переосмысление каких-то его частей, какого-то взаимодействия. Так или иначе, это про масштабирование проекта, потому что это всё — ради того, чтобы выдержать ещё больше нагрузки, предоставить клиентам ещё больше функционала и при этом не упасть, не потерять ключевых характеристик. В общем, чтобы клиент остался доволен. Ну и немного про то, какой путь мы прошли. С чего мы начинали.
                Читать дальше →
              • «mymehouse» co-working Москва

                  Итак, свершилось! В Москве открылась студия myme. В связи с началом своей деятельности в столице мы рады предложить активным и креативным фрилансерам сотрудничество!
                  Уважаемые веб-дизайнеры, дизайнеры интерьера, программисты и прочие креативные личности, вы нам нужны! С нас 180 квадратов творческой атмосферы, располагающейся в одном из самых престижных районов Москвы в пяти минутах ходьбы от м. Кутузовская, рабочее место с возможностью оставлять в офисе необходимые вещи в ценности и сохранности, интернет со скоростью 10 мб/сек, телефон, переговорная, душ, кухня. А так же мягкая зона с плазмой и игровыми приставками для релаксации. Для той же самой релаксации в двух шагах от офиса находится ресторан, фитнес клуб, солярий и скалодром. Так же есть места для парковки машин и скорей всего велостоянка. У нас можно жить, но мы хотим работать, работать с приятными и талантливыми людьми! Мы готовы общаться, делиться идеями, а так же обращаться к вам за помощью в реализации наших проектов!
                  Открытие офиса в январе.

                  Цена удовольствия 12 т.р. в месяц или 500 р за одни сутки, для тех, кто готов сотрудничать с нами более длительный период, у нас существует гибкая система скидок!


                  По вопросам бронирования мест пишите на почту.
                  Так же в письме напишите ваш вид деятельности.


                  Интересно бы было узнать насколько актуален сейчас для вас такой офис.

                  PS: imac в стоимость не входит))

                  PS2: ко-воркинг закрыт
                • Тюнинг Леопарда

                    Неважно насколько хорош OS X Leopard, всегда найдутся вещи которые людям не нравятся и они хотели бы их изменить. И чем выше уровень пользователя, тем больше у него запросов и желания изменить что-то на свой вкус. В этой заметке, я попытаюсь рассказать о небольших советах, которые позволят вам улучшить внешний вид Леопарда.
                    Читать дальше →
                  • Google AJAX Search API

                      Возможно я идиот, и убейте меня кто-нибудь, но сегодня я совершенно случайно, перерыв бОльшую половину интернета, обнаружил, что у Google есть мощнейший и абсолютно бесплатный API для поиска. Который ну просто мега элементарно интегрировать со своим сайтом.
                      $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".urlencode($query)";
                      $body = file_get_contents($url);
                      $json = json_decode($body);
                      foreach ($json->responseData->results as $resultjson) {
                      $result_google['urls']= $resultjson->url;
                      $result_google['contents'] = $resultjson->content;
                      }

                      а вот что из этого получилось