Как изменить конфигурацию агента ведения журнала StackDriver на виртуальных машинах Compute Engine?

Я создаю для экспорт журналов для журналов, созданных в Google Stackdriver Logging для всех виртуальных машин и кластеров Compute Engine, присутствующих в проект.
Как мы знаем, местом назначения экспорта может быть только Cloud Storage, Cloud Pub / Sub, BigQuery. Следовательно, я не могу различать журналы, созданные несколькими виртуальными машинами.
Например: присутствует несколько виртуальных машин, и все они генерируют syslog и имеют одну облачную корзину в качестве места назначения, приемники для всех виртуальных машин будут экспортировать журналы в каталог с именем syslog в том же облачном ведре.

Чтобы преодолеть указанную выше проблему, я использовал способ настройки агента ведения журнала StackDriver и изменения тега logName. Дополнительные сведения см. В this.
Используя описанный выше подход, я могу изменить тег logName с syslog на [instance-name]-syslog, и, следовательно, приемники экспортируют системный журнал из этого экземпляра GCE в одну папку и так далее.

Я сейчас меняю тег в /etc/google-fluentd/config.d/[APPLICATIOON-NAME].conf файлах вручную. Например, вот файл /etc/google-fluentd/config.d/syslog.conf:

<source>
  @type tail

  # Parse the timestamp, but still collect the entire line as 'message'
  format syslog

  path /var/log/syslog
  pos_file /var/lib/google-fluentd/pos/syslog.pos
  read_from_head true

  tag syslog

</source>

Теперь я заменяю приведенный выше syslog на [instance-name] -syslog вручную, выполняя ssh на всех виртуальных машинах. Я ищу способ автоматизировать вышеперечисленное. Как лучше всего это сделать? (P.S. Все виртуальные машины раскручиваются с помощью Terraform)


person amit yadav    schedule 29.03.2019    source источник
comment
Не содержит ли запись, записанная в журнал, экземпляр CE, создавший журнал? Можно ли записать все записи в один объект GCS, а затем отфильтровать этот объект по желаемому экземпляру CE? Как насчет вывода всех данных экспорта журнала в Pub / Sub и наличия облачной функции для записи записей в разные корзины GCS? Как насчет отправки данных в BigQuery и размещения их там в качестве хранилища и простого выполнения SQL-запроса для получения данных, когда / при необходимости?   -  person Kolban    schedule 30.03.2019
comment
Мы бы не предпочли, чтобы Pub / Sub или Bigquery попадали в кадр. И да, журналы содержат идентификатор и имя экземпляра, и фильтрация журналов и размещение их в разных папках - последнее решение, которое мы рассмотрим для реализации, потому что для этого потребуется дополнительный сервер / экземпляр / кластер. периодически запускать скрипт. Есть ли другой способ настроить имена журналов и выполнить работу?   -  person amit yadav    schedule 31.03.2019
comment
Можно определить произвольный сценарий запуска, который выполняется при запуске каждого Compute Engine. См. cloud.google.com/compute/docs/startupscript ... если можете скрипт желаемого эффекта для вашей среды Linux, тогда вы можете определить, что это произойдет при загрузке машины.   -  person Kolban    schedule 31.03.2019


Ответы (1)


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

Возвращаясь к вашему вопросу, я думаю, что это не из Terraform, поскольку он только создает сервер. Я бы предложил 2 варианта:

  1. Используйте некоторые инструменты CM, такие как Ansible, чтобы ввести имя файла на основе нового созданного сервера.
  2. Если у вас нет CM, вы можете создать настраиваемое изображение с помощью сценария запуска, сценарий проверит, существует ли conf, если нет, создайте conf на основе имени хоста в пути / etc / google-fluentd / config .d /

По-видимому, два подхода нацелены на одно и то же, а №1 - долгосрочный.

person Calvin Zhou    schedule 01.04.2019