【问题标题】:Parse Multiline JSON with Arrays using grok in logstash在 logstash 中使用 grok 解析多行 JSON 和数组
【发布时间】:2017-01-12 22:40:19
【问题描述】:

您好,这是我第一次使用 Kibana。 我正在尝试将以下输入文件解析为 logstash 并将其放入弹性搜索以在 Kibana 中使用。

{
  "ASRtest": {
    "ASRHDR": "This is asr HDR",
    "ASRTestType": "DevTest",
    "Scenario": [
      {
        "ScenarioNumber": 1,
        "ScenarioName": "HTTP Validation",
        "ScenarioDescription": "Validate if the API alows access over HTTP",
        "ScExecutionStatus": "Execution Complete",
        "ScenarioStatus": "In-Complete",
        "ScenarioSeverity": false,
        "TestCase": [
          {
            "TestCaseNumber": 1,
            "TestCaseName": "HTTP Validation - using POST method ",
            "TcExecutionStatus": "Execution Error",
            "TcStatus": "NA",
            "TcSeverity": "NA"
          }
        ]
      },
      {
        "ScenarioNumber": 2,
        "ScenarioName": "Server Platform/Version Disclosure",
        "ScenarioDescription": "Validate if API disclose server information",
        "ScExecutionStatus": "Execution Complete",
        "ScenarioStatus": "Failure",
        "ScenarioSeverity": "Medium",
        "TestCase": [
          {
            "TestCaseNumber": 1,
            "TestCaseName": "Server Platform/Version Disclosure - using POST method ",
            "TcExecutionStatus": "Executed Successfully",
            "TcStatus": "Failure",
            "TcSeverity": "Medium"
          }
        ]
      }
    ]
  }
}

我希望输入中的所有字段都可用于仪表板图表。谁能解释如何将这个多行 JSON 文件解析为 logstash ==> elasticsearch。 我尝试了一个示例配置文件,但无法生成所需的输出。

【问题讨论】:

  • 能否展示您的示例配置?

标签: elasticsearch kibana logstash-grok


【解决方案1】:

您可能必须使用multilinecodec,它可以理想地允许将来自文件的多行消息加入到单个事件中。 input 可能看起来像这样:

input 
{   
    file 
    {
        codec => multiline
        {
            pattern => '^\{'
            negate => true
            what => previous                
        }
        path => ["path to your json file/.json"]
        start_position => "beginning"
        sincedb_path => "/dev/null"
        exclude => "*.gz"
    }
}

This 线程和SO 可能很有用。希望对您有所帮助!

【讨论】:

  • 我是否需要对此配置文件进行过滤。我实际上需要这个 JSON 文件中的所有字段。抱歉,这可能是一个转储问题,但大多数示例在与编解码器一起使用时都有一些过滤。
  • 另一个问题是我的输出中是否需要索引语句?
  • @Anoop 是的,您可能需要一个过滤器,以便检索您需要的所有必要字段。我刚刚只显示了输入部分。那么回答你的第二个问题,你所说的索引语句是什么意思?
  • 嗨达斯。我们有输入部分,但我们正在努力解决的是过滤部分我们使用了 gsub、mutant 和其他一些选项,但它们都不起作用。我们遇到的另一个问题是,当我们使用此配置启动它时,logstash 不会加载该文件。使用 Index 输入我们在输出部分中使用的索引命令来创建和索引。
  • 对不起,当我说它没有加载时,我没有解释我的意思,Logstash 从多行编解码器开始并处理它。但由于某种原因,我们没有在弹性搜索中看到数据。我们也尝试创建索引,但也成功处理了,但没有在弹性搜索中创建任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2015-12-18
  • 1970-01-01
相关资源
最近更新 更多