插件故障排除
编辑插件故障排除
编辑插件追踪
编辑当您对 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" {
或者,您可以打开文件并跳转到该行。