最快的 Logstash 替代方案 go-stash v1.0.1 发布
go-stash v1.0.1 现已发布。go-stash是一个高效的从Kafka获取,根据配置的规则进行处理,然后发送到ElasticSearch集群的工具。
go-stash有大概logstash 5倍的吞吐性能,并且部署简单,一个可执行文件即可。
安装
cd stash && go build stash.go
Quick Start
- 可执行文件方式
./stash -f etc/config.yaml
- docker 方式,确保配置文件路径正确
docker run -d -v `pwd`/etc:/app/etc kevinwan/go-stash
config.yaml示例如下:
Clusters: - Input: Kafka: Name: go-stash Log: Mode: file Brokers: - "172.16.48.41:9092" - "172.16.48.42:9092" - "172.16.48.43:9092" Topic: ngapplog Group: stash Conns: 3 Consumers: 10 Processors: 60 MinBytes: 1048576 MaxBytes: 10485760 Offset: first Filters: - Action: drop Conditions: - Key: status Value: 503 Type: contains - Key: type Value: "app" Type: match Op: and - Action: remove_field Fields: - message - source - beat - fields - input_type - offset - "@version" - _score - _type - clientip - http_host - request_time Output: ElasticSearch: Hosts: - "http://172.16.188.73:9200" - "http://172.16.188.74:9200" - "http://172.16.188.75:9200" Index: "go-stash-{{yyyy.MM.dd}}" MaxChunkBytes: 5242880 GracePeriod: 10s Compress: false TimeZone: UTC
详细说明
input
Conns: 3 Consumers: 10 Processors: 60 MinBytes: 1048576 MaxBytes: 10485760 Offset: first
Conns
链接kafka的链接数,链接数依据cpu的核数,一般<= CPU的核数;
Consumers
每个连接数打开的线程数,计算规则为Conns * Consumers,不建议超过分片总数,比如topic分片为30,Conns *Consumers <= 30
Processors
处理数据的线程数量,依据CPU的核数,可以适当增加,建议配置:Conns * Consumers * 2 或 Conns * Consumers * 3,例如:60 或 90
MinBytes MaxBytes
每次从kafka获取数据块的区间大小,默认为1M~10M,网络和IO较好的情况下,可以适当调高
Offset
可选last和false,默认为last,表示从头从kafka开始读取数据
Filters
- Action: drop Conditions: - Key: k8s_container_name Value: "-rpc" Type: contains - Key: level Value: info Type: match Op: and - Action: remove_field Fields: - message - _source - _type - _score - _id - "@version" - topic - index - beat - docker_container - offset - prospector - source - stream - Action: transfer Field: message Target: data
- Action: drop
- 删除标识:满足此条件的数据,在处理时将被移除,不进入es
- 按照删除条件,指定key字段及Value的值,Type字段可选contains(包含)或match(匹配)
- 拼接条件Op: and,也可写or
- Action: remove_field
移除字段标识:需要移除的字段,在下面列出即可
- Action: transfer
转移字段标识:例如可以将message字段,重新定义为data字段
Output
Index
索引名称,indexname-{{yyyy.MM.dd}}表示年.月.日,也可以用{{yyyy-MM-dd}},格式自己定义
MaxChunkBytes
每次往ES提交的bulk大小,默认是5M,可依据ES的io情况,适当的调整
GracePeriod
默认为10s,在程序关闭后,在10s内用于处理余下的消费和数据,优雅退出
Compress
数据压缩,压缩会减少传输的数据量,但会增加一定的处理性能,可选值true/false,默认为false
TimeZone
默认值为UTC,世界标准时间
ES性能写入测试
测试环境
- stash服务器:3台 4核 8G
- es服务器: 15台 16核 64G
关键配置
- Input: Conns: 3 Consumers: 10 Processors: 60 MinBytes: 1048576 MaxBytes: 10485760 Filters: - Action: remove_field Fields: - message - source - beat - fields - input_type - offset - request_time Output: Index: "nginx_pro-{{yyyy.MM.d}}" Compress: false MaxChunkBytes: 5242880 TimeZone: UTC
写入速度平均在15W/S以上
本次更新内容:
1. 升级了go-zero至v1.2.5
2. 升级了go-queue至v1.1.1
项目地址:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
FabEdge V0.4 新特性:支持多集群通讯
边缘计算是指在靠近物或数据源头的⼀侧,采用网络、计算、存储、应用核心能力为⼀体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应⽤智能、安全与隐私保护等方面的基本需求。边缘计算处于物理实体和⼯业连接之间,或处于物理实体的顶端。 根据计算能力大小,边缘计算可以分为两⼤类: 轻边缘:计算能力受限,网络条件差,业务单⼀,数量庞⼤,地理位置分散,⽐如智慧小区,车联网,无人机等。 重边缘:计算能力相对充足,网络条件相对稳定,业务复杂,可靠性,安全性有⼀定要求,比如5G MEC,工业互联网,智慧城市等。 FabEdge 是⼀个基于 kubernetes 构建的,专注于边缘计算场景的容器网络⽅案,解决了边缘计算场景下⽹络管理复杂,割裂互不通信,缺少拓扑感知能力,无法提供就近访问等问题,使能云边、边边之间的业务协同。FabEdge支持 KubeEdge,SuperEdge, OpenYurt 等边缘计算框架管理的轻量边缘节点。在最新发布的V0.4版中,加⼊对重边缘,也就是边缘集群的⽀持,完成了对所有边缘场景的全覆盖。 以上图为例,共有三个集群,集群 ...
- 下一篇
北海(Kraken)v0.10.0 发布 - 支持 Flutter Widget 混合渲染
前言 经过 2 个多月紧张的开发工作,今天我们发布了全新的 0.10.0 版本,该版本的核心功能是支持 Flutter Widget 混合渲染方案,将 Flutter Widget 简单封装成 Custom Element 就可以提供给前端使用,不仅丰富了前端的组件生态,而且可以通过接入 Native 的高性能容器接入更多的业务场景。以下介绍该版本的主要更新内容。 更新内容 支持 Flutter Widget 混合渲染 之前 Kraken 对于 Flutter Widget 的支持只限于简单的 leaf 节点(如图片、视频、文本等),在 0.10.0 版本中 Kraken 支持了完整的混合渲染,可以接入类似瀑布流、长列表这种的复杂容器类型,使得 Flutter Widget 与 Kraken 互相嵌套成为可能。 下面示例演示了如何将 Flutter 的下拉刷新与瀑布流 Widget 封装成自定义组件,并且在前端使用。 在 Dart 侧将 EasyFresh 与 WaterfallFlow Widget 封装成 Custom Element。 在前端通过标准的 DOM API 创建自定义...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境