首页 > 解决方案 > 如果输入相同,如何区分logstash过滤器中的普通日志和审计日志?

问题描述

我有一个在 Kubernetes 中运行的应用程序。我有两种类型的日志,

  1. 普通日志
  2. 审核日志

例如,

以下是单个日志文件的示例,它具有两种数据、普通日志和审计

[INFO] [] [%{TraceId}] 2021-10-02_18:37:01.601 com.MyExample.Test Getting app config from Config server with Base URL BASE_URL for application.
[INFO] [] [%{TraceId}] 2021-10-02_18:25:11.807 Audit Hello world,test file,123454,123Addb,true

在上面的例子中,第一行是普通日志,第二行是审计数据。

我希望这两个日志都转到不同的索引(2 个不同的索引),并且我想为这两个日志应用不同类型的 logstash 过滤器。

关于如何解决上述问题的任何建议?

还添加了需求流程图: 在此处输入图像描述

我当前的logstash.conf文件仅用于审计目的,我使用的是 .csv 文件

input {
  file {
    path => "<path_to_dir>/audit-*.csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
filter {
  csv {
      separator => ","
      skip_header => "false"
      columns => ["TraceId","timestamp","fcId","Ean","source","Quantity","updateSent","message"]
  }
}
output {
   elasticsearch {
     hosts => "http://localhost:9200"
     index => "audit"
  }
stdout {}
} 

提前致谢!

标签: logstashelastic-stackelk

解决方案


好的,这不是很干净,但是如果没有标签说auditor ,我现在看不到其他方法log

您可以尝试将作为 logstash 核心的一部分的与匹配JAVACLASS,可能您稍后将要使用它来分析您的日志。Grok 可以标记事件,以防审计日志中没有匹配项,并且根据您所说的,不应该有。只需使用并检查标签是否存在,如果存在,则为审计日志,否则为基本日志,然后根据需要处理您的事件。grokgrok_grokparsefailuregrokif

要让JAVACLASS模式在其中工作grok,您需要按照此处的说明设置ecs_compatibility为。v1

免责声明,这是仅基于您提供的 2 个示例的想法,这可能是完全错误的,在这种情况下,请提供更多示例,因为没有明确的模式就不可能提出解决方案。

具体例子:

日志行

[INFO] [] [123trace456] 2021-10-02_18:37:01.601 com.MyExample.Test Getting app config from Config server with Base URL BASE_URL for application.

格罗模式

\[%{LOGLEVEL:loglevel}\] \[\] \[(?<traceId>[0-9a-z]*)\] (?<timestamp>[0-9\-_:\.]*) %{JAVACLASS:class} %{GREEDYDATA:message}

结果

{
  "loglevel": [
    [
      "INFO"
    ]
  ],
  "traceId": [
    [
      "123trace456"
    ]
  ],
  "timestamp": [
    [
      "2021-10-02_18:37:01.601"
    ]
  ],
  "class": [
    [
      "com.MyExample.Test"
    ]
  ],
  "message": [
    [
      "Getting app config from Config server with Base URL BASE_URL for application."
    ]
  ]
}

我不知道那是哪种时间戳以及您的跟踪 ID 是什么样的,所以我只是做了任何事情,关键是JAVACLASS模式的使用。我通过谷歌搜索找到了很多例子,请不要忘记,谷歌是你的朋友!


推荐阅读