场景:
日志已经生产到kafka,需要从kafka消费日志到elasticsearch,原来使用的logstash,资源消耗较大,遂寻找新的工具替代。采用datadog开源的vector作为处理工具。
实操:
部署方式为k8s部署
镜像版本:timberio/vector:0.34.0-debian
资源限制:
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
配置文件
data_dir: "/var/lib/vector"
api:
enabled: true
address: "0.0.0.0:8686"
sources:
mdf_source_logs:
type: kafka
bootstrap_servers: "xxx,xxx,xxx"
group_id: "cg-test-vector"
topics:
- "topic-test-vector"
transforms:
my_transform:
type: remap
inputs:
- mdf_source_logs
source: |
. = parse_json!(.message)
del(.log.offset)
sinks:
my_es:
api_version: "v7"
inputs:
- my_transform
type: elasticsearch
endpoints:
- "http://xxx"
bulk:
index: "test-%Y.%m.%d"
auth:
strategy: "basic"
user: "xxx"
password: "xxx"
配置解释:
sources数据源设置为kafka,填写对应参数,
transforms使用remap处理数据,inputs填写上面的数据源,source中可以写一写方法来清洗字段,例如正则匹配,当前仅取出message字段转为json后,使用del()删除log.offset字段。
sinks使用es作为存储,填写对应的字段可以直接写入es。
目前为止,已可以实现需求。调试过程中碰到许多问题,可以在transforms.source中添加log,或者sinks采用console打印信息。整个流程跑通后,发现实际资源使用依旧很低,rust语言确实很猛,后续考虑将logstash全换为vector。