log4j 我的logstash filter grok语法有什么问题?

wpx232ag  于 2024-01-08  发布在  Logstash
关注(0)|答案(1)|浏览(260)

我正在尝试使用OpenSearch而不是Logstash日志。我有两个日志,但第二个日志不适用于OpenSearch可用字段。
这是我的两个日志,每个日志都有不同的log4j模式。这是第三方解决方案,所以这些日志模式不能改变。

  1. Log1
  2. %d %5p [%c] [%X{txIp}] [%X{mbrNo}] %m%n
  3. Log2
  4. [%-5p][%d{yyyyMMdd HH:mm:ss.SSS}][%t]%c{4}.%M(%L) - %X{reqCommand}|%X{svcTrId}|%m%n

字符串
这是我的logstash.conf过滤器:

  1. filter {
  2. if [fields][index] == "log1"{
  3. grok {
  4. match => {
  5. "message" => "%{TIMESTAMP_ISO8601:date} %{LOGLEVEL:logLevel} \[%{DATA:class}\] \[%{DATA:txIp}\] \[%{DATA:mbrNo}\] %{GREEDYDATA:message}"
  6. }
  7. }
  8. } else if [fields][index] == "log2" {
  9. grok {
  10. match => {
  11. "message" => "\[%{LOGLEVEL:logLevel}\]\[%{TIMESTAMP_ISO8601:date}\]\[%{DATA:thread}\]%{DATA:class}.%{DATA:method}\(%{DATA:line}\) - %{DATA:reqCommand}\|%{DATA:svcTrId}\|%{GREEDYDATA:message}"
  12. }
  13. }
  14. }
  15. date {
  16. match => ["date", "ISO8601"]
  17. }
  18. }

kt06eoxx

kt06eoxx1#

终于成功了。
这是我的过滤器。

  1. filter {
  2. if [fields][index] == "log1" {
  3. grok {
  4. match => {
  5. "message" => "%{TIMESTAMP_ISO8601:logTimestamp} %{DATA:logLevel} \[%{DATA:class}\] \[%{DATA:txIp}\] \[%{DATA:mbrNo}\] %{GREEDYDATA:message}"
  6. }
  7. }
  8. date {
  9. match => ["logTimestamp", "ISO8601"]
  10. target => "@timestamp"
  11. timezone => "Asia/Seoul"
  12. }
  13. } else if [fields][index] == "log2" {
  14. grok {
  15. match => {
  16. "message" => "\[%{DATA:logLevel}]\[%{YEAR:year}%{MONTHNUM:month}%{MONTHDAY:day} %{TIME:time}\]\[%{DATA:thread}\]%{DATA:class}.%{DATA:method}\(%{DATA:line}\) - %{DATA:reqCommand}\|%{DATA:svcTrId}\|%{GREEDYDATA:message}"
  17. }
  18. }
  19. mutate {
  20. add_field => {
  21. "logtimestamp" => "%{year}-%{month}-%{day}T%{time}"
  22. }
  23. }
  24. date {
  25. match => ["logtimestamp", "ISO8601"]
  26. target => "@timestamp"
  27. timezone => "Asia/Seoul"
  28. }
  29. }
  30. }

字符串

展开查看全部

相关问题