【问题标题】:Monitoring Azure function监控 Azure 功能
【发布时间】:2021-01-01 16:14:07
【问题描述】:

我有定时器触发功能。它每分钟执行一次,但我在 Azure 门户的 Monitor 部分看不到任何日志。

但是,当我单击“在 Application Insights 中运行查询”并修复查询中的 cloudRoleName(默认情况下它设置为应用程序的名称,但我们将其更改为 ITelemetryInitializer)时,它会正确显示所有执行。

编辑: 这是我的启动代码

public class Startup : IWebJobsStartup
{
    public void Configure(IWebJobsBuilder builder)
    {
        builder.Services
            .AddSingleton<ITelemetryInitializer, CloudRoleNameInitializer>();

        // more registrations
    }

和 CloudRoleNameInitializer

 public class CloudRoleNameInitializer : ITelemetryInitializer
 {
    public void Initialize(ITelemetry telemetry)
    {
        telemetry.Context.Cloud.RoleName = "EmailPuller";
    }
 }

当我在 Application Insights 中单击运行查询时,生成的查询是

requests
| project timestamp, id, operation_Name, success, resultCode, duration, operation_Id, cloud_RoleName, invocationId=customDimensions['InvocationId']
| where timestamp > ago(30d)
| where cloud_RoleName =~ 'emailpuller-UNIQUE_ID_FROM_ARM_TEMPLATE' and operation_Name =~ 'OurOperationName'
| order by timestamp desc
| take 20

所以你可以看到cloud_RoleNameITelemetryInitializer 设置的不同。如果我更新查询以使用“emailpuller”,它会返回有关执行的信息

【问题讨论】:

  • 我试过但没有重现您的问题。你能提供更多信息吗?您的函数应用程序的代码,function.json,host.json 等...
  • 可能是因为您没有更改 CloudRoleName?当我在 AppInsights 上单击运行查询时,可能此监视器使用与其显示相同的查询 - 除非我在其中修复 CloudRoleName,否则它不会返回任何内容。
  • @PiotrPerak,您能否告诉我们您如何注册 TelemetryInitializer?据我所知,有一个相关的错误无法注册。如果我们知道这一点,就很容易重现问题并找到根本原因。

标签: azure azure-functions azure-application-insights azure-monitoring


【解决方案1】:

你的猜测是对的。 Monitor UI 使用the default CloudRoleName 查询日志。

很容易找到根本原因。具体步骤如下:

1.导航到azure门户->你的azure功能->监控->按F12打开浏览器的开发工具。

2.然后点击Refresh按钮->然后在开发工具中,选择api->然后在Request Payload,可以看到这个api使用默认的CloudRoleName查询日志。

截图如下:

这可能是一个错误,您可以在github of Azure function 中提出问题。

【讨论】:

猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 2022-06-20
  • 2016-09-21
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多