Статьи

Взгляд изнутри на Microsoft Azure WebJobs

Запланированные задачи, пакеты и небольшие задания обработки исторически были сложны для построения, запуска и мониторинга. Microsoft Azure  WebJobs  пытается значительно упростить это для разработчиков: это просто фоновые задания, которые могут выполняться непрерывно или по расписанию.

Бесплатно и просто

Бесплатные и невероятно простые в создании и использовании веб-задания Azure — одна из самых любимых технологий группы агентов .NET в стеке Microsoft Azure. Для разработчиков некоторые из самых восхитительных аспектов WebJobs — это панели мониторинга и функции вызова, доступные прямо из коробки!

К инструментальным панелям WebJobs можно получить доступ через сайт kudu, связанный с вашим хост-сайтом WebJobs:

https: // [ваш-хост] .scm.azurewebsites.net / azurejobs / # / работа

Мы хотели контролировать наши WebJobs, чтобы лучше понять, что они делают. Мы хотели выяснить, например, были ли какие-либо проблемы или ошибки, и узнать, что может потребовать рефакторинга, чтобы сделать обработку наших очередей более эффективной.

Поэтому мы инструктировали вещи, которые были важны для нас, с помощью агента New Relic .NET. (См.  Вспомогательный код на GitHub .)

Как сделать то, что мы сделали

1.  Добавьте новое расширение сайта Relic на свой хост-сайт: см. Документацию в разделе « Установка с использованием расширения сайта с сайта SCM ».

site_extensions

2.  Получите свой лицензионный ключ (перейдите по  адресу https://rpm.newrelic.com/accounts/[accountId]  после входа в систему — лицензионный ключ появится справа).

экран настроек аккаунта лицензионный ключ

3.  В app.config WebJob добавьте следующее  appsetting:

<configuration> 
  <appSettings> 
    <add key="NewRelic.AppName" value="[replace_with_the_name_you_want_reported_to_new_relic]" /> 
    <add key="NewRelic.AgentEnabled" value="true" /> 
    <add key="NewRelic.LicenseKey" value="[replace_with_your_key]" /> 
  </appSettings> 
</configuration>

4.  Добавьте некоторые инструменты (например, чтобы помочь агенту найти то, что, по вашему мнению, важно контролировать).

5.  В WebJob добавьте папку и файл: newrelic\extensions[someuniquename].xml

6.  Убедитесь, что  Build action это так  Content.

7.  В файле добавьте свои инструменты.

Например, скажем, у вас  function.cs есть:

namespace WebJobs.Journals
{
  public class Functions
  {         
     public static void JournalOperations(parms...)
     {             
        new JobRunHandler<JobMessage>(parms...)                 
          .Run(parms..);
     }     
  } 
}

Содержимое файла инструментария XML будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?> 
<extension xmlns="urn:newrelic-extension">   
  <instrumentation>     
    <tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory">
      <match assemblyName="WebJobs.Journals" className="WebJobs.Journals.Functions">
        <exactMethodMatcher methodName="JournalOperations" />
      </match>
    </tracerFactory>   
  </instrumentation>
</extension>

8.  Наконец, перезагрузите хост-сайт.

Теперь мы дали себе рентгеновское зрение в наших WebJobs! Это позволяет разработчикам лучше понимать и настраивать свои приложения, одновременно обеспечивая видимость операций, чтобы убедиться, что наши веб-задания работоспособны и масштабируются соответствующим образом. Вы можете получить больше информации о том, как сделать это для себя и попробовать это сегодня,  зайдя на GitHub и получив код .