Поиск строки из текстового файла

#splunk

#splunk

Вопрос:

У меня есть файл с точкой с запятой; текстовый файл с разделителями. Он был проиндексирован в splunk.

 INSERT INTO `account` VALUES ('abc');
INSERT INTO `account` VALUES ('xyz');
INSERT INTO `account` VALUES ('pqr');
INSERT INTO `account` VALUES ('mnp');
 

Когда я ищу «pqr», он должен показывать только 1 строку. В настоящее время также отображается следующая строка «mnp». В файле нет метки времени, и splunk по-прежнему группирует строки по дате и времени. например, все строки, упомянутые выше, перечислены как группа под 06/09/2011 19:01:17.000

Как мне вернуть только одну строку при поиске из файла, разделенного точкой с запятой?

Ответ №1:

Из-за отсутствия метки времени Splunk может испытывать трудности с определением, является ли это одним событием (с 4 строками) или 4 отдельными событиями. Все данные имеют временные метки в Splunk. Если входящие данные не имеют метки времени, Splunk назначит время поступления в качестве метки времени — и данные, поступающие «одновременно», могут быть интерпретированы как одно событие.

Чтобы сообщить Splunk, что ваши входящие данные должны обрабатываться как «одно событие на строку», поместите следующее в $SPLUNK_HOME/etc/system/local/props.conf

 [yoursourcetype]  
SHOULD_LINEMERGE=false  
DATETIME_CONFIG = CURRENT
 

ЕСЛИ ваши события могут состоять из нескольких строк и точка с запятой (;) разделяет события, используйте вместо этого следующее

 [yoursourcetype]  
MUST_BREAK_AFTER = ;  
DATETIME_CONFIG = CURRENT
 

Если у вас есть выбор, первый вариант намного эффективнее. В обоих случаях я включил DATEIME_CONFIG, чтобы сообщить Splunk, что встроенной метки времени нет; это ускорит обработку ввода.

Наконец, замените «yoursourcetype» на sourcetype ваших данных в строках.