首页 > 解决方案 > GCP VM 上的 Fluentd 代理设置未将日志推送到日志资源管理器

问题描述

我们在 GCP VM 上设置了一个 fluentd 代理,以将日志从 syslog 服务器(VM)推送到 GCP 的 Google Cloud Logging。当前设置运行良好,每小时向 Stackdriver (Google Cloud Logging) 推送超过 30 万条日志条目。

由于流量增加,我们计划增加负载均衡器后面使用的虚拟机数量。但是,带有 fluentd 代理的新虚拟机无法将日志推送到 Stackdriver。第一次激活 VM 后,它确实向 Stackdriver 发送了一些条目,之后它就不起作用了。

我尝试了以下选项来设置 fluentd 代理并解决问题:

  1. 使用此Google Cloud 文档从头开始创建一个新 VM 并安装 fluentd 日志记录代理。
  2. 通过创建映像复制已经工作的 VM(带有日志记录代理)
  3. 重启虚拟机
  4. 重新安装日志代理

我做的调试:

  1. google fluentd 代理的所有配置。一切都是正确的,并且与当前工作的 VM 实例完全相同。
  2. 我检查了“/var/log/google-fluentd/google-fluentd.log”是否有任何日志记录错误。但是没有。
  3. 检查是否启用了日志记录 API。由于每天已经有几百万条日志,我认为我们在这方面很好。
  4. 检查CPU和内存消耗。它接近于 0。
  5. 我在谷歌上能找到的所有解决方案(不多)

如果有人可以帮助我确定我到底哪里出错了,那就太好了。我已经多次检查配置/设置文件,它们看起来不错。

标签: google-cloud-platformgoogle-compute-enginefluentdgoogle-cloud-logging

解决方案


解决问题的故障排除步骤:

  1. 检查您是否使用最新版本的 fluentd 代理。如果没有,请尝试升级 fluentd 代理。有关信息,请参阅升级代理
  2. 如果您正在运行非常旧的 Compute Engine 实例或在没有默认凭据的情况下创建的 Compute Engine 实例,您必须完成授权代理程序。
  3. 另一个重点是,您如何配置 HTTP 代理。如果您使用 HTTP 代理代理对 Logging 和 Monitoring API 的请求,请检查元数据服务器是否可访问。配置 HTTP 代理时,元数据服务器必须是可访问的(并且直接进行;没有代理)。
  4. 检查您是否配置了任何阻止日志到达的日志排除项。有关信息,请参阅排除过滤器
  5. 尝试卸载 Fluentd 代理并尝试使用 Ops 代理(注意 syslog 日志由它收集而无需设置)并检查您是否能够看到日志。Ops Agent 将日志记录和指标组合到一个代理中,使用 Fluent Bit 记录日志,支持高吞吐量日志记录,并使用OpenTelemetry Collector进行指标。有关详细信息,请参阅Ops 代理

推荐阅读