小编Rag*_*son的帖子

NGINX 日志在 Stackdriver 中没有 jsonPayload 字段

我有一个基本的 nginx 部署,在 GKE 集群上运行,提供静态内容。我已按照此处的说明为集群配置了 Stackdriver 日志记录(我为现有集群启用了日志记录),并且还启用了此处解释的 Stackdriver Kubernetes 监控功能。日志记录本身似乎工作正常,因为我可以在 Stackdriver 中看到来自 nginx 的日志。

我正在尝试创建一些基于日志的指标,例如已完成的 2xx 请求的数量,但我在 Stackdriver 中的日志条目中获得的只是该字段textPayload。据我了解,在集群上启用 Stackdriver Monitoring 会启动一些 Fluentd 代理(如果运行我可以看到这些代理kubectl get pods -n kube-system),并且它们应该默认启用 nginx 日志解析器(根据此处的文档)。但是,Stackdriver 中显示的日志条目均不具有jsonPayload结构化日志应有的字段。

我正在使用 nginx 的默认log_format配置,并且我已经验证默认的 nginx 解析器能够解析我的应用程序正在写入的日志(我将默认的 Fluentd nginx 解析器插件正则表达式和日志条目从我的应用程序复制到此工具,它能够解析该条目)

我确信我一定错过了一些东西,但我不知道是什么。

编辑:

作为参考,这是我的 NGINX 日志格式:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent"';
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经尝试过以下操作:

  • 将我的 k8s 集群从版本 1.11.5 升级到 …

nginx google-kubernetes-engine google-cloud-stackdriver

5
推荐指数
1
解决办法
1699
查看次数