在模拟器iot边缘设备中测试Azure IotHub度量收集器



问题

用于Iot边缘设备的Azure IotHub度量收集器是我正在尝试实现的一个非常有趣的功能,尤其是通过IotMessage的选项2,因此发布带有度量数据的设备到云消息。所以,我阅读了关于这个主题的官方文档,从一开始我就被困在了架构中。

上下文

在现有的IotHub中,我已经有了一些边缘模块,所以我添加了metrics-collector模块,并按照文档中的建议设置了路由。模块启动正确,但无法从edgeHubedgeAgent获取日志(这是正常的,因为edgehubdev不会启动edgeAgent模块(。此外,当将9600端口暴露给本地端口时,我能够在localhost:9600/metrics端点中检索主机中的度量,所以我认为我可以在MetricsEndpointsCSV属性中设置它,但这没有帮助。

问题

你们是如何通过模拟器(本地(进行测试和端到端度量检索的?PS:我知道我仍然需要创建一些缺失的架构块(事件中心+功能应用程序(,但度量消息尚未到达iot-hub。

来自edgeHubDev的日志

metricsCollector       | [2021-11-08 14:47:03.044 INF] Starting periodic operation Scrape and Upload Metrics...
metricsCollector       | [2021-11-08 14:47:03.045 INF] Scraping endpoint http://127.0.0.1:9600/metrics
metricsCollector       | [2021-11-08 14:47:03.046 ERR] Error scraping endpoint http://127.0.0.1:9600/metrics - System.Net.Http.HttpRequestException: Connection refused
metricsCollector       |  ---> System.Net.Sockets.SocketException (111): Connection refused
metricsCollector       |    at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
metricsCollector       |    --- End of inner exception stack trace ---
metricsCollector       |    at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
metricsCollector       |    at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
metricsCollector       |    at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
metricsCollector       |    at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
metricsCollector       |    at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
metricsCollector       |    at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
metricsCollector       |    at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
metricsCollector       |    at Microsoft.Azure.Devices.Edge.Azure.Monitor.MetricsScraper.ScrapeEndpoint(String endpoint, CancellationToken cancellationToken) in /mnt/vss/_work/1/s/edge-modules/azure-monitor/src/MetricsScraper.cs:line 72

编辑有趣的事实:它在azure中有效,而在我的机器中无效=D

参考文献

文件:https://learn.microsoft.com/en-gb/azure/iot-edge/how-to-collect-and-transport-metrics?view=iotedge-2020-11&tabs=iothub#下一步

Azure示例:https://github.com/Azure-Samples/iotedge-logging-and-monitoring-solution

尝试在MetricsEndpointsCSV的度量收集器配置中设置以下值http://edgeHubDev:9600/metrics

最新更新