Nifi json анализ эффективности - PullRequest
0 голосов
/ 29 мая 2020

Я не совсем уверен, как go об этом, я пытаюсь найти лучший способ получить нужные мне данные, и я не могу понять, как это сделать без трех разных наборов процессоров AssessmentJsonPath.

Мои данные выглядят следующим образом.

{
  "@timestamp": "2020-05-29T18:06:53.965Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.7.0"
  },
  "agent": {
    "ephemeral_id": "691847ce-87fa-49de-a635-555b31ed28f4",
    "hostname": "acal",
    "id": "c3336311-de5a-4563-b24b-655613b399aa",
    "version": "7.7.0",
    "type": "filebeat"
  },
  "log": {
    "offset": 3759198,
    "file": {
      "path": "/opt/zactivity.log"
    }
  },
  "message": "{\"eventDate\":\"2020-05-29 18:06:50.913\",\"status\":\"SUCCEEDED\",\"activityType\":\"AUTHENTICATION\",\"user\":\"admin\",\"accountId\":\"4dadb154\",\"ip\":\"111.11.1.111\",\"userRoles\":[\"ROLE_DELETE_ALL\",\"ROLE_INVOKE_ACTIONS\",\"ROLE_SAVE\",\"ROLE_CREATE\",\"ROLE_READ\",\"ROLE_SAVE\",\"ROLE_ADMINISTER\",\"ROLE_SHARE\",\"ROLE_MANAGE\",\"ROLE_EXPORT\",\"ROLE_MANAGE_ALL\",\"ROLE_MANAGE_ACTION\",\"ROLE_EDIT\",\"ROLE_ADMIN\",\"ROLE_MANAG\",\"ROLE_RAW_DATA_ACCESS\",\"ROLE_ADMINIST\"],\"userGroups\":[\"1fb\"],\"userType\":\"USER\",\"authenticationType\":\"USERNAME_PASSWORD\"} ",
  "input": {
    "type": "log"
  },
  "ecs": {
    "version": "1.5.0"
  },
  "host": {
    "mac": [
      "50:6b:8d:db:04:2e"
    ],
    "hostname": "local",
    "architecture": "x86_64",
    "os": {
      "version": "7 (Core)",
      "family": "redhat",
      "name": "CentOS Linux",
      "kernel": "3.10.0-1062.12.1.el7.x86_64",
      "codename": "Core",
      "platform": "centos"
    },
    "id": "a29a885a0aba48418d46414ecbe449e1",
    "containerized": false,
    "name": "local",
    "ip": [
      "11.11.11.11"
    ]
  }
}

Мне нужно несколько значений из сообщения, а также log.file.path и, возможно, даже @ timestamp.

Сейчас у меня есть EvaluateJsonPath только для получения сообщения, log.file.path и @timestamp. Затем я маршрутизирую его на основе пути к файлу и отправляю его другому EvaluateJsonPath, чтобы получить сообщение и сделать его потоковым файлом, чтобы передать его другому EvaluateJsonPath для анализа значений в сообщении.

Есть ли лучший способ чтобы сделать это вместо трех разных EvaluateJsonPath?

1 Ответ

1 голос
/ 29 мая 2020

вы должны иметь возможность использовать только один EvaluateJsonPath. установите Destination в атрибут flowfile и определите 3 свойства Dynami c, каждое для каждого значения, которое вы хотите.

...