2017-06-13 25 views
0

我試圖從一個Arduino來應用洞察POST數據。現在,有效載荷需要time屬性,像這樣:解決方法應用見解開機自檢時屬性

{ 
    "time": "2017-06-02T07:55:29.585Z", 
    "iKey": "61c75aec-xxxx-xxxx-xxxx-xxxxxxxxx", 
    "name": "Microsoft.ApplicationInsights.61c75aecae11483ba126665023ea73be.Event", 
    "tags": { 
     "ai.device.id": "Arduino Uno", 
     ...blah... 
} 

這個小東西有沒有實時時鐘,所以我的時間戳將是非常drifty。我試着省略屬性,但在App見解API抱怨,不取數據 -

"message": "109: Field 'time' on type 'Envelope' is required 
but missing or empty. Expected: string, Actual: undefined" 

發送一個空time財產也不會削減它。

這兒有解決方法,只是告訴應用程式深入分析利用自身的時間戳對所接收的負載?

+0

我知道這是一個非常間接的變通,但可能你只需要使用一些基於網絡的時鐘來獲取當前的時間來這裏填充的?這完全取決於你在做什麼以及這個解決方案需要多堅實。物聯網時鐘上的時鐘是一個難題(與某些加密算法相同),因爲有時候會有一些限制! – Jaxidian

+0

的問題是,即使我實現了,我不能相信它,如果它決定向後走在NTP同步之間,聽起來很瘋狂,但時間上Arduinos是研究論文材料:)我寧願有另一端戳它。 – evilSnobu

+0

我建議將此作爲AI uservoice上的項目提交:https://feedback.azure.com/forums/357324-application-insights/filters/top,因爲我沒有看到任何內容。 (我是kindof驚訝的是,我們不自動填補這一領域,如果沒有指定,我可以假設,爲什麼我們可能不希望* *,但你應該提交無 - 無) –

回答

0

現在對於,是的,需要timestamp,沒有很好的解決方法,即Application Insights特有的。現在,您必須在允許的AI時間窗口(現在-48小時前)內使用一些有效日期。

如果你有一個不可靠的時鐘,並且你希望所有事件對於一個設備保持相對順序,你總是可以選擇一個開始時間戳,並且確保所有後續事件的時間晚於第一個事件(第一個時間戳+一些偏移量?),那麼至少如果確切的時間不是確切的事件序列是可靠的。

已在內部提出,可能是可能做到。我會更新這個線程,如果我得到任何進一步的細節。

0

此外,如果你可以發送任何時候,這將使AI接受它(2天回或1向前)您可以在分析查詢使用ingestion_time()方法。像this

requests | extend delta = (ingestion_time() - timestamp)/1s | summarize avg(delta), percentile(delta, 99) by bin(timestamp, 10m) | render areachart kind=unstacked