资讯专栏INFORMATION COLUMN

5分钟,通过Microsoft Flow管道磁带应用程序分析

yunhao / 3098人阅读

摘要:分钟,通过管道磁带应用程序分析现在,让我告诉你为什么这个前言本不是一个好主意,因为它不是。此外,没有多少人会使用该应用程序。目前我有两种类型的分析用于应用程序启动时发送的分析,以及错误用于发生错误时发送的分析。

5分钟,通过Microsoft Flow管道磁带应用程序分析

现在,让我告诉你为什么这个前言本不是一个好主意,因为它不是。

对于我非常具体的用例,我想跟踪我的桌面(VB.NET ......我知道,我正在学习C#)应用程序是在客户端计算机上启动的,以及在使用过程中发生的任何错误。我不需要任何重要的分析,而且我没有能力构建RESTful API端点来接收分析(企业网络等)。此外,没有多少人会使用该应用程序。

理想情况下,可以构建一个可以使用Django,RoR或任何其他Web框架处理这些请求的API。它真的是要走的路,因为它更加灵活,你可以提供大量的资源,而且真的......这是一个漂亮的管道胶带,超强力的解决方案。

另一方面,我需要一个快速而肮脏的解决方案来测试我的概念证明,并且没有足够的资源来设置Web服务器。所以,不用多说,我的解决方案!

首先,使用“ 收到HTTP请求时”触发器创建新流。

列表中的第一个!

您可以为流指定所需的任何JSON模式。目前,我有以下架构:

datetime  - 这个应该是相对不言自明的。
type  - 目前我有两种类型的分析:boot  -  用于应用程序启动时发送的分析,以及错误  - 用于发生错误时发送的分析。
error_message  - 也很明显不言自明。
error_value  - 发生错误的堆栈跟踪。
application_version  - 再次,是的。
ip  - 实际上用于操作系统版本(我需要更改它,我知道)
guid  - 应用程序生成的通用标识符(可以轻松跟踪有多少用户发送分析)

{
  "datetime": "3/28/2019 9:16:58PM",
  "type": "boot",
  "error_message": "",
  "error_value": "",
  "application_version": "1.1.0.0",
  "ip": "Microsoft Windows NT 6.1.7601 Service Pack 1",
  "guid": "bc6a61af-5ddf-4cb3-a9dc-b734b4c93957"
}

我的示例有效负载,注意我不可思议的懒惰,没有将ip更新为相关的名称,如版本。
您可以快速将样本JSON有效负载放在一起并将其提供给Flow触发器。它会生成它自己的架构来处理它,它有多整洁!

转储示例JSON有效内容后,您的流应该是什么样子。(注意:在保存项目之前,不会填写HTTP POST URL)

现在,所有要做的就是将数据放入您想要使用的任何存储介质中!Flow具有Postgres,MySQL,SQL Server,一堆Azure内容的连接器,甚至更多。您甚至可以使用本地数据网关将本地SQL Server实例连接到流!(https://docs.microsoft.com/en-us/power-bi/service-gateway-onprem)。

为了这个例子,我创建了一个SharePoint列表来快速存储数据。但严肃地说,这些数据应存储在某种适当的数据库中。

SharePoint列表的示例模式。不要使用SharePoint,它绝对不是存储这些数据的正确方法!

将流量连接到您选择的数据存储也非常容易。只需从列表中选择它,您就可以神奇地显示示例模式中的所有JSON对象,以便将它们添加进来!

非常简单!

我还使流程在成功接收请求后返回HTTP状态代码200。它位于数据存储的并行分支上。您可以让它返回您想要的任何内容,但是我保持简单,因为应用程序确实不需要从服务器获取任何数据。

返回... .Success的HTTP状态代码200!

所以,在你完成所有这些之后,你应该准备好节省流量。这将生成可用于POST到流的URL。如果提交的JSON模式与提供的样本有效负载不匹配,则流程甚至会返回4XX状态代码,以便让您知道出现问题!如果您已经按照这个快速教程进行操作,那么您的流程应该类似于此(除非没有SharePoint!):

希望你的流程与此非常相似!

您现在可以启动您喜欢的编程语言,或Postman来测试API端点!Postman非常方便您测试您的新奇,管道胶带的想法是否有效。只需复制并粘贴保存流时生成的HTTP POST URL,然后将示例模式粘贴到请求正文中,如下所示:

包含我的样本有效负载的POST请求 服务器响应HTTP状态码200!成功!

如果您查看存储数据的任何位置,您应该会看到一个包含您发送到服务器的数据的新条目!

双重成功!有用!

您还可以实时测试流量,并调查早期弹出的任何问题。只需按下右上角的测试按钮,然后使用Postman发送POST。

好哇!

就是这样。管道胶带分析在5分钟以内!你也可以使用Flow做更多的事情。您可以在其中添加一些if语句来分隔不同类型的分析并将它们存储在不同的表中,或者在发出特定类型的请求时将通知发送到您的电子邮件。天空是极限!

但是要警惕这种方法的缺陷。它绝对不是为大量数据而设计的,我不确定该URL是否是100%静态的。无论哪种方式,只要您认识到陷阱,这对于一些简单的分析来说就是一个简单的解决方案。

示例代码
下面是VB和Python中用于项目的一些示例代码!

快乐编码:)

Public Class ApplicationTracking
    Public Sub New()
    "Do nothing, I"m sure you could do something neat here :)
    End Sub

    Public Async Function Post(Optional callType As String = "boot", Optional errorMsg As String = "", Optional errorVal As String = "") As Task(Of Net.HttpStatusCode)
        "Generates JSON POST string
        Dim url As String = "YOUR MICROSOFT FLOW URL HERE"
        Dim postData As String = """datetime"": ""{0}"", ""type"": ""{1}"", ""error_message"": ""{2}"", ""error_value"": ""{3}"", ""application_version"": ""{4}"", ""ip"": ""{5}"", ""guid"": ""{6}"""
        postData = String.Format(postData, DateTime.Now.ToString(), "boot", errorMsg, errorVal, "1.1.0.0", Environment.OSVersion, My.Settings.Guid)
        postData = "{" & postData & "}"
       
        "Generates Request content w/ JSON string
        Dim content As New Net.Http.StringContent(postData, Text.Encoding.UTF8, "application/json")
        content.Headers.ContentType = New Net.Http.Headers.MediaTypeHeaderValue("application/json")

        "Sends the POST and returns the HTTP Status Code
        Using client As New System.Net.Http.HttpClient
            Dim r As Net.Http.HttpResponseMessage = Await client.PostAsync(url, content)
            Return r.StatusCode
        End Using
    End Function
