2016-09-26 2 views
0

Fluentd를 사용하여 센서 세트에서 일부 데이터를 푸시합니다. 내가 밀고있는 데이터에는 날짜 구성 요소 (연도, 월 등)에서 폭발해야하는 "타임 스탬프"필드 (밀리 초 단위)가 들어 있습니다. 데이터를 푸시 할 때 필터를 사용하여 루비 코드를 통해 타임 스탬프를 쉽게 파헤칠 수 있습니다. 예 :필터의 새 필드에 유형을 할당합니다.

<filter *> 
    @type record_transformer 
    enable_ruby 
    <record> 
    year ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%Y")} 
    monthnumber ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-m")} 
    monthname ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%B")} 
    daynumber ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-d")} 
    dayname ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%A")} 
    hour ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-k")} 
    minutes ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-M")} 
    seconds ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-S")} 
    </record> 
</filter> 

내 문제는 거 야 JSON에 통합되어 새로운 필드, 문자열 유형이 할당되는 동안 나는 중 일부는 엄격하게 (년, monthnumber, daynumber, 등, 예를 들어) 정수를 필요에 대한 . 이 필드가 정수로 추가되어야한다고 fluentd에게 말할 수있는 방법이 있습니까?

나는 시도했다 :

year ${Integer(Time.at(Integer(record['timestamp'])/1000.0).strftime("%Y"))} 

했지만 작동하지 않았다.

답변

0

documentation here에 따르면 모든 필드에 대해 Ruby 코드 내에 정의 된 유형을 할당하는 auto_typecast true 옵션을 사용할 수 있습니다.

관련 문제