azure - POST JSON 将事件记录到 Application Insights 中

标签 azure azure-application-insights

我需要编写一个 PowerShell 脚本 shell 来将条目记录到 App Insights 中。我找到了这个post这很有用,但我很难向除了那里使用的领域之外的不同领域写作。例如,我正在尝试填充消息字段。我不知道 JSON 中的字段名称,也不知道它应该去哪里。正如你在这个例子中看到的,我尝试将它放置在任何地方,但仍然不起作用。我尝试搜索他们的 REST API 文档,但仍然找不到 JSON 的规范。 有人可以帮忙吗?

[{
    "name":  "Microsoft.ApplicationInsights.Event",
    "time":  "2018-09-20T16:57:16.1771869Z",
    "iKey":  "1234",
    "message":  "This is a message",
    "tags":  {
                 "ai.operation.name":  "Name",
                 "ai.user.id":  "userId",
                 "ai.cloud.roleInstance":  "Machine 1"
             },
    "data":  {
                 "baseType":  "EventData",
                 "message":  "message1",
                 "baseData":  {
                                  "name":  "Event from my service",
                                  "message":  "message2",
                                  "properties":  {
                                                     "x":  "value x",
                                                     "y":  "value y",
                                                     "z":  "value z"
                                                 }
                              }
             }
}]

最佳答案

我们最近一直在尝试实现同样的目标,但在网络上也没有找到好的说明,因此在此发布我们的发现。

1。 API端点

1.1 身份验证

您将需要仪器密​​钥 - 请参阅 How to get Azure Instrumentation Key了解详情。该 key 必须存储在消息负载的“iKey”属性中。

1.2 请求

总的来说,似乎有 4 种不同的消息类型(由“baseType”属性定义)可以设置。所有这些都需要通过 POST 发送到同一端点

POST https://dc.services.visualstudio.com/v2/track

[ { MESSAGE1 }, { MESSAGE2 }, ... ]

每条消息的格式取决于其类型。不需要身份验证 header - 消息的“iKey”字段用作身份验证 key 。

1.3 响应

如果成功则发送以下响应

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{ 
    "itemsReceived" : 1,
    "itemsAccepted" : 1, 
    "errors":[]
}

其中“itemsAccepted”属性将指示 Application Insights 接受的记录数。

2。消息格式

数组中的每条消息都必须遵循以下 4 种可能的 JSON 格式之一。

2.1 “EventData”(“CUSTOM EVENT”)消息格式

此事件在 Application Insights 中显示为“自定义事件”。必须使用以下有效负载:

{
   "name": "Microsoft.ApplicationInsights.Event",
   "time": "2015-05-21T16:43:14.4670675-06:00",
   "iKey": "[MyInstrumentationKey]",
   "tags": {
   },
   "data": {
      "baseType": "EventData",
      "baseData": {
         "ver": 2,
         "name": "SampleEvent",
         "properties": {
            "x": "value x",
            "y": "value y",
            "z": "value z"
         }
      }
   }
}

2.2 “MessageData”(“TRACE”)消息格式

此事件在 Application Insights 中显示为“TRACE”。必须使用以下有效负载:

{
   "name": "Microsoft.ApplicationInsights.Event",
   "time": "2021-02-25T21:35:45.0000000Z",
   "iKey": "[MyInstrumentationKey]",
   "tags":{
   },
   "data": {
      "baseType": "MessageData",
      "baseData": {
         "ver": 2,
         "message": "Simple Trace Log Message",
         "severityLevel": 2,
         "properties": {
            "x": "value x",
            "y": "value y",
            "z": "value z"
         }
      }
   }
}

严重级别含义

level 0 = "Verbose"
level 1 = "Information"
level 2 = "Warning"
level 3 = "Error"
level 4 = "Critical"

2.3 “MetricData”消息格式

必须使用以下有效负载:

{
   "name": "Microsoft.ApplicationInsights.Event",
   "time": "2021-02-25T21:35:45.0000000Z",
   "iKey": "[MyInstrumentationKey]",
   "tags": {
   },
   "data": {
      "baseType": "MetricData",
      "baseData": {
         "ver": 2,
         "metrics": [
            {
               "name": "BasicMetric",
               "kind": "Measurement",
               "value": 42
            }
         ],
         "properties": {
            "x": "value x",
            "y": "value y",
            "z": "value z"
         }
      }
   }
}

2.4 “ExceptionData”消息格式

必须使用以下有效负载:

{
   "name": "Microsoft.ApplicationInsights.Event",
   "time": "2021-02-25T21:35:45.0000000Z",
   "iKey": "[MyInstrumentationKey]",
   "tags": {
   },
   "data": {
      "baseType": "ExceptionData",
      "baseData": {
         "ver": 2,
         "handledAt": "UserCode",
         "properties": {
            "x": "value x",
            "y": "value y",
            "z": "value z"
         },
         "exceptions": [
            {
               "id": 26756241,
               "typeName": "System.Exception",
               "message": "Something bad has happened!",
               "hasFullStack": true,
               "parsedStack": [
                  {
                     "level": 0,
                     "method": "Console.Program.Main",
                     "assembly": "Console, Version=1.0",
                     "fileName": "/ApplicationInsights/Test.cs",
                     "line": 42
                  }
               ]
            }
         ]
      }
   }
}

关于azure - POST JSON 将事件记录到 Application Insights 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52432103/

相关文章:

azure - 为什么准备 Linux VM 部署的 SSL 证书时 'az vm secret format' 命令失败?

Azure Function 与事件中心输出绑定(bind)不起作用

node.js - Azure Web 聊天测试显示 "There was an error sending this message to your bot: HTTP status code Unauthorized"

azure - 在 Application Insights 中禁用环境的每周摘要电子邮件

java - Application Insights Log4j 按日志文件名筛选

azure - 如何在有条件的情况下从失败的管道事件重新运行 ADF?

.net - Azure Blob 存储成功请求在 Application Insights 中显示为失败请求

azure - Application Insights 是否跟踪引荐来源网址?

memory-leaks - Application Insights 在 Win2D 游戏中导致不必要的 GC

Azure Blob 获取存储使用面临 403 禁止错误的 http 请求获取所有 Blob