Открыл код 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 ...

Logstash и Graphite

Недавно читал серию постов от Datadog про сбор метрик, и в частности статью про метрики Nginx (думал, вдруг что-то новое узнаю). Что меня в этой статье зацепило - так это то, что только версия Nginx Plus показывает статистику количества ответов, разделенную по HTTP-кодам. Поскольку я использую перед Nginx балансировщик HAProxy, который не жадный и показывает подробную статистику по кодам ответов для каждого бекенда и фронтенда, я о таком минусе статистики Nginx …

more ...

Заметка о Graphite

На первый взгляд, кажется довольно странным, что сейчас, в 2015 году, все до сих пор используют для хранения time series такой старый и «не модный» инструмент, как Graphite. О ужас, о нем даже почти не пишут в твиттере/G+ и он написан на старом будничном Python, а не на популярном сейчас Go (хотя уже частично написан, но об этом потом).

Но все равно многие используют его, и не сильно жалуются …

more ...

Плагин к Collectd для сбора метрик Riak CS

На днях наконец-то дошли руки до модернизации той части мониторинга, которая отвечает за сбор метрик, и набивший оскомину Munin был окончательно заменен на Graphite + Collectd. Теперь воцарилась идиллия - Icinga2 складывает метрики из perfdata в Graphite, и Collectd отправляет все метрики туда же.

Хочется отдельно отметить, что несмотря на то, что изначально Collectd мне не очень понравился (кому может сейчас понравиться Apache-подобный конфиг?), при дальнейшем изучении я был приятно поражен богатством …

more ...