插件故障排除编辑

插件跟踪编辑

在对 Logstash 部署进行故障排除时,您可能需要检查节点统计信息 API,以查找处理数据花费时间过长、丢弃数据或根本没有收到数据的插件。确定指标表明存在潜在问题的插件后,就该确定是哪个插件以及它在配置文件中的声明位置。

虽然您可以为每个插件定义一个“id”来简化此发现过程,但为每个插件命名并不实用,尤其是在包含数百个插件的非常大的管道中。

您可以使用 Logstash API 中的信息来获取链接插件的自动生成 ID 到其声明(从 7.6.0 开始)。

以下是操作方法

浏览统计信息 API 并找到您要调查的插件编辑

示例:“给我任何输入/输出事件计数器不匹配的过滤器”

❯ curl -s localhost:9600/_node/stats | jq '.pipelines.main.plugins.filters[] | select(.events.in!=.events.out)'
{
  "id": "75afda0f03a5af46279c4cba9408ca87664b9c988bf477e2a2cca535e59e856f",
  "events": {
    "in": 1,
    "out": 0,
    "duration_in_millis": 5
  },
  "name": "drop"
}
在管道图中找到插件声明编辑

从步骤 1 中获取 id,并使用它在管道图中找到插件

❯ curl -s localhost:9600/_node/pipelines?graph=true | jq '.pipelines.main.graph.graph.vertices[] | select(.id=="75afda0f03a5af46279c4cba9408ca87664b9c988bf477e2a2cca535e59e856f")'
{
  "config_name": "drop",
  "plugin_type": "filter",
  "meta": {
    "source": {
      "protocol": "file",
      "id": "/private/tmp/logstash-7.9.1/cfg",
      "line": 10,
      "column": 5
    }
  },
  "id": "75afda0f03a5af46279c4cba9408ca87664b9c988bf477e2a2cca535e59e856f",
  "explicit_id": false,
  "type": "plugin"
}
在源文件中查找插件的定义编辑

以下是一个简单的脚本用于执行查找。

❯ cat /private/tmp/logstash-7.9.1/cfg |  ruby -e 'line = 10; $stdin.read.split("\n").each_with_index {|l, i| puts "#{i+1}: #{l}" if (i+1).between?(line-1, line + 5) }'
9:   } else if [message] == "d" {
10:     drop {}
11:   } else if [message] == "e" {
12:     drop {}
13:   } else if [message] == "f" {
14:     drop {}
15:   } else if [message] == "g" {

或者,您可以打开文件并转到该行。