首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows上,即使配置正常,如何调试logstash?

在Windows上,即使配置正常,如何调试logstash?
EN

Stack Overflow用户
提问于 2016-10-15 00:33:53
回答 3查看 6.6K关注 0票数 0

我的logstash导入了几个CSV文件,配置如下:

代码语言:javascript
复制
input {
  file {
    path => [
        "C:\Data\Archive_ATS_L1\2016-10-08-00-00_to_2016-10-09-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
        "C:\Data\Archive_ATS_L1\2016-10-09-00-00_to_2016-10-10-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
        "C:\Data\Archive_ATS_L1\2016-10-10-00-00_to_2016-10-11-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
        "C:\Data\Archive_ATS_L1\2016-10-11-00-00_to_2016-10-12-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
        "C:\Data\Archive_ATS_L1\2016-10-12-00-00_to_2016-10-13-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
        "C:\Data\Archive_ATS_L1\2016-10-13-00-00_to_2016-10-14-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
        "C:\Data\Archive_ATS_L1\2016-10-14-00-00_to_2016-10-15-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv"
    ]
    start_position => "beginning"    
  }
}
filter {
  csv {
      separator => ","
      columns => ["MessageCode","SourceGuid","DateTimeGenerated","Code1","Code2","Code3","Code4","LanguageCode", "AlarmSeverity", "Message", "Guid1", "Guid2", "Guid3", "Guid4", "MessageOrigin", "RequestId", "Bool1", "Bool2", "Bool3", "Bool4", "Bool5", "Bool6", "Bool7", "Bool8", "Code5", "Code6", "Bool9", "Bool10", "Bool11", "Code7"]
  }
}
output {  
    elasticsearch {
        action => "index"
        hosts => "localhost"
        index => "S2K"
        workers => 1
    }
    stdout {}
}

我使用以下命令行启动logstash:

代码语言:javascript
复制
logstash.bat –f ..\conf\logstash.conf --verbose

通常我会在控制台中看到导入到Elasticsearch中的数据。但这一次我得到的只是一行代码,上面写着"Pipeline main started“,而且一直都是这样。

如何从logstash检查数据是否已导入?我尝试使用Elasticsearch,方法是运行: curl http://localhost:9200/_aliases

这通常会给出索引列表。但是我在这个配置中拥有的索引(称为S2K)没有列出。

我是ELK的新手,那么我如何检查logstash是否在做它的工作呢?请注意,我使用的是Windows 7。

EN

回答 3

Stack Overflow用户

发布于 2021-05-03 23:54:54

要调试logstash,您需要做两件事:在config中添加stdout,并以适当的方式运行logstash。

1步:在logstash conf文件中添加此配置(例如: /etc/logstash/conf.d/config.conf)

代码语言:javascript
复制
output {
  stdout {
    codec => rubydebug {
      metadata => true # Here, we will print metadata in console
    }
  }
}

2步:运行logstash查看命令输出

代码语言:javascript
复制
sudo /usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/config.conf

你会得到类似这样的结果:

代码语言:javascript
复制
{
            "log" => {
        "file" => {
            "path" => "***\\spring.log"
        }
    },
        "appName" => "my-service",
      "@metadata" => {
        "ip_address" => "***",
              "type" => "_doc",
              "beat" => "filebeat",
           "version" => "7.12.0"
    },
      "log_level" => "INFO",
     "serverName" => "***",
            "pid" => "6236",
         "thread" => "main",
        "message" => "***",
    "serviceName" => "***",
           "tags" => [
        [0] "beats_input_codec_plain_applied"
    ],
          "input" => {
        "type" => "log"
    },
     "@timestamp" => 2021-01-03T10:22:07.644Z,
       "@version" => "1",
          "class" => "***"
}

最后,在调试之后,您可以像sudo systemctl start logstash一样运行它

希望这对你有帮助,这种方法帮我节省了时间

票数 1
EN

Stack Overflow用户

发布于 2016-10-15 23:30:24

Stdout Ruby Debug是你的朋友。

这会将所有内容输出到屏幕,因此您需要将屏幕输出推送到一个文件中(底部的示例代码)

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-stdout.html

输出部分中的.conf文件中包含什么内容

代码语言:javascript
复制
output { stdout { codec => rubydebug } }

这是如何运行conf并将屏幕输出推送到另一个文件以进行调试的示例。

代码语言:javascript
复制
logstash -r -f yourconfig.conf > debugfile.out

只需将yourconfig.conf和debugfile.out更改为您想要的任何名称,并且请记住在完成调试后从您的conf文件中删除rubydebug编解码器!

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2016-10-17 22:43:59

您可以使用行编解码器来更改行的读取方式的字符集(缺省为UTF-8),而不必更改文件本身

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40048005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档