Hangout with ClickHouse
当我们部门发现了ClickHouse这么一个优秀数据存储仓库后,经过了一段时间的摸索测试,就把线上大部分与数据分析相关的业务迁移到了ClickHouse上。这篇文章将会介绍我们如何将Kafka中的Nginx日志接入到ClickHouse中,并以此介绍我们的数据接入经验。当然,其他的应用日志也可以参照以下逻辑将数据接入ClickHouse。
我们最初使用Python脚本清洗日志写入ClickHouse,但是这样开发和维护都有一定的成本并且写入性能无法达到预期。后来我们使用Hangout作为我们的数据清洗工具,Hangout是一个通用的日志处理工具,功能类同Logstash,可以把不同种类的日志处理后写入其他的地方,比如Kafka、Elasticsearch、ClickHouse。
Prerequisites
我们假设Nginx日志已经推送到了Kafka。
Hangout已经提供了大量的插件支持我们的日志处理,下面是为了完成一个完整的配置需要另外下载的插件:
- Hangout-output-clickhouse: 专门为ClickHouse开发的Hangout输出插件hangout-output-clickhouse
下面是我们安装Hangout以及Hangout-output-clickhouse插件的具体步骤:
mkdir hangout
cd hangout
wget https://github.com/childe/hangout/releases/download/0.3.0/hangout-dist-0.3.0-release-bin.zip
unzip hangout-dist-0.3.0-release-bin.zip
cd modules
wget https://github.com/RickyHuo/hangout-output-clickhouse/releases/download/0.0.2/hangout-output-plugins-clickhouse-0.0.2-jar-with-dependencies.jar
Configuration Example: Nginx Logs
Log Sample
001.cms.msina..sinanode.com`[27/Dec/2017:16:01:03 +0800]`-`”GET /n/front/w6