Установка агента мониторинга на несколько виртуальных машин одновременно

Мне нужно установить агент мониторинга на всех моих виртуальных машинах вычислительного движка, и мне интересно если это возможно сделать автоматически, используя какой-либо сценарий запуска или что-то в этом роде. Это возможно?

Согласно Google, это шаги для его установки на одной виртуальной машине:

введите здесь описание изображения


comment
Вы можете поместить сценарии установки Stackdriver в сценарий запуска Compute Engine. Это гарантирует, что будет установлена ​​последняя версия. Stackdriver обнаруживает, что он уже установлен. Влияние на время загрузки незначительно. Ответ @norbjd также имеет значение, если вы хотите, чтобы ручной метод контролировал обновление ваших экземпляров.   -  person John Hanley    schedule 24.07.2019


Ответы (1)


Сценарии запуска не являются здесь хорошим решением, поскольку они будут выполняться каждый раз при загрузке экземпляра. Даже если установка агента мониторинга Stackdriver умна и не переустанавливает агент, если он уже установлен (может быть, и делает, я не знаю), использование сценария запуска здесь не кажется уместным. Если вы хотите устанавливать его при каждой загрузке (возможно, чтобы он обновлялся), это может быть решением, но в вашем случае (устанавливайте один раз на все ваши существующие виртуальные машины), вероятно, есть лучшие решения.

Если у вас есть root-доступ к вашим виртуальным машинам и вы используете Google Cloud SDK, вы можете просто повторять свои виртуальные машины и запускать удаленные команды через SSH для каждой из них, как в следующем примере, предполагающем, что все ваши виртуальные машины находятся в одном проекте $MY_PROJECT (будьте осторожны, чтобы проверить это на небольшом подмножестве виртуальных машин, прежде чем запускать его на всех ваших виртуальных машинах в производственной среде, я не проверял это). Синтаксис действителен для Google Cloud SDK v243.0.0.

#!/usr/bin/env sh

REMOTE_COMMAND="curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh && \
    sudo bash install-monitoring-agent.sh && \
    sudo service stackdriver-agent restart"

for instance_name in $(gcloud --project "$MY_PROJECT" compute instances list --format="value(name)")
do
    zone=$(gcloud --project "$MY_PROJECT" compute instances list \
            --filter="name=($instance_name)" \
            --format="value(zone)")
    gcloud --project "$MY_PROJECT" compute ssh "$instance_name" \
        --zone="$zone" \
        --command "$REMOTE_COMMAND"
done

Это аналогично подключению к каждой виртуальной машине, запуску команды на этой виртуальной машине и отключению. Преимущество здесь в том, что это можно запустить с одного хоста, если вы можете подключиться к своим виртуальным машинам через SSH.

Если вы знакомы с Ansible или некоторыми другими инструментами подготовки, вероятно, существует лучшее решение, чем предыдущий сценарий оболочки. . Но если это одноразовое решение, и вам нужно быстрое и легкое решение, тогда используйте сценарий оболочки (однако будьте осторожны, чтобы протестировать его перед этим).

Для ваших будущих виртуальных машин Compute Engine, и если все ваши виртуальные машины имеют одинаковую конфигурацию, я рекомендую вам взглянуть на шаблоны экземпляров или изображения. Вы можете создать определенный шаблон экземпляра или образ с предустановленным агентом мониторинга Stackdriver и создать все свои будущие виртуальные машины на основе этого шаблона/образа экземпляра.

person norbjd    schedule 24.07.2019
comment
Вроде работает исправно. Я протестировал его в тестовой среде, и все идет хорошо. Я сделаю больше тестов, чтобы воспроизвести его на производстве. Большое спасибо! - person Juan Bravo Roig; 24.07.2019