Эта новость — о двух Open Source-решениях с непростой судьбой: clickhouse-exporter и clickhouse_fdw. Именно открытость и сила сообщества помогли им выжить, несмотря на перипетии судьбы (смену разработчиков). 

Нам же они были важны, поскольку оба используются в проектах, а недавно появился запрос на актуализацию их версий. Так на Docker Hub появились два новых образа: clickhouse-exporter и spilo (включает в себя clickhouse_fdw). Они могут пригодиться тем, кто работает с ClickHouse в Docker или Kubernetes. А теперь — небольшие подробности о произошедшем.

Новый clickhouse-exporter: метрики снова работают

clickhouse-exporter — это простой сервер, который собирает статистику СУБД ClickHouse и экспортирует ее по HTTP в Prometheus. Если вы пользуетесь clickhouse-exporter, наверняка знаете, что этот проект уже дважды сменил владельца. Сначала им был f1yegor, затем разработка продолжилась в рамках Percona Lab… и вот его приняли в организацию ClickHouse!

Из-за всей этой неразберихи в Docker-образах exporter’а — код годичной или даже двухгодичной давности. В нем накопились баги разного рода, поэтому образы уже не работают с актуальной версией ClickHouse. В общем, с ними собирать метрики не получалось. Например, при попытке получить данные можно было увидеть сообщение об ошибках работы с таблицей asynchronous_metrics:

time="2021-04-08T13:08:26Z" level=info msg="Error scraping clickhouse: Error scraping clickhouse url http://default:*****@clickhouse-cluster:8123?query=select+metric%2C+value+from+system.asynchronous_metrics: strconv.Atoi: parsing \"2549.633\": invalid syntax" file=exporter.go line=292
time="2021-04-08T13:08:26Z" level=info msg="Starting Server: :9116" file="clickhouse_exporter.go" line=34

Благо, исправление уже принято в актуальный на текущий момент репозиторий. Поэтому, взяв актуальный мастер-срез clickhouse-exporter на GitHub, мы упаковали его в Docker-образ. Проблем при работе с последней версией ClickHouse больше не замечено.

NB: номера релизов (в Docker Hub) выбраны нами случайно, так как в репозитории тегов нет.

Новый Spilo и как он связан с ClickHouse

Как вы, возможно, знаете, Spilo — это Open Source-решение от Zalando для создания устойчивого, высокодоступного кластера… PostgreSQL. Но при чем здесь ClickHouse? Дело в том, что мы уже некоторое время используем Spilo в сочетании с clickhousedb_fdw — это довольно редкая, но полезная утилита, которая обеспечивает связь PostgreSQL с ClickHouse («fdw» расшифровывается как «Foreign Data Wrapper»). С этим расширением можно в PostgreSQL использовать таблицы, экспортируемые из ClickHouse. 

С clickhousedb_fdw случилась история, аналогичная судьбе clickhouse-exporter: репозиторий, поддерживаемый изначально Percona Lab, давно не обновлялся. И к концу 2020 года у расширения накопилась масса проблем, которые разработчики не решают: нет поддержки актуальных релизов PostgreSQL, возникают сложности со сборкой даже на поддерживаемых версиях PostgreSQL, есть проблемы с различными типами данных и курсорами и т. д. В общем, учитывая еще и в принципе сложную сборку clickhousedb_fdw, мы бы не рекомендовали его использовать.

К счастью, есть форк, который можно рассматривать как альтернативу — это clickhouse_fdw (да, название отличается всего на 2 буквы). Его-то мы и включили в свою редакцию Spilo, актуальную версию которого поддерживаем уже давно (и для себя, и для клиентских проектов).

Итак, сборка Spilo с clickhouse_fwd теперь тоже доступна публично.

Вместо заключения

Будем признательны за любую обратную связь, если для вас актуальны какие-то из этих образов.

P.S.

Читайте также в нашем блоге: