Logshark调试Logstash及Filebeat pipelines使用详解
目录
- Filebeat processors处理数据
- 启动服务器
- 二进制
- docker
- docker-compose.yml
- 将的 Logstash 管道的输出指向它
- logstash.conf
Filebeat processors处理数据
我们知道 Logstash 及 Filebeat 在 Elasticsearch 数据摄入及清理中起到非常大的作用。它们是常用的工具用来对数据进行处理。我们可以运用 Logstash 丰富的过滤器来处理数据,我们也可以使用 Filebeat 的 processors 来处理数据。
使用这些工具(和其他工具)对管道进行编码是一个高度迭代的过程,特别是在处理 grok 模式以解析非结构化日志时:你获得一些示例数据,将其提供给 input,然后你将重复:
- 对管道逻辑进行编码( Logstash 中的过滤器和 Filebeat 中的处理器)
- 检查输出,直到日志被正确解析。
我一直觉得这个改变管道和检查输出的迭代周期有点慢 — 确保你在 Logstash 和 Filebeat 中都有控制台输出,但你最终会混合这些程序的输出和你的输出,你会肯定会滚动很多。 当然,这两种工具都有文件输出,但在处理包含数百个字段的文档时很容易迷失方向,因为每个文档都写在一行中,没有漂亮的打印。
我们需要一种方法来立即判断我们的管道输出是否正确,打印漂亮且可导航的输出是我的主要要求,如果我们有的话,我们的开发迭代会快得多! 这样的工具不存在。幸运的是,一个开源的项目 Logshark (灵感来自流行的网络检查工具 Wireshark)应运而生。

它是一个带有用 Go 编写的终端 UI 的 CLI 应用程序。它通过启动一个小型网络服务器来工作,该服务器通过接受 _bulk 请求模仿 Elasticsearch 的行为,因此你需要做的就是将 Logstash/Filebeat elasticsearch 输出重定向到该工具。
这个工具在更改生产管道时特别方便,因为你可以向管道添加第二个 elasticsearch 输出以检查事件,默认情况下它会收集它看到并接受的前 100 个事件,但丢弃其余的,你可以检查下一个通过点击 r (reset)来刷新它。
它还会告诉您每秒发生的事件数和平均文档大小,当你需要通过调整 bulk/batch 大小来优化吞吐量时,这些信息非常方便,如果你正在从南半球的机器收集日志,这就非常重要发送到北部的 Elasticsearch 集群。
你可以直接使用二进制文件 (<5mb) 或在 docker 上运行它。 UI 可以用于任何可以模拟终端的东西,比如你的常规 Linux 终端、iTerm、tmux、PuTTY 甚至 VSCode。
启动服务器
我们可以参考网站 GitHub - ugosan/logshark: Logshark is a debugger for JSON logs. 下载最新的发布版。
二进制
./logshark --host 0.0.0.0 --port 9200 --max 1000
上述命令将启动一个服务器。它侦听 9200 端口,也就是 Elasticsearch 运行的端口。我们需要停止自己的 Elasticsearch 运行,你运行 Logshark 和 Elasticsearch 在同一个机器上的话。我们使用如下的命令来检查侦听 9200 的端口。
$ sudo lsof -i -P | grep LISTEN | grep 9200 Password: logshark 69585 liuxg 10u IPv6 0xe92fabcdd6634ab3 0t0 TCP *:9200 (LISTEN)
docker
docker run -p 9200:9200 -it ugosan/logshark -host 0.0.0.0 -port 9200
docker-compose.yml
version: "3.2"
services:
logshark:
image: ugosan/logshark
tty: true
stdin_open: true
注意:你不应使用 “docker-compose up”,而应使用 “docker-compose run logshark sh”,因为 docker-compose 不会附加到带有 “up” 的容器。 docker-compose run -p 9200:9200 logshark -port 9200
将的 Logstash 管道的输出指向它
就像普通的 elasticsearch 输出一样。针对 docker 的情况:
input {}
filter {}
output {
elasticsearch {
hosts => ["http://host.docker.internal:9200"]
}
}
使用 docker 时,你可以使用 host.docker.internal 从另一个容器访问 logshark 容器
例如
docker run --rm byrnedo/alpine-curl -v -XPOST -d '{"hello":"test"}' http:/ /host.docker.internal:9200。
针对非 docker 部署,我们可以使用如下的 logstash.conf 来进行测试:
logstash.conf
input {
stdin { }
}
filter {}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => ["http://localhost:9200"]
}
}
在上面,我使用 stdin 来输入我们的文档。我们使用如下的命令来启动 Logstash:
./bin/logstash -f logstash.conf

我们在 console 中打入一些我们喜欢的文字:

我们切换到 Logshark 所在的 terminal:

我们可以输入 l 来改变布局:

我们可以清楚地看到每个输出。它对我们调试 pipeline 非常有用。
以上就是Logshark调试Logstash及Filebeat pipelines使用详解的详细内容,更多关于Logshark调试Logstash的资料请关注其它相关文章!
上一篇:docker中安装elasticsarch 等镜像的过程
栏 目:其它服务器
本文标题:Logshark调试Logstash及Filebeat pipelines使用详解
本文地址:https://zz.feitang.co/server/30796.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





