Все для HAProxy в Atom

Появилась у меня на работе задачка - взять 3 относительно разных конфига HAProxy, ответвившихся когда-то от общего предка, и обратно унифицировать их в один.

Конфиги хорошие, большие - 800 строк каждый.

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

Ну у нас же тут opensource, так что тут же был нагуглен архив с HAProxy.tmbundle, который …

more ...

Vendoring зависимостей в Go

После недавнего удаления модуля на 11 строк кода из npm, которое сломало всю Node.js инфраструктуру, я по-новому взглянул на то, как в проектах на Go реализованы зависимости от других пакетов.

Изначально, при знакомстве с go я был крайне недоволен отсутствием возможности задавать зависимости от конкретных версий (зависимость указывается только от репозитория, т.е. от master ветки) - ведь апстрим может ломать обратную совместимость, и твой проект просто не соберется. Причем …

more ...

Проверка образов Docker на уязвимости с Clair

Ни для кого не секрет, что контейнеры (и в частности Docker) не только решают много проблем (configuration drift, scalability, dependency hell), но и привносят новые (в частности, обновление базовых образов).

Я уже давно мониторил IT-мир на предмет появления хорошего инструмента для проверки Docker-образов на наличие известных CVE. До недавнего времени подходящего инструмента не было. Была парочка дистро-специфичных инструментов (например oscap-docker, с которым я помучался и забил), но ничего подходящего …

more ...

Открыл код db-checker

Недавно я открыл код еще одного инструмента, который уже около года использую на работе - db-checker.

Началось все с необходимости проводить регулярные проверки логической целостности данных в БД. Проще говоря - гонять мониторингом запросы к базе.

Сначала это была часть проекта, который проверял данные на нашем CDN. Проект этот сразу планировался многопоточным, поэтому написан на Go. Затем мухи были отделены от котлет, и проверка базы выделилась в отдельную сущность, но несколько legacy-моментов …

more ...

О пользе Python и костылях с Docker

В процессе организации авто-очистки Docker Registry 2, устав ждать в появления в нем столь "ненужного" функционала, как удаление образов с диска (DELETE запросы удаляют тег, но сами данные остаются на диске и жрут место), я в очередной раз прибег к помощи скрипта из delete-docker-registry-image, и уперся в то, что этот самый скрипт (написанный изначально на bash) невероятно медленно работает на большом Registry.

К примеру, удаления одного тега для repository с …

more ...

Рекомендую Advent Of Code

Закончил на днях решать задачи из замечательного набора программерских пазлов Advent Of Code (да, я тормоз и даже пропустил начало этого конкурса), и могу уверенно рекомендовать его любому.

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

Так же эти задачки отлично подходят для изучения нового языка, чем я …

more ...

Замена carbon-cache на go-carbon = Счастье

Пришлось на собственном опыте опробовать, насколько Graphite модульный.

При 200k metricsReceived наш Graphite, работающий на довольном старом сервере на обычных дисках, начал помирать. Carbon-cache постоянно был в топе потребления ресурсов, ни о какой отзывчивости в работе сервера речи вообще не шло.

"Хватит это терпеть!" - подумал я, и начал в который раз искать советы по тюнингу carbon для высокой производительности. В очередной раз ничего нового не найдя, я решил попробовать давно …

more ...

Немного житейского опыта

Решил поделиться небольшим набором "капитанских" жизненных практик, каждая из которых очень сильно упростила мне жизнь.

  1. Использование сервиса для чтения новостей/RSS.

    Я очень долго игнорировал RSS, считая его пережитком прошлого, но когда создавал свой VPS, поставил Tiny Tiny RSS и попробовал попользоваться.

    Сложно даже описать, сколько это мне сэкономило времени. Это оказалось настолько удобно, что теперь я не представляю свою жизнь без подобного сервиса, хоть от tt-rss и отказался вместе …

more ...

Quis custodiet ipsos custodes?

Кто же устережёт самих сторожей?, или как (и зачем) я мониторю мониторинг.

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

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

more ...

Избавился от CoreOS

С огромным облегчением сегодня убрал последний хост с CoreOS.

Я уже писал о своих впечатлениях от CoreoOS, но с тех пор впечатлений прибавилось.

Частые атомарные обновления на бумаге выглядели вкусно (и в пользовательских ОС типа Android работают прекрасно), но вот на практике на серверах в том виде, в котором CoreOS их готовит, оказались совсем несъедобны.

Объясню, в чем проблема: Docker достаточно часто что-то ломает в API, и свежие ядра Linux …

more ...