Мне нужно извлечь из пути определенное значение по его позиции ...
пример: скажем, я разделил этот следующий путь на массив, используя '\' как split char E: \ OUM82 \ APP \ Logs\ UploadManager_20062019.log Я должен получить что-то вроде этого:
[0]=E:
[1]=OUM82
[2]=APP (this value I want to take into a field )
[3]=logs
[4]=UploadManager_20062019.log
, поэтому я всегда хочу взять что-нибудь в [2], как это реализовать?что-то с ruby?
Редактировать:
Я попробовал этот подход: (как предложил @baudsp), но я все еще получаю "_grokparsefailure"
grok {
match => { path => "%{GREEDYDATA:pathDriveSign}\\%{GREEDYDATA:RootFolder}\\%{GREEDYDATA:customerFolder}" }
}
вот стандартный вывод:
{
"tags" => [
[0] "beats_input_codec_plain_applied",
[1] "_grokparsefailure"
],
"agent" => {
"type" => "filebeat",
"ephemeral_id" => "bd6ace26-79cd-4297-bfb5-5add9f4b4217",
"id" => "83fb6261-5872-4d95-853a-44f2cc41d436",
"version" => "7.0.0",
"hostname" => "OctUpload"
},
"message" => "2019-06-13 17:40:34,591 INFO QueriesParserEngine.Run - GSP queries parser engine end. Total run time duration: 00:02:32.1831164 ",
"@timestamp" => 2019-06-22T16:25:26.204Z,
"cloud" => {
"provider" => "az",
"machine" => {
"type" => "Standard_DS13_v2"
},
"region" => "westeurope",
"instance" => {
"name" => "OctUpload",
"id" => "768097b1-bfb9-4939-b99c-5337aede39ca"
}
},
"extractor" => "SQLSERVER",
"input" => {
"type" => "log"
},
"ecs" => {
"version" => "1.0.0"
},
"@version" => "1",
"fields" => {
"logtype" => "log4net"
},
"host" => {
"os" => {
"build" => "14393.2608",
"version" => "10.0",
"name" => "Windows Server 2016 Datacenter",
"platform" => "windows",
"kernel" => "10.0.14393.2608 (rs1_release.181024-1742)",
"family" => "windows"
},
"id" => "d79c20df-4184-41a8-b95d-83669c8e3fbe",
"name" => "OctUpload",
"architecture" => "x86_64",
"hostname" => "OctUpload"
},
"log" => {
"file" => {
"path" => "E:\\OUM82\\Micron\\TI_DS_FILES\\SQLSERVER_LOGS\\QueriesParser-SQLS-BOMSSPROD66-2_13062019_173801 - Copy.log"
},
"offset" => 927068
}
}