使用ruby过滤器访问日志中的字段

时间:2018-08-16 12:16:49

标签: ruby logstash elastic-stack

我想做的是以某种方式将我的grok字段传递给外部ruby过滤器脚本,并根据这些字段的特定标记进行设置。问题是我只能使用事件API获取整个日志消息。

我的问题是:是否可以从ruby过滤器中已处理的日志消息中访问字段,还是我必须自己解析整个消息,这不是最佳选择,因为每个日志消息都要处理两次?或者,我可以完全转储grok过滤器,然后自己执行脚本中的所有操作。

1 个答案:

答案 0 :(得分:0)

是的,有可能。 您可以使用Event API

获得对任何字段的只读访问权限
static setWallpaper(int wallpaperID) async {
///Prepare variables for setting wallpaper and download the wallpaper as well (if needed)
String url = getWallpaperURL(WallpaperSize.fullWallpaper, wallpaperID);
String path = await getPathForWallpaperFile(url);
bool fileExists = checkIfFileExists(path);

///If wallpaper file does not exist then download it
if (fileExists == false) {
  ///Download wallpaper then change wallpaper
  await downloadWallpaperFile(wallpaperID, path: path).then((result) {
    ///Check if download was successful
    if (result == 0) {
      ///Change wallpaper
      AndroidInterface.setWallpaper(path);
    }
  });
} else {
  ///Wallpaper already downloaded
  ///Change wallpaper
  AndroidInterface.setWallpaper(path);
}
}

field也可以是嵌套的字段引用,例如filter { ruby { code => 'event.get("foo" )' } }

[field][bar]