Сбор метрики EBS с использованием Lambda

Я новичок в AWS. У нас есть пример использования, когда нам периодически нужно отслеживать объемы EBS на предмет использования диска и публиковать пользовательские метрики в cloudwatch.

Чтобы узнать объем использования диска в блоке ec2, мы можем запустить команду df -h. В моей лямбде мне дается тег, а затем из этого тега я отслеживаю EBS экземпляров EC2, имеющих этот тег.

Я проводил исследование и нашел эту статью запускать команды оболочки на EC2. Но как мне перечислить экземпляры EC2, имеющие определенный тег, а затем запустить эта команда df -h на них. Также есть лучший способ контролировать использование диска?

Обновлено: мне удалось запустить сценарий cloudwatch как

./mon-put-instance-data.pl --disk-space-util --disk-path=/ebs1 --disk-path=/ --disk-space-units=Kilobytes

и получите данные об использовании диска для вышеуказанных томов, смонтированных на / ebs1 и /

Теперь я планирую использовать скрипт python, чтобы программно получить все смонтированные EBS, чтобы заменить значения --disk-path.

Как это сделать в EC2 через Python?

На каком языке программирования вы пишете функцию AWS Lambda? Вы должны использовать AWS SDK для любого языка программирования, который вы выберете для запроса экземпляра EC2 с определенным тегом.

Mark B 02.08.2018 16:54

Я использую Java. Запуск команды оболочки на каждом экземпляре EC2 - хороший способ сделать это?

ayushrocker92 02.08.2018 18:50

Делать это через Lambda - не идеально. В идеале у вас должен быть какой-то агент, работающий на каждом сервере, всегда сообщающий CloudWatch такие вещи, как использование памяти и диска.

Mark B 02.08.2018 19:20

Прогресс @MarkB обновлен

ayushrocker92 06.08.2018 09:19

Зачем вам нужно интегрировать Python со скриптом mon-put-instance-data.pl? Что именно вы пытаетесь решить, чего еще не предлагает mon-put-instance-data.pl?

Mark B 06.08.2018 15:02

@MarkB Мне нужно выяснить смонтированные пути томов EBS для замены в mon-put-instance-data.pl. Таким образом, в основном мы пытаемся периодически контролировать тома EBS на предмет использования диска для группы экземпляров EC2 с помощью заданного тега. может запланировать сценарий mon-put-instance-data напрямую или через Lambda, где каждая команда mon-put-instance-data запускается на отдельных экземплярах EC2, имеющих определенный тег. Я просто думаю о развертывании сценария python (запускаемого Lambda) на каждом экземпляре EC2, который определяет пути монтирования каждого тома EBS на данном EC2, а затем запускает сценарий mon-put-instance-data.pl.

ayushrocker92 06.08.2018 15:28

Для этого вам действительно не нужна Lambda, просто запланируйте задания cron на каждом сервере.

Mark B 06.08.2018 15:54

@MarkB Да, но все же нужен способ вручную определить пути монтирования томов EBS, подключенных к экземпляру EC2, и я считаю, что планирование с помощью Lambda может быть лучше, если мы добавим новый экземпляр с заданным тегом.

ayushrocker92 06.08.2018 19:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
342
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что использование агент облачных часов - намного лучший вариант.

Также вы можете определить свои собственные метрики (например, доступное дисковое пространство).

Но разве для этого не потребуется устанавливать агент на каждом экземпляре?

ayushrocker92 02.08.2018 10:45

@ ayushrocker92 действительно .. с другой стороны, вы можете создать свой собственный образ с уже предустановленным агентом.

gusto2 02.08.2018 10:50

Но предположим, что у меня уже запущено 50 экземпляров с тем же тегом?

ayushrocker92 02.08.2018 10:54

@ ayushrocker92 Я бы порекомендовал использовать инструмент автоматизации, такой как Ansible, он может одновременно настроить 50 серверов. Я имею в виду - вы все еще можете вызвать операцию DescribeInstance (либо CLI, либо API) и проанализировать теги, однако я считаю, что наличие агента - гораздо более надежный способ достижения цели.

gusto2 02.08.2018 11:02

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

Mark B 02.08.2018 16:52

@MarkB, вы правы, я остаюсь исправленным, но он тоже мог бы найти в Google лучший ресурс docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/…, но основная идея остается :)

gusto2 02.08.2018 17:06

Другие вопросы по теме