Что такое встроенные показатели Cloudwatch?

Что такое встроенные показатели Cloudwatch?

15 ноября 2022 г.

Цели

После прочтения статьи вам следует:

* ✅ Уметь различать Logs & Показатели

* ✅ Знайте, что и почему в показателях Cloudwatch Embedded

* ✅ Получите общее представление о том, что нужно для преобразования журналов в показатели в AWS

Контент

  • Введение
  • Что это?
  • Почему это важно
  • Поддерживаемая платформа
  • Пример: использование AWS Lambda
  • Клиентские библиотеки
  • Заключение

Введение

Если вы используете AWS, то, скорее всего, вы используете журналы AWS Cloudwatch для ведения журналов.

Журналы очень полезны для определенных событий в вашем коде между запросами.

Однако, если вы хотите получить высокоуровневую информацию, вам нужно рассматривать совокупность событий в определенный момент времени для системы, а не конкретное событие. Вот где вступают в действие показатели.

Теперь возникает вопрос: как перейти от журналов к метрикам?

Если вы используете AWS, этого можно легко добиться, используя встроенные метрики AWS Cloudwatch.

Суть в том, что это журналы, отформатированные в определенном формате, который AWS использует для преобразования этих журналов в показатели.

Давайте рассмотрим детали.

Что это?

Встроенные показатели AWS Cloudwatch — это просто журналы в определенном формате.

Он должен быть в допустимом формате JSON и содержать правильные данные, чтобы AWS мог преобразовать эти журналы в показатели.

Формат: x-amzn-logs-format: json/emf

Вот пример формата:

{
  "_aws": {
    "Timestamp": 1574109732004,
    "CloudWatchMetrics": [
      {
        "Namespace": "lambda-function-metrics",
        "Dimensions": [["functionVersion"]],
        "Metrics": [
          {
            "Name": "time",
            "Unit": "Milliseconds"
          }
        ]
      }
    ]
  },
  "functionVersion": "$LATEST",
  "time": 100,
  "requestId": "989ffbf8-9ace-4817-a57c-e4dd734019ee"
}

📝 Полезная ссылка:

Почему это важно

Вот несколько причин, по которым я считаю, что встроенные показатели AWS Cloudwatch важны.

Метрики нужны для действий

Вы переходите от журналов (конкретных событий) к высокоуровневой статистике (метрикам) и не можете улучшить или проанализировать то, чего не видите.

Эти показатели можно использовать для определения контрактов, таких как SLA, SLI и SLO.

Встроенные показатели AWS Cloudwatch значительно упрощают и упрощают этот процесс.

Отличный опыт разработчиков (DX)

Эта функция не является обязательной, то есть необязательной.

Если вы хотите «включить» его, вы просто форматируете свой журнал определенным образом.

Никаких трений, никаких лишних действий — это просто работает! На мой взгляд, это большая победа.

Перенесенная операционная ответственность

В этой конфигурации AWS берет на себя почти всю ответственность за эту функцию и инфраструктуру.

Это снижает операционную нагрузку, за которую несете ответственность вы или ваша команда.

Для меня это еще одна большая победа!

Поддерживаемые платформы

При использовании AWS Lambda дополнительная настройка не требуется, все просто работает.

Если вы используете AWS ECS или EKS, для его работы требуется агент cloudwatch.

* AWS Lambda — встроенные метрики Cloudwatch поддерживаются по умолчанию

* AWS ECS и EKS: требуется, чтобы агент CloudWatch отправлял встроенные метрики Cloudwatch

Пример — использование AWS Lambda

Вот пример того, как встроенные показатели AWS Cloudwatch работают с AWS Lambda. Опять же, это работает из коробки.

Sample AWS Architecture illustrating how Cloudwatch embedded metrics work

Этапы:

  1. Шлюз API получает запрос

2. Шлюз API вызывает псевдоним Lambda

3. Lambda обрабатывает событие

4. Журналы Lambda в журналы CloudWatch ⭐️

5. Журналы автоматически преобразуются в показатели Cloudwatch

<цитата>

Шаги 1–4 довольно типичны для настройки AWS Lambda, большая разница заключается в том, что при входе в определенный формат AWS подберет его и преобразует эти журналы в метрики.

На шаге 4 происходит волшебство!

Вы можете отформатировать эти журналы вручную или использовать клиентскую библиотеку, предоставленную AWS (рекомендуется).

Клиентские библиотеки

Чтобы упростить задачу, AWS предоставляет клиентские библиотеки для создания таких форматированных журналов.

Он предоставляет API, с помощью которого можно создавать форматированные журналы, которые приводят к желаемым показателям CloudWatch на основе предоставленных вами настроек.

Клиентские библиотеки:

Пример использования клиентской библиотеки с Node.js:

const { createMetricsLogger, Unit } = require("aws-embedded-metrics");

const sendMetrics = async () => {
  const metrics = createMetricsLogger();
  metrics.putDimensions({ Service: "Aggregator" });
  metrics.putMetric("ProcessingLatency", 100, Unit.Milliseconds);
  metrics.setProperty("RequestId", "422b1569-16f6-4a03-b8f0-fe3fd9b100f8");
  // ...
  await metrics.flush();
};

await sendMetrics();

Заключение

Итак, резюмируя:

* Показатели предоставляют высокоуровневую информацию, а журналы предоставляют подробные сведения о конкретных событиях.

* Встроенные показатели AWS Cloudwatch преобразуют ваши журналы AWS Cloudwatch в показатели AWS Cloudwatch.

* При использовании AWS Lambda встроенные метрики поддерживаются по умолчанию.

* При использовании AWS ECS & EKS, необходимо будет настроить агент cloudwatch.

* AWS предоставляет клиентские библиотеки, упрощающие управление результирующими встроенными показателями.

И это все. Надеюсь, это было вам полезно!

Если вы узнали что-то новое, поделитесь этой статьей с другом или коллегой 🙏❤️! (Спасибо!)


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE