Извлечение ЧИСЛА из журналов и преобразование единиц хранения.
Примеры журналов -
2020-02-04 16: 18: 56,783 ИНФОРМАЦИЯ Log4jFactory $ Log4jLogger [10.xxx.xxx.xxx]: 5701 [Dry -PROD-XC6] [ 3.7.6] Получено подтверждение от соединения [id = 26876, /10.xxx.xxx.xxx:5701->/10.xxx.xxx.xxx:56584, конечная точка = ноль, живая = истина, тип = CSHARP_CLIENT], успешно аутентифицировано, принципал: ClientPrincipal {uuid = 'd7d8b718-ed75-4cc3-b51a-c620bb082255', ownerUuid = '058720ad-7b35-40f6-8978-bd9cf7e286e c'}, подключение владельца: true, версия клиента: null * 100
2020-02-04 16: 15: 27,519 ИНФОРМАЦИЯ Log4jFactory $ Log4jLogger [10.xxx.xxx.xxx]: 5701 [Dry -PROD-XC6] [3.7.6] процессоров = 8, физическая память. итого = 31,4 ГБ, Physical.memory.free = 18,8 ГБ, swap.space.total = 7,8 ГБ, swap.space.free = 7,8 ГБ, heap.memory.used = 4,5 ГБ, heap.memory.free = 536,5 МБ, heap.memory.total = 5,0 г, heap.memory.max = 5,0 г, heap.memory.used / total = 89,51%, heap.memory.used / max = 89,51%, native.memory.used = 8,2 млн, собственный .memory.free = 3,5G, native.memory.total = 64,0M, native.memory.max = 3,5G, native.meta.memory.used = 80,0M, native .meta.memory.free = 432,0M, native.meta.memory.percentage = 90,75%, несовершеннолетний.g c .count = 18605, несовершеннолетний.g c .time = 121136ms, Major.g c. count = 0, major.g c .time = 0 мс, load.process = 0,00%, load.system = 0,01%, load.systemAverage = 1,00%, thread.count = 69, thread.peakCount = 229, кластер. timeDiff = 4083, event.q.size = 0, executor.q.asyn c .size = 0, executor.q.client.size = 0, executor.q.query.size = 0, executor.q.scheduled .size = 0, executor.q.io.size = 0, executor.q.system.size = 0, executor.q.operations.size = 0, executor.q.priorityOperation.size = 0, operations.completed.count = 351751533, executor.q.mapLoad.size = 0, executor.q.mapLoadAllKeys.size = 0, executor.q.cluster.size = 0, executor.q.response.size = 0, operations.running.count = 0 , operations.pending.invocations.percentage = 0,00%, operations.pending.invocations.count = 1, proxy.count = 0, clientEndpoint.count = 231, connection.active.count = 232, client.connection.count = 231, connection.count = 1
Попытка извлечь НОМЕР для полей Памяти (как родной. memory.used = 8.2M, native.memory.free = 3.5G, native.memory.total = 64.0M, native.memory.max = 3.5G) и конвертировать единицы с использованием фильтра Ruby.
Сначала использовал Logsta sh KV Filter для получения пар KV, затем пробовал следующий код (я новичок в Ruby Coding)
my Ruby Code -
ruby {
code => '
event.to_hash.keys.each { |k,v|
matches = v.scan(/(\d*\.\d*?i)([KMG])$/)
if matches[2] == nil
event.set(k,event.get(v))
elsif matches[2] == "K"
multiplyBy = 1024
event.set(k, matches[1].to_f * multiplyBy)
elsif matches[2] == "M"
multiplyBy = 1024 * 1024
event.set(k, matches[1].to_f * multiplyBy)
elsif matches[2] == "G"
multiplyBy = 1024 * 1024 * 1024
event.set(k, matches[1].to_f * multiplyBy)
else
event.set(k, event.get(v))
end
}
'
}
Просмотр ошибок в журналах -
[2020-02-11T17: 01: 09,603] [ОШИБКА] [logsta sh .filters. ruby] [main] Ruby произошло исключение: неопределенный метод `scan 'для nil: NilClass
благодарен за любую помощь или руководство. Спасибо