Key-Value 切分

在很多情况下,日志内容本身都是一个类似于 key-value 的格式,但是格式具体的样式却是多种多样的。logstash 提供 filters/kv 插件,帮助处理不同样式的 key-value 日志,变成实际的 LogStash::Event 数据。

配置示例

  1. filter {
  2. ruby {
  3. init => "@kname = ['method','uri','verb']"
  4. code => "event.append(Hash[@kname.zip(event['request'].split(' '))])"
  5. }
  6. if [uri] {
  7. ruby {
  8. init => "@kname = ['url_path','url_args']"
  9. code => "event.append(Hash[@kname.zip(event['uri'].split('?'))])"
  10. }
  11. kv {
  12. prefix => "url_"
  13. source => "url_args"
  14. field_split => "&"
  15. remove_field => [ "url_args", "uri", "request" ]
  16. }
  17. }
  18. }

解释

Nginx 访问日志中的 $request,通过这段配置,可以详细切分成 method, url_path, verb, url_a, url_b