End Class

用于跟踪的VB.NET类(需要引用System.Web.Extensions)

import requests
import datetime as dt
import platform

class AppAnalytics:
    def __init__(self):
        #Nothing at the moment :)
        pass

    def post(self, guid, post_type="boot", error_message="", error_value="", app_version="1.1.0.0"):
        payload = {
            "datetime": dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            "type": post_type,
            "error_message": error_message,
            "error_value": error_value,
            "application_version": app_version,
            "ip": platform.platform(),
            "guid": str(guid)
        }
        flow_url = "YOUR FLOW URL HERE"
        #Posts the payload to the url, requests automatically encodes the dictionary :)
        r = requests.post(flow_url, json=payload)
        #Returns the HTTP Status Code (You can use this to check it sent the data correctly)
        return r.status_code

用于跟踪的Python类

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7132.html

相关文章

  • 5分钟通过Microsoft Flow管道磁带应用程序分析

    摘要:分钟,通过管道磁带应用程序分析现在,让我告诉你为什么这个前言本不是一个好主意,因为它不是。此外,没有多少人会使用该应用程序。目前我有两种类型的分析用于应用程序启动时发送的分析,以及错误用于发生错误时发送的分析。5分钟,通过Microsoft Flow管道磁带应用程序分析 现在,让我告诉你为什么这个前言本不是一个好主意,因为它不是。 对于我非常具体的用例,我想跟踪我的桌面(...

    netmou 评论0 收藏0
  • 如何使用广域网数据加速层备份到云端

    摘要:如何使用数据加速层软件定义的广域网备份到云端,以及人工智能,都是这个城市的话题,但它们在快速云备份和恢复方面有其局限性。因此,组织可以使用带有广域网数据加速覆盖的广域网来关注服务的连续性,而不必处理灾难恢复。如何使用WAN数据加速层tweet(tweet)软件定义的广域网(sd-wans)备份到云端,以及人工智能,都是这个城市的话题,但它们在快速云备份和恢复方面有其局限性。然而,在sd-wa...

    tinna 评论0 收藏0
  • Node.js 指南(流中的背压)

    摘要:在数据缓冲区已超过或写入队列当前正忙的任何情况下,将返回。当返回值时,背压系统启动,它会暂停传入的流发送任何数据,并等待消费者再次准备就绪,清空数据缓冲区后,将发出事件并恢复传入的数据流。 流中的背压 在数据处理过程中会出现一个叫做背压的常见问题,它描述了数据传输过程中缓冲区后面数据的累积,当传输的接收端具有复杂的操作时,或者由于某种原因速度较慢时,来自传入源的数据就有累积的趋势,就像...

    Tony 评论0 收藏0
  • 云是下一件事吗?

    摘要:云是长期数据保留的下一个目标吗看看中的关键供应商,对于这个时代的任何组织来说,数据是如何对业务需求和运营至关重要的,这是一个现实。一致性一致性允许您利用云和磁带来根据组织的要求归档数据。云是长期数据保留的下一个目标吗?看看spacetweet中的关键供应商,对于这个时代的任何组织来说,数据是如何对业务需求和运营至关重要的,这是一个现实。Be it Education,Finance,Heal...

    lk20150415 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<