Метрики CloudWatch для IOPS тома, пропускной способности тома (МиБ / с) и сети (Гбит / с) - PullRequest
0 голосов
/ 28 марта 2020

Мне пришлось устранить неполадки в одном приложении на AWS, и было непросто использовать все графики метрик CloudWatch для интерпретации состояния среды, поэтому я решил поделиться своим опытом здесь.

CloudWatch дает нам метрики для CPU, Память *, Диск и Сеть.

* для получения метрик памяти, необходимых для установки агента CloudWatch.

Процессор и память дают нам метри c в процентах, что ясно и прямолинейно интерпретировать. Но с диском и сетью не все так просто, например, я хотел бы проверить IOPS и пропускную способность (МиБ / с) для моих томов и сети (Гбит / с).

Мне нужны были эти значения, потому что AWS определяет пределы EBS как IOPS и пропускная способность (МБ / с) и ограничение сети экземпляра как Гбит / с.

1 Ответ

0 голосов
/ 28 марта 2020

Всего IOPS
Объем EBS дает нам метрики VolumeReadOps и VolumeWriteOps. Позвольте мне процитировать AWS документацию.

VolumeReadOps - Общее количество операций чтения за указанный период времени.
Для вычисления среднего числа операций чтения в секунду (чтение IOPS) для период, разделите общее количество операций чтения за период на количество секунд в этом периоде.

VolumeWriteOps - общее количество операций записи за указанный период времени.
Чтобы вычислить среднее операций записи в секунду (запись операций ввода-вывода в секунду) за период, разделите общее количество операций записи за период на количество секунд в этом периоде.

Ссылка: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cloudwatch_ebs.html

Чтобы получить общий IOPS, нам нужно (VolumeReadOps + VolumeWriteOps) / SecondsInPeriod.
К счастью, CloudWatch поможет нам с Expression. Используйте выражение ниже, функция PERIOD является нашим другом здесь.

m1 = VolumeWriteOps - Sum
m2 = VolumeReadOps - Sum
Expression: (m1+m2)/PERIOD(m1)

Ссылка: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html


Общая пропускная способность ( МиБ / с)
Объем EBS дает нам метрики VolumeReadBytes и VolumeWriteBytes. Позвольте мне процитировать AWS документацию.

VolumeReadBytes - Предоставляет информацию об операциях чтения за указанный период времени. Sum statisti c сообщает об общем количестве байтов, переданных за период.

VolumeWriteBytes - Предоставляет информацию об операциях записи за указанный период времени. Sum statisti c сообщает об общем количестве байтов, переданных за период.

Обе метрики дают нам значение в bytes, но мы хотим, чтобы они были в MiB, поэтому преобразовать нам нужно разделить на 1048576, что является результатом 1024 * 1024. Позвольте мне объяснить подробнее.

1024 bytes = 1 KiB
1024 KiB = 1 MiB

Чтобы получить общую пропускную способность в MiB/s, нам нужно ((VolumeReadBytes + VolumeWriteBytes) / 1048576) / SecondsInPeriod.
Воспользуйтесь приведенным ниже выражением, функция PERIOD является нашим другом здесь.

m1 = VolumeWriteBytes - Sum
m2 = VolumeReadBytes - Sum
Expression: ((m1+m2)/1048576)/PERIOD(m1)

Общая сеть (Гбит / с)
Экземпляр EC2 дает нам метрики NetworkIn и NetworkOut. Позвольте мне процитировать AWS документацию.

NetworkIn - Количество байтов, полученных экземпляром на всех сетевых интерфейсах. Этот показатель c определяет объем входящего сетевого трафика c для одного экземпляра.
Указанное число - это количество байтов, полученных за период. Если вы используете базовый c (пятиминутный) мониторинг, вы можете разделить это число на 300, чтобы найти байт / секунду. Если у вас есть подробный (за одну минуту) мониторинг, разделите его на 60.

NetworkOut - количество байтов, отправленных экземпляром на все сетевые интерфейсы. Этот показатель c определяет объем исходящего сетевого трафика c из одного экземпляра.
Указанное число - это количество байтов, отправленных за период. Если вы используете basi c (пятиминутный) мониторинг, вы можете разделить это число на 300, чтобы найти байт / секунду. Если у вас есть подробный (за одну минуту) мониторинг, разделите его на 60.

Ссылка: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html

Обе метрики дают нам значение в bytes per period, но мы хотим, чтобы они были в gigabits / second.
Для преобразования из "периода" в "секунду" нам просто нужно разделить на 300 (так как я использую стандартный мониторинг).

Для преобразования из bytes в gigabits нам нужно разделить на 0.008, что является результатом (1000 / 1000 / 1000) * 8. Позвольте мне объяснить подробно.

1000 bits = 1 kilobits
1000 kilobits = 1 megabits
1000 megabits = 1 gigabits
1 byte = 8 bits

Чтобы получить общую сеть в Gbps, нам нужно ((NetworkIn + NetworkOut) / 300) / 0.008.

m1 = NetworkIn - Sum
m2 = NetworkOut - Sum
Expression: ((m1+m2)/300)/0.008
...