监控Azure功能

问题描述

我有计时器触发的功能。它每分钟执行一次,但是我在Azure Portal的“监视器”部分中看不到任何日志。

Monitor

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

App insights query

编辑: 这是我的启动代码

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”,它将返回执行信息

解决方法

您的猜测是正确的。 Monitor UI使用the default CloudRoleName查询日志。

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

1.Nav转到azure门户->您的azure功能->监视器->按F12打开浏览器的开发工具。

2。然后单击Refresh按钮->然后在Develop工具中,选择api->然后在Request Payload中,您可以看到此api使用默认的CloudRoleName查询日志。

这是屏幕截图:

enter image description here

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