前文基于docker平台的clickhouse的数据库集群环境已搭建好了,是时候添加一些数据了。
为了把所学知识更快的用于生产环境,这里,假设一个需求如下:
生产环境中有一个设备,通过syslog协议,向指定服务器发送日志数据,日志内容如下:
[16/07/2020:09:28:03 +0800]#172.18.17.157#58084#GET#10.0.12.13#80#10.0.0.43#10.0.0.43#443#/favicon.ico/message
设备负载峰值时,日志数据大约为30条/秒,现需将该日志文件内容格式化后,保存到clickhouse中。
需求分析
根据场景描述,日志采集工具必须具备支持syslog协议;具备峰值数据30条/秒(约3.5Mb/秒)接收能力。
根据测试评估后,我选择了开源日志收集工具:fluentd。
由于clickhouse自带了kafka的数据加载引擎、fluentd也支持kafka数据传输,所以在数据加载过程中,添加了kafka集群进行数据缓存。
综上,日志平台的架构结构基本确定了,如下图:
架构功能描述:
- 首先使用fluentd收集日志数据、格式化为json格式后,发送到kafka集群中。
- kafka缓冲日志数据入库请求。
- clickhouse使用自带的kafka引擎进行数据加载。
下一篇,将记录在docker平台下,进行kafka集群安装、集成clickhouse集群的kafka引擎配置。