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

Я создаю для Экспорт журналов для журналов, созданных в Ведение журнала Google Stackdriver для всех виртуальных машин и кластеров Compute Engine, присутствующих в проекте.
Как мы знаем, назначение экспорта можеттолько be Облачное хранилище, 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 во всех виртуальных машинах.Я ищу способ автоматизировать вышеуказанную вещь.Что было бы наиболее подходящим способом сделать это?(PS Все виртуальные машины раскручиваются с помощью Terraform)

1 Ответ

1 голос
/ 01 апреля 2019

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

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

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

Видимо, 2 подхода нацелены на одно и то же, и № 1 является долгосрочным

...