Splunk:从json日志文件中提取事件时间戳

时间:2015-11-09 16:03:54

标签: json datetime timestamp json.net splunk

我试图提取我作为json日志文件转发给Splunk的日志事件的时间戳,而不是从json内部正确获取日期,Splunk似乎从日志文件中获取时间戳&#39 ; s 修改日期。 (那是唯一匹配的日期时间,是不是很奇怪?)

json已正确格式化和验证,并使用Json.NET JsonConvert序列化为字符串,因此我在日期时间的json如下所示:

[_json]
pulldown_type = true
INDEXED_EXTRACTIONS = json
KV_MODE = none
AUTO_KV_JSON = false
category = Structured

我在Splunk_TA_windows的 inputs.conf 文件中为我的UniversalForwarder设置 sourcetype = _json ,监控硬盘上的目录。日志文件名称的格式为service.log.json,TimestampUtc属性位于第10行,对象内部大约为140个字符。

在Splunk服务器上,默认的props.conf有

[_json]
INDEXED_EXTRACTIONS = json
pulldown_type = true
KV_MODE = none
AUTO_KV_JSON = false
#TIMESTAMP_FIELDS = TimestampUtc
TIME_PREFIX=/"TimestampUtc": "/
TIME_FORMAT = %Y-%m-%dT%H:%M:%S.%7N%Z
#TIME_FORMAT = %Y-%m-%dT%H:%M:%S.%3N
MAX_TIMESTAMP_LOOKAHEAD = 27
category = Structured

和本地props.conf有

public class ArrayList<E extends Comparable<E>> {
private final int DEFCAP = 50;
private int origCap;
private int numElements;
private Object[] list;

/*  Method Name      : ArrayList()
    Parameters       : None
    Return value(s)  : Constructor
    Partners         : None
    Description      : Increase the sales of the Employee at the given index by the given double amount.
*/
public ArrayList() {
    origCap = DEFCAP;
    numElements = 0;
    list = (E[]) new Object[DEFCAP];
}

/*  Method Name      : ArrayList()
    Parameters       : int size
    Return value(s)  : Constructor
    Partners         : None
    Description      : Increase the sales of the Employee at the given index by the given double amount.
*/
public ArrayList(int size) {
    try {
        if(size > DEFCAP || size < 1) {
            throw new InvalidSizeException();
        }
        origCap = size;
        numElements = 0;
        list = (E[]) new Object[origCap];
    } catch (InvalidSizeException ISE) {
        System.err.println("Size too large");
    }
}

有人能指出我提取的正确配置吗?我尝试了多种组合但没有成功。

1 个答案:

答案 0 :(得分:0)

固定!我需要在json对象的顶层移动datetime属性。保持相同的配置设置。