Статьи

Мониторинг Amazon SQS с помощью AppDynamics

AppDynamics  недавно объявила  о поддержке приложений, работающих с расширенным набором сервисов от  Amazon Web Services  (AWS). Поскольку многие предприятия осуществляют миграцию или развертывание своих новых приложений в облаке AWS, важно иметь более глубокое понимание и контроль над приложениями и базовой инфраструктурой, чтобы гарантировать, что они могут обеспечить исключительный опыт конечного пользователя.

AppDynamics предлагает те же функции мониторинга, управления, автоматизированных процессов и аналитики для приложений, работающих в AWS, которые доступны для приложений, работающих на локальном компьютере. С  выпуском AppDynamics Summer ’15 Release приложения, развернутые на AWS, теперь легко оборудуются для обеспечения полной наглядности и управления расширенным набором сервисов AWS, включая  Amazon Simple Queue Service (Amazon SQS)Amazon Simple Storage Service (Amazon S3) и  Amazon DynamoDB .

В этом блоге я сосредоточусь на мониторинге приложений, использующих Amazon SQS. Согласно  веб-странице AWS , «Amazon SQS — это быстрый, надежный, масштабируемый, полностью управляемый сервис очереди сообщений. SQS упрощает и удешевляет разделение компонентов облачного приложения. Вы можете использовать SQS для передачи любого объема данных на любом уровне пропускной способности, не теряя сообщений и не требуя, чтобы другие службы были всегда доступны ».

Библиотека Amazon SQS Java Messaging, которая представляет собой интерфейс службы сообщений Java (JMS) к Amazon SQS, позволяет использовать Amazon SQS в приложениях, которые уже используют JMS.

Очереди сообщений в SQS могут создаваться либо вручную, либо через библиотеку сообщений Java SQS и  AWS Java SDK , а сообщения могут отправляться или приниматься в очереди различными способами для различных случаев использования.

Вот карта потока приложения в AppDynamics для примера приложения, использующего Amazon SQS, для следующих трех вариантов использования:

  • Базовая отправка / получение

  • Пакетная отправка / получение

  • Асинхронная отправка / получение

 

Неназванный-3.png

 

AppDynamics поддерживает все  точки выхода  для Amazon SQS из коробки. Каждая точка выхода обрабатывается точно так же, как JMS, .NET-сообщения и т. Д. Для всех случаев использования, описанных выше.

В настоящее время  точка входа  в Amazon SQS поддерживается только как часть продолжающейся транзакции. Например, если транзакция начинается с некоторого уровня «foo» и продолжается через выход через некоторую очередь SQS на нисходящий уровень, bar — транзакция на «баре» может продолжаться при соответствующей конфигурации. Пользователь должен указать файл конфигурации custom-interceptors.xml, чтобы применить специальный перехватчик точки входа SQS к данному методу и указать, где получить заголовок корреляции.

Мой коллега  Энтони Килман  поделился следующим примером на случай, если нижестоящее приложение пользователя обрабатывает сообщения, полученные из сообщения SQS:

public abstract class  ASQSConsumer extends ASQSActor {


   protected void processMessage(Message message) {

       log.info(”  Message”);

       log.info(“ MessageId: ” + message.getMessageId());

       log.info(“ ReceiptHandle: ” + message.getReceiptHandle());

       log.info(“ MD5OfBody: ” + message.getMD5OfBody());

       log.info(“ Body:       ” + message.getBody());

       for (Map.Entry<String, String> entry : message.getAttributes().entrySet()) {

           log.info(”  Attribute”);

           log.info(“ Name:  ” + entry.getKey());

           log.info(“ Value: ” + entry.getValue());

       }

       Map<String, MessageAttributeValue> messageAttributes = message.getMessageAttributes();

       log.info(“message attributes: ” + messageAttributes);

   }


}

Тогда конфигурация для продолжения транзакции будет выглядеть следующим образом:

<custom-interceptors>

<custom-interceptor>

   <interceptor-class-name>com.singularity.SQSEntryPoint</interceptor-class-name>

   <match-class type=”matches-class”>

       <name filter-type=”equals”>aws.sqs.test.ASQSConsumer</name>

   </match-class>

   <match-method>

       <name>processMessage</name>

   </match-method>

   <configuration type=”param” param-index=”0″ operation=”getter-chain” operation-config=”this”/>

</custom-interceptor>

</custom-interceptors>

Эта конфигурация приведет к снимку, подобному следующему:

 

snapshots_flow_map.png

 

Чтобы узнать больше о мониторинге производительности облачных приложений и облаке AWS, перейдите по  ссылке http://www.appdynamics.com/cloud/ .

Прочитайте наш бесплатный информационный документ «  Управление производительностью облачных приложений»