最快的 Logstash 替代方案 go-stash v1.0.1 发布

标签: 快的 logstash go | 发表时间:2022-01-13 21:23 | 作者:来源: 投稿
出处:https://www.oschina.net/news/project

go-stash v1.0.1 现已发布。go-stash是一个高效的从Kafka获取,根据配置的规则进行处理,然后发送到ElasticSearch集群的工具。

go-stash有大概logstash 5倍的吞吐性能,并且部署简单,一个可执行文件即可。

go-stash

安装

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以上

go-stash

本次更新内容:

1. 升级了go-zero至v1.2.5

2. 升级了go-queue至v1.1.1

项目地址:

相关 [快的 logstash go] 推荐:

最快的 Logstash 替代方案 go-stash v1.0.1 发布

- - 开源中国-软件更新资讯
go-stash v1.0.1 现已发布. go-stash是一个高效的从Kafka获取,根据配置的规则进行处理,然后发送到ElasticSearch集群的工具. go-stash有大概logstash 5倍的吞吐性能,并且部署简单,一个可执行文件即可. docker 方式,确保配置文件路径正确. config.yaml示例如下:.

谁是最快的Go Web框架

- - 鸟窝
前几天我写了一篇文章: 超全的Go Http路由框架性能比较,利用Julien Schmidt实现的 benchmark测试框架对几乎所有的go web框架的路由功能进行了比较. 我本来以为对Go web框架的性能考察就告以段落了,直到我写了一段简单的代码测试Irsi,用来模拟实际产品中的处理,才发现了Julien Schmidt测试框架的问题.

Go和HTTPS

- - Tony Bai
近期在构思一个产品,考虑到安全性的原因,可能需要使用到 HTTPS协议以及双向数字证书校验. 之前只是粗浅接触过HTTP( 使用Golang开 发微信系列). 对HTTPS的了解则始于那次 自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解.

Valve宣布CS: GO

- 小D - Solidot
此前媒体曾报告说Valv邀请CSS玩家和社区代表访问其总部,现在谜团已经解开:Valv宣布了团队射击游戏Counter-Strike: Global Offensive,它将在2012年初登陆Steam(PC和Mac)、PS3和Xbox360. CS: GO将是12年前发布的CS的真正扩展,而不是类似CS:Source的引擎更新,它提供了新的地图、角色、武器,经典CS地图(如de_dust),新的游戏模式,配对比赛和排名榜等.

Go 语言初步

- wei - 云风的 BLOG
所谓认真玩,就是拿 Go 写点程序,前后大约两千行吧. 据说 Go 的最佳开发平台是 Mac OS ,我没有. Windows 版还没全部搞定,但是也可以用了. 如果你用 google 搜索,很容易去到一个叫 go-windows 的开源项目上. 如果你用这个,很多库都没有,而且语法也是老的. 我在 Windows 下甚至不能正确链接自己写的多个 package.

Go 1.1 的性能提升

- - 博客 - 伯乐在线
伯乐在线注:今天上午在微博推荐了英文原文,感谢 @Codefor 的热心翻译. 如果其他朋友也有不错的原创或译文,可以尝试 推荐给我们. 这是Go1.1发布后性能提升分析系列的第一篇文章. Go官方文档( 这里和 这里)报告说,用Go1.1重新编译你的代码就可以获得30%-40%的性能提升.

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

- - 编程语言 - ITeye博客
在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:. 以下内容来自: http://baidu.blog.51cto.com/71938/1676798. 日志主要包括系统日志、应用程序日志和安全日志. 系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因.

Logstash 参考指南(多个管道) - 风继续吹 - SegmentFault 思否

- -
如果需要在同一进程中运行多个管道,Logstash提供了一种通过名为. pipelines.yml的配置文件完成此操作的方法,这个文件必须放在. path.settings文件夹,并遵循此结构:. 该文件在YAML中格式化并包含一个字典列表,其中每个字典描述一个管道,每个键/值对指定该管道的设置. 这个示例展示了两个不同的管道,它们由ID和配置路径描述,对于第一个管道,.

Logstash及Elasticsearch 压力测试说明书(十) - 简书

- -
磁盘:SATA磁盘2块,磁盘阵列为RAID1. CPU****:2个4核CPU. 具体参数:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz. 1、 kafka版本:kafka_2.11-0.11.0.3. 2、 kafka集群数量:3. 3、 logstash版本:logstash-5.6.11.

采访:关于 Go 语言和《Go Web编程》

- - 开源中国社区最新新闻
最近,在网上出现了一本名为《Go Web编程》的书籍,里面详细地讲述了使用Go语言进行Web编程的各个方面. 很特别的是,这本书是在GitHub上以开源的方式撰写的. 日前,InfoQ采访了这本书的作者谢孟军先生,请他来和大家谈谈Go语言以及他撰写的开源书籍. InfoQ:请您先简单和大家介绍一下自己.