2014-09-11 3 views
2

Хорошо, что я вылавливаю, среди прочего, первый сегмент уникального идентификатора из строки журнала с фильтром grok, вроде этого (его единственный первый сегмент, который мне волнует, выбрасывает остальное). Этот сегмент является шестнадцатеричным, и я хочу его в двоичном формате.Помощь с помощью фильтра поиска в стиле Logstash - hexedecimal?

Линия:

Transaction: 000178ec-XXXX-XXXX-XXXX-XXXXXXXXXXXX 

Фильтр типа:

Transaction: %{BASE16NUM:transaction_id}-%{GREEDYDATA:otherpartsidontcareabout} 

Но это только дает мне этот результат:

{ 
    "transaction_id": [ 
    [ 
    "000178ec" 
    ], 
    "otherpartsidontcareabout": 
    [ 
    "XXXX-XXXX-XXXX-XXXXXXXXXXXX" 
    ]] 
} 

Где я ожидал, что он будет преобразован в десятичный:

{ 
    "transaction_id": [ 
    [ 
    "96492" 
    ], 
    "otherpartsidontcareabout": 
    [ 
    "XXXX-XXXX-XXXX-XXXXXXXXXXXX" 
    ]] 
} 

Я делаю это неправильно? Я действительно застрял.

ответ

4

BASE16NUM просто указывает шаблон текста. Для того, чтобы преобразовать его в целое число вы будете иметь, чтобы сделать что-то вроде этого:

filter { 
    ruby { 
    code => "event['transaction_id'] = event['transaction_id'].hex" 
    } 
} 

или logstash 5

filter { 
    ruby { 
    code => "event.set('transaction_id', event.get('transaction_id').hex)" 
    } 
} 
+0

Спасибо, Ill попробовать это завтра утром. – user49411

+0

Lifesaver. отмеченный как правильный ответ. – user49411

 Смежные вопросы

  • Нет связанных вопросов^_^