我想知道一旦数据被带入 CloudWatch,我如何知道 httpd 的访问/错误日志中的事件与哪个主机相对应。我在 apache 上使用虚拟主机。我目前每个 vhost 都有一个文件,如下所示...
/var/log/httpd/access/site1.log
/var/log/httpd/access/site2.log
我正在使用如下 CloudWatch Agent 配置:
[[inputs.logfile.file_config]]
file_path = "/var/log/httpd/access/*.log"
from_beginning = true
log_group_name = "apache-access"
log_stream_name = "i-012345..."
pipe = false
除了为每个文件创建一个配置块之外,是否还有其他选项可以为我在 CloudWatch 中创建的日志添加表示虚拟主机的维度?
文件名是否是可以在 conf 中使用的变量?...log_group_name = "apache-access/{logfile}"
或者类似的东西?
我想另一种方法是将所有虚拟主机写入相同的日志文件,然后在我的日志格式中使用环境变量 - 但我认为这只适用于访问日志而不适用于错误日志。
我此时的最佳策略是什么?
我正在将其从 ELK 堆栈中迁移出来,其中文件名在事件数据中被利用。
答案1
我能够确认SetEnv
变量在错误日志格式中不可用。为每个虚拟主机的错误日志格式设置一个静态值似乎会走向与错误日志想要更早定义的相同死胡同。但我实际上并没有尝试在虚拟主机中设置它。
无论如何,一个简单的解决方案是使用Host
请求标头中的值,如下所述:在 *.domain.com 场景中捕获询问的主机名的日志格式?
虽然价值不同,但可能最终对我的散养鸡更有用。仍然很好奇是否有办法利用 cloudwatch agent/conf 将文件名作为维度。