Я создаю для экспорт журналов для журналов, созданных в 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)