问题标签 [packetbeat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
209 浏览

elasticsearch - Packetbeat 似乎正在添加未真正发送的 DNS 数据包

我对 Packetbeat 有一个有趣的问题。Packetbeat 安装在 Debian 10 系统上。它是最新版本的 Packetbeat(本周从 Elastic 下载区域全新安装),并将数据发送到同样安装在 Debian 10 系统上的 Elastic v7.7。

我在 Elastic 日志中看到了 DNS 数据(使用 Kibana-->Logs gui 查看它们时)。但是,我还在日志中看到了在运行 tcpdump 的数据包分析器上没有看到的其他 DNS 数据包,这些数据包来自运行 packetbeat 的同一系统。

这是显示客户端 (10.5.52.47) 的 DNS 调用的数据包分析器。wireshark 捕获过滤器设置为“端口 53”,显示过滤器设置为“ip.addr==10.5.52.47”。它与 packetbeat 在同一系统上运行(用于解决此问题)。 Wireshark 截图

我从这些数据包中删除了实际的 DNS 查询信息,因为它与本主题无关。从 wireshark 输出中,您可以看到 20:32:53 从 10.5.52.47 到 DNS 服务器 10.1.3.200 的 DNS 查询。服务器在下一个数据包中响应此查询。此外,在同一时间之后,服务器还有另外两个响应。

客户端 10.5.52.47 的下一个 DNS 查询发生在 20:36:34。这也得到了服务器的即时响应。

这与 packetbeat 发送的 Kibana-->log 输出不同。在 Kibana 日志中,它显示以下内容: Kibana 日志的屏幕截图,显示实际的 DNS 调用和多个不存在的 DNS 调用(以黄色突出显示)

然后在 20:36:34 显示数据包捕获显示的 DNS 查询。

因此,这些在分钟后 00/10/20/30/40 秒结束的端口 53 似乎是凭空捏造的。此外,这些条目的弹性日志中没有填充其他字段。client.ip 为空,client.bytes、client.port 以及这些日志条目的所有 DNS 字段也是空的。数据包捕获和 Kibana 中列出的所有 DNS 条目的所有预期字段都填充了正确的数据。

有谁知道为什么会这样?上面的这个例子是一个小样本。多个系统每隔 10 秒就会出现这种情况。例如,在一分钟后的 10 或 20 或 30 或 40 或 50 或 60 秒,我看到这些日志条目中有 10 到 100 个(估计值),其中除了destination.ip、destination.byte 和destination 之外的所有字段都是空白的.port - 这些错误记录的字段中不包含客户端信息和 DNS 信息。

“正常”的 DNS 记录包含 Kibana 日志中列出的大约 20 个信息字段,而这些错误的只有四个字段(上面列出的字段和时间戳)。

这是来自这些 10 秒间隔之一的日志示例...

报告问题的 Kibana 日志视图 - '真实' dns 调用以黄色突出显示,不存在的 dns 调用由红线标记 - 记录的不存在 DNS 调用比真实 DNS 查询多得多

这是 packetbeat.yml 文件(仅显示未注释的行)

感谢您对可能导致此问题的原因的想法。

==================================================== ======================

20 年 6 月 8 日更新

由于这个问题,我不得不关闭 packetbeat,直到找到解决方案。一个单一的 packetbeat 系统在周末生成了 1 亿个文档,仅用于 DNS 查询。其中 98% 是由 packetbeat 创建的,并不是真正的 DNS 查询。

我今天早上在捕获这些 DNS 查询的 linux 机器上停止了 packetbeat 服务,并删除了这个索引。然后我重新启动了 packetbeat 实例并让它运行了大约 60 秒。然后我停止了 packetbeat 服务。在 60 秒内,有 22,119 个 DNS 文档被添加到索引中。当我删除创建的文件 packetbeat(不是真正的 DNS 查询)时,它删除了 21,391。给我留下了 728 个实际的 DNS 查询。在这种情况下,97% 的文档是由 packetbeat 创建的,还有 3% 是由我们的系统进行的由 packetbeat 捕获的“真实”DNS 查询创建的。

关于为什么这个系统会表现出这种行为的任何想法?

谢谢

0 投票
1 回答
372 浏览

elasticsearch - 使用 Elastic Search,如何将包含数组的文档索引到多个文档中,每个数组项一个?

假设我有一个 JSON 文档(在这种情况下是从 packetbeat 发送的),其中包含如下结构:

如何让 Elastic Search 将这些索引为单独的文档,以便我可以像这样检索它们:

使用无痛或其他方式的注入管道可以实现这一目标吗?(也许重新索引??)

(数据来自Packetbeat,这对于所涉及的大量数据是有效的,并且由类似项目的数组组成,比上面的示例更复杂。我没有使用 Logstash,为了简单起见宁愿避免使用它,但如果有必要的话我可以添加它。显然,我可以在发送之前用编程语言拆分文档,但如果可能的话,我想在 Elastic Stack 中执行此操作,以尽量减少额外的依赖关系。)

0 投票
1 回答
430 浏览

elasticsearch - Packetbeat 不添加 Kubernetes 元数据

我已经启动了一个 minikube(使用 Kubernetes 1.18.3)来测试 ECK,特别是 packetbeat。minikube 配置文件称为“packetbeat”(很重要,因为这也是 Virtualbox VM 的主机名),我按照 ECK 快速入门启动并运行它。ElasticSearch(单节点)和 Kibana 运行良好,packetbeat 也在收集流,但是,我无法让它将 Kubernetes 元数据添加到字段中。

我在默认命名空间中工作并创建了一个 ClusterRoleBinding 来查看命名空间中的默认 ServiceAccount。这很好用,如果我不这样做,packetbeat 会报告它无法列出 API 服务器上的 Pod。

这是我用来制作 ECK 部署 packetbeat 的 Beat 配置:

(这主要是来自 ECK 示例页面的稍微修改的示例。)但是,这根本不起作用。我首先使用“add_kubernetes_metadata: {}”进行了尝试,但这会导致消息出错:

2020-08-19T14:23:38.550Z 错误 [kubernetes] kubernetes/util.go:117 kubernetes:查询 pod 失败并出现错误:找不到 pod“packetbeat”{“libbeat.processor”:“add_kubernetes_metadata”}

当我添加“主机:packetbeat”时,此消息消失。我现在不再收到错误,但我也没有收到 Kubernetes 元数据。我对命名空间标签最感兴趣,但我没有得到任何东西。我在日志中没有看到任何其他错误,目前它只是每 30 秒报告一次监控详细信息。

我究竟做错了什么?我可以提供更多信息来帮助我调试吗?

0 投票
0 回答
348 浏览

elasticsearch - Kubernetes 在 kubernetes 集群中运行 packetbeat 时出现 CrashLoopBackOff 错误

我正在尝试将Packetbeat部署为DaemonSetKubernetes 集群。但是 KubernetesCrashLoopBackOff在运行 Packetbeat 时出错。我检查了 Packetbeat 的 pod 日志。以下是日志。

这是 Packetbeat.yaml

谁能建议我解决这个问题?任何建议的链接也更有帮助。

kubectl 描述 daemonset packetbeat-dynamic -n kube-system

0 投票
0 回答
42 浏览

elasticsearch - 如何配置 Packetbeat 以防止发送预检 http 请求(选项请求)

我怎么知道http方法如何配置Packetbeat以防止发送预检http请求(OPTIONS请求)

0 投票
0 回答
35 浏览

elasticsearch - 将 Paketbeat 日志限制在我的服务器 IP 上,而不是其他子网的

谁能告诉我如何在 packetbeat.yml 中设置条件以仅从我的 ip 而不是来自不同子网的流量获取流量?换句话说,destination.ip: 应该只是我的 ip 和子网中的任何其他 ip。

例如,我的 ip 是网卡索引 1 上的 192.168.0.100,我从这个 Ip 和具有不同子网的 192.168.1.92 获取日志。

我试过这个但没有奏效。

packetbeat.interfaces.internal_networks:

  • 目的地.ip: '192.168.0.0/24'

有什么帮助吗?

问候。

0 投票
0 回答
84 浏览

elasticsearch - Packetbeat - 如何从嵌套对象中删除字段

我最近开始使用 Packetbeat。

对于我的用例,我只需要一些特定的字段(如果可以的话,我会完全重写映射,但将其作为最后的手段)。

我尝试从“dns.answers”对象数组中删除一些字段,但我所做的似乎没有任何效果:

此外,我还尝试仅包含我想要但似乎也不起作用的字段,例如:

有任何想法吗?如果重写索引的模板/映射是最好的选择,或者使用 Ingest Node Pipelines 是一种更好的方法,我很想听听。

谢谢