#azure #azure-functions #azure-application-insights #azure-monitoring
#azure #azure-функции #azure-application-insights #azure-мониторинг
Вопрос:
У меня есть функция запуска таймера. Она выполняется каждую минуту, но я не вижу никаких журналов в разделе монитора на портале Azure.
Однако, когда я нажимаю «Выполнить запрос в 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_RoleName
, отличается от установленного ITelemetryInitializer
. Если я обновлю запрос, чтобы использовать ’emailpuller’, он возвращает информацию о выполнениях
Комментарии:
1. Я пытался, но не воспроизвел вашу проблему. можете ли вы предоставить дополнительную информацию? Код вашего функционального приложения, function.json, host.json и т.д…
2. Может быть, это потому, что вы не изменили CloudRoleName? Возможно, этот монитор использует тот же запрос, что и его отображение, когда я нажимаю Выполнить запрос в AppInsights — ОН ничего не возвращает, если я не исправлю в нем CloudRoleName.
3. @PiotrPerak, не могли бы вы, пожалуйста, сообщить нам, как вы регистрируете инициализатор телеметрии? насколько я знаю, существует связанная с этим ошибка, которая не может ее зарегистрировать. Если мы это знаем, нам будет легко воспроизвести проблему и найти первопричину.
Ответ №1:
Ваше предположение верно. Пользовательский интерфейс монитора используется the default CloudRoleName
для запроса журналов.
Легко найти основную причину. Шаги следующие, как показано ниже:
1.Перейдите на портал Azure -> ваша функция Azure -> Монитор -> нажмите клавишу F12, чтобы открыть инструмент разработки браузера.
2. затем нажмите Refresh
кнопку -> затем в инструменте разработки выберите api -> затем в Request Payload
, вы можете видеть, что этот api использует значение по умолчанию CloudRoleName
для запроса журналов.
Вот скриншот:
Это может быть ошибкой, вы можете вызвать проблему в github функции Azure.
Комментарии:
1. Я действительно создал ошибку, хотя я сомневаюсь, что эта служба будет иметь доступ к моему пользовательскому имени облачной роли — github.com/Azure/Azure-Functions/issues/1755