用于监视边缘模块运行状况的 Azure 函数
Azure Function For Monitoring Edge Module Health
-
health-monitoring
-
azure-active-directory
-
azure-application-insights
-
azure-functions
-
azure-functions-core-tools
我想创建一个 azure 函数来监视 iothub 中我的边缘模块的运行状况。通过检索模块的孪生属性,我将能够做到这一点。
事实上,我有一个 C# 代码,它给出了期望的结果。但我对 azure 函数的概念还很陌生,我一直在研究如何使用它们。
以下是我用来检索模块孪生属性的代码:
public class TwinSample
{
private ModuleClient _moduleClient;
public TwinSample(ModuleClient moduleClient)
{
_moduleClient = moduleClient ?? throw new ArgumentNullException(nameof(moduleClient));
}
public async Task<string> RunSampleAsync()
{
Console.WriteLine("Retrieving twin...");
Twin twin = await _moduleClient.GetTwinAsync().ConfigureAwait(false);
Console.WriteLine("\tInitial twin value received:");
Console.WriteLine($"\t{twin.ToJson()}");
return twin.ToJson();
}
}
public static void Main(string[] args)
{
if (string.IsNullOrEmpty(s_moduleConnectionString) && args.Length > 0)
{
s_moduleConnectionString = args[0];
}
ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(s_moduleConnectionString, s_transportType);
var sample = new TwinSample(moduleClient);
Sample.RunSampleAsync().GetAwaiter().GetResult();
Console.ReadLine();
}
任何人都可以向我解释如何在 azure 函数中实现相同的功能吗?
谢谢。
这取决于您要使用哪个触发器(运行 您的函数的条件)。这是基于定时器的函数的示例:
public static class MyApp
{
[FunctionName("TimerTriggerCSharp")]
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer)
{
var moduleConnectionString = Environment.GetEnvironmentVariable("ModuleConnectionString", EnvironmentVariableTarget.Process);
var transportType = Environment.GetEnvironmentVariable("TransportType", EnvironmentVariableTarget.Process);
ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(moduleConnectionString, transportType);
var sample = new TwinSample(moduleClient);
await sample.RunSampleAsync();
}
}
TwinSample
的定义可以从您的原始代码中重复使用。
您需要在 Azure Functions 的应用程序设置中设置 ModuleConnectionString
和 TransportType
的值(例如通过门户)。
P.S。欢迎来到堆栈溢出。您的问题对于本网站的标准来说有点宽泛,因为它只是询问 "how do I do this" 而不是给出您已经尝试过的 code/approach 。下次,请仔细阅读 Azure Functions 的入门示例,并在提问之前尝试将代码应用于它们。
health-monitoring
azure-active-directory
azure-application-insights
azure-functions
azure-functions-core-tools
我想创建一个 azure 函数来监视 iothub 中我的边缘模块的运行状况。通过检索模块的孪生属性,我将能够做到这一点。 事实上,我有一个 C# 代码,它给出了期望的结果。但我对 azure 函数的概念还很陌生,我一直在研究如何使用它们。 以下是我用来检索模块孪生属性的代码:
public class TwinSample
{
private ModuleClient _moduleClient;
public TwinSample(ModuleClient moduleClient)
{
_moduleClient = moduleClient ?? throw new ArgumentNullException(nameof(moduleClient));
}
public async Task<string> RunSampleAsync()
{
Console.WriteLine("Retrieving twin...");
Twin twin = await _moduleClient.GetTwinAsync().ConfigureAwait(false);
Console.WriteLine("\tInitial twin value received:");
Console.WriteLine($"\t{twin.ToJson()}");
return twin.ToJson();
}
}
public static void Main(string[] args)
{
if (string.IsNullOrEmpty(s_moduleConnectionString) && args.Length > 0)
{
s_moduleConnectionString = args[0];
}
ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(s_moduleConnectionString, s_transportType);
var sample = new TwinSample(moduleClient);
Sample.RunSampleAsync().GetAwaiter().GetResult();
Console.ReadLine();
}
任何人都可以向我解释如何在 azure 函数中实现相同的功能吗?
谢谢。
这取决于您要使用哪个触发器(运行 您的函数的条件)。这是基于定时器的函数的示例:
public static class MyApp
{
[FunctionName("TimerTriggerCSharp")]
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer)
{
var moduleConnectionString = Environment.GetEnvironmentVariable("ModuleConnectionString", EnvironmentVariableTarget.Process);
var transportType = Environment.GetEnvironmentVariable("TransportType", EnvironmentVariableTarget.Process);
ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(moduleConnectionString, transportType);
var sample = new TwinSample(moduleClient);
await sample.RunSampleAsync();
}
}
TwinSample
的定义可以从您的原始代码中重复使用。
您需要在 Azure Functions 的应用程序设置中设置 ModuleConnectionString
和 TransportType
的值(例如通过门户)。
P.S。欢迎来到堆栈溢出。您的问题对于本网站的标准来说有点宽泛,因为它只是询问 "how do I do this" 而不是给出您已经尝试过的 code/approach 。下次,请仔细阅读 Azure Functions 的入门示例,并在提问之前尝试将代码应用于它们。