Как создать фильтр grok для ввода системного журнала из TCP и UDP - PullRequest
0 голосов
/ 27 июня 2019

Я новичок в ELK и хочу настроить сквозной ELK для log4j, исходящего из TCP / UDP.

Я хочу извлечь информацию о сообщении из журнала. следовательно, используя фильтр GROK, но не может быть достигнуто. эти журналы отображаются в Кибане с тегом: grokfailure.

Как мне использовать фильтр grok для журналов log4j.

Вот пример журнала

<log4j:event logger="MI.Colos.Modules.Toolkit.UI.App" level="INFO" timestamp="1561561913712" thread="1"><log4j:message>Application shut down</log4j:message><log4j:properties><log4j:data name="log4japp" value="CoLOSApplicationToolkit.exe(6532)" /><log4j:data name="log4jmachinename" value="L5CG80809C0" /></log4j:properties></log4j:event>

Я пробовал с упомянутым конфигом logstash. но сообщение о том, что в Кибане не извлекается.

input {
  tcp {
    port => 9999
    type => syslog
  }
  udp {
    port => 9999
    type => syslog
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "colos_local_log-%{+YYYY.MM.dd}"

  }
}

Ошибка Кибана Грока Я ожидаю фильтра сообщения, которое подано как УРОВЕНЬ: РЕГИСТРАТОР: ВЕДУЩИЙ: ДАННЫЕ:

...