Я новичок в 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?
Я использую Java. Запуск команды оболочки на каждом экземпляре EC2 - хороший способ сделать это?
Делать это через Lambda - не идеально. В идеале у вас должен быть какой-то агент, работающий на каждом сервере, всегда сообщающий CloudWatch такие вещи, как использование памяти и диска.
Прогресс @MarkB обновлен
Зачем вам нужно интегрировать Python со скриптом mon-put-instance-data.pl? Что именно вы пытаетесь решить, чего еще не предлагает mon-put-instance-data.pl?
@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.
Для этого вам действительно не нужна Lambda, просто запланируйте задания cron на каждом сервере.
@MarkB Да, но все же нужен способ вручную определить пути монтирования томов EBS, подключенных к экземпляру EC2, и я считаю, что планирование с помощью Lambda может быть лучше, если мы добавим новый экземпляр с заданным тегом.





Я считаю, что использование агент облачных часов - намного лучший вариант.
Также вы можете определить свои собственные метрики (например, доступное дисковое пространство).
Но разве для этого не потребуется устанавливать агент на каждом экземпляре?
@ ayushrocker92 действительно .. с другой стороны, вы можете создать свой собственный образ с уже предустановленным агентом.
Но предположим, что у меня уже запущено 50 экземпляров с тем же тегом?
@ ayushrocker92 Я бы порекомендовал использовать инструмент автоматизации, такой как Ansible, он может одновременно настроить 50 серверов. Я имею в виду - вы все еще можете вызвать операцию DescribeInstance (либо CLI, либо API) и проанализировать теги, однако я считаю, что наличие агента - гораздо более надежный способ достижения цели.
Связанный вами агент CloudWatch предназначен для публикации журналов в CloudWatch Logs, а не показателей. Вопрос в метриках публикации.
@MarkB, вы правы, я остаюсь исправленным, но он тоже мог бы найти в Google лучший ресурс docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/…, но основная идея остается :)
На каком языке программирования вы пишете функцию AWS Lambda? Вы должны использовать AWS SDK для любого языка программирования, который вы выберете для запроса экземпляра EC2 с определенным тегом.