我正在为Log exports中的Google Stackdriver Logging中生成的日志创建项目中存在的所有Compute Engine VM和群集。
我们知道,导出目的地只能是云存储,云发布/订阅,BigQuery 。因此,我无法区分由多个VM生成的日志。
例如:存在许多虚拟机,它们全部生成syslog
,并且有一个云存储桶作为目的地,所有虚拟机的接收器都将日志导出到目录中在同一云存储桶中名为syslog
。
为了克服上述问题,我遵循了一种配置StackDriver Logging代理并更改logName标记的方法。有关更多详细信息,请参见this。
使用上述方法,我可以将logName的标签从syslog
更改为[instance-name]-syslog
,因此可以将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>
现在,我通过在所有VM中执行ssh手动将以上 syslog 替换为 [instance-name] -syslog 。我正在寻找一种自动化上述方法的方法。什么是最合适的方法? (P.S.所有虚拟机都正在使用Terraform旋转)
答案 0 :(得分:1)
首先,我们将日志上传到StackDriver,所以我不会遇到与您相同的问题。
回到您的问题,我认为这不属于Terraform,因为它仅用于创建服务器。我建议2种选择:
显然,这两种方法都针对同一件事,而#1是长期的目标