google-cloud-platform - GCP VM 上的 Fluentd 代理设置未将日志推送到日志资源管理器
问题描述
我们在 GCP VM 上设置了一个 fluentd 代理,以将日志从 syslog 服务器(VM)推送到 GCP 的 Google Cloud Logging。当前设置运行良好,每小时向 Stackdriver (Google Cloud Logging) 推送超过 30 万条日志条目。
由于流量增加,我们计划增加负载均衡器后面使用的虚拟机数量。但是,带有 fluentd 代理的新虚拟机无法将日志推送到 Stackdriver。第一次激活 VM 后,它确实向 Stackdriver 发送了一些条目,之后它就不起作用了。
我尝试了以下选项来设置 fluentd 代理并解决问题:
- 使用此Google Cloud 文档从头开始创建一个新 VM 并安装 fluentd 日志记录代理。
- 通过创建映像复制已经工作的 VM(带有日志记录代理)
- 重启虚拟机
- 重新安装日志代理
我做的调试:
- google fluentd 代理的所有配置。一切都是正确的,并且与当前工作的 VM 实例完全相同。
- 我检查了“/var/log/google-fluentd/google-fluentd.log”是否有任何日志记录错误。但是没有。
- 检查是否启用了日志记录 API。由于每天已经有几百万条日志,我认为我们在这方面很好。
- 检查CPU和内存消耗。它接近于 0。
- 我在谷歌上能找到的所有解决方案(不多)
如果有人可以帮助我确定我到底哪里出错了,那就太好了。我已经多次检查配置/设置文件,它们看起来不错。
解决方案
解决问题的故障排除步骤:
- 检查您是否使用最新版本的 fluentd 代理。如果没有,请尝试升级 fluentd 代理。有关信息,请参阅升级代理。
- 如果您正在运行非常旧的 Compute Engine 实例或在没有默认凭据的情况下创建的 Compute Engine 实例,您必须完成授权代理程序。
- 另一个重点是,您如何配置 HTTP 代理。如果您使用 HTTP 代理代理对 Logging 和 Monitoring API 的请求,请检查元数据服务器是否可访问。配置 HTTP 代理时,元数据服务器必须是可访问的(并且直接进行;没有代理)。
- 检查您是否配置了任何阻止日志到达的日志排除项。有关信息,请参阅排除过滤器。
- 尝试卸载 Fluentd 代理并尝试使用 Ops 代理(注意 syslog 日志由它收集而无需设置)并检查您是否能够看到日志。Ops Agent 将日志记录和指标组合到一个代理中,使用 Fluent Bit 记录日志,支持高吞吐量日志记录,并使用OpenTelemetry Collector进行指标。有关详细信息,请参阅Ops 代理。
推荐阅读
- sql-server - SQL Server 更新嵌套层次结构
- java - 从另一个类设置参数
- java - Visual Studio Code 中的 Java 编译错误:找不到或加载主类
- javascript - 在赛普拉斯,有没有办法根据每日消息来避免失败?
- javascript - Alpha 任何地方:如何从列表中获取所有数据,以便我可以使用 Javascript 访问它们
- php - 从 PHP 执行 SQL Server 存储过程
- c# - 调用 ASP.Net Core API 时出现 404
- c# - 在 .Net 中为 DbContext 配置实体时,如何表示具有单向关系的对象集合?
- python - 如何在多特征 svc 案例中从 mlxtend 绘制虹膜数据集中的所有样本的“plot_decision_regions”?
- ios - 什么样的滚动视图包含 2 个表视图和集合视图