LogstashTimeMillis

Материал из naname.com.ua
Перейти к навигацииПерейти к поиску


Добавление поля timeMillis

Задача - добавить поле timeMillis там где Log4J его не добавляет

Log4j

На стороне Log4j поле не добавляется ни в какую

...
<JsonLayout compact="true" eventEol="true" properties="true" includeTimeMillis="true">
        <KeyValuePair key="timeMillisNb" value="$${date:UNIX_MILLIS}"/>
</JsonLayout>
...

При этом добавляются поля

  • instant.epochSecond
  • instant.nanoOfSecond

Logstash

  • instant.epochSecond - домножить на 1000 что бы перевести секунды в микросекунды
  • instant.nanoOfSecond - поделить на 1000000 что бы перевести наносекунды в микросекунды
  • если поле с наносекундами отсутствует то игнорировать его
filter {

  ... skipped ...

  if ![timeMillis] {
     if [instant][epochSecond] {
       if [instant][nanoOfSecond] {
         ruby {
           code => "event.set('timeMillis', (event.get('[instant][epochSecond]').to_i) * 1000 + (event.get('[instant][nanoOfSecond]') / 1000000).to_i)"
         }
       } else {
         ruby {
          code => "event.set('timeMillis', (event.get('[instant][epochSecond').to_i) * 1000)"
         }
       }
     }
  }
}