2016-11-22 115 views
1

我正在使用curl解析一些數據到InfluxDB。數據點是Netflow記錄,我試圖將Netflow時間戳轉換爲InfluxDB所需的精確格式。Gawk mktime()爲InfluxDB生成不正確的時間戳

我原來的時間戳的樣子:

2016-11-22 04:23:25.0 

我使用SED來代替 ' - ' 和 ':' 用空格:

sed 's/-/ /g' | \ 
sed 's/:/ /g' | \ 

導致:

2016 11 22 04 23 25.0 

我然後使用這些字段傳遞給gawk mktime()。這看起來會產生一個正確的時間戳,但是當我用Grafana查看原始記錄時,它們都顯示了1969年的時間戳。我確定有一些我可以忽略的明顯的東西?

回答

1
  1. 沒有理由使用桑達:

    $ echo '2016-11-22 04:23:25.0' | awk '{gsub(/[-:]/, FS); print mktime($0)}' 
    1479810205 
    
  2. 生成時間戳是正確的:

    $ date [email protected] 
    Tue, Nov 22, 2016 4:23:25 AM 
    
+0

我修改awk的語句來搭配你我沒有得到一個不同結果。我回過頭來回顧一下InfluxDB行協議文檔,發現時間戳比他們提供的示例短得多。我相信mktime()會生成一個秒精度的時間戳,而不是InfluxDB默認的納秒。我更新了我的curl語句來爲Influx API指定秒精度,這似乎解決了我的問題。 – Robert