首页 > 解决方案 > 从运行 Apache 和 PHP-FPM 的自定义 Kubernetes docker 容器向 Stackdriver 提供日志

问题描述

我们正在谷歌云上运行一个自定义 Kubernetes pod 的小型测试集群,内部运行 Apache 和 PHP-FPM。

集群具有以下关键配置:

一旦集群启动,kubectl get pods --all-namespaces将显示 fluentd 和 heapster 服务与我们的服务一起运行,正如我所期望的那样。

kube-system   event-exporter-v0.2.1-5f5b89fcc8-r89d5                           2/2       Running   0          13d
kube-system   fluentd-gcp-scaler-7c5db745fc-gbrqx                              1/1       Running   0          21d
kube-system   fluentd-gcp-v3.1.0-76mr4                                         2/2       Running   0          13d
kube-system   fluentd-gcp-v3.1.0-kl4xp                                         2/2       Running   0          13d
kube-system   fluentd-gcp-v3.1.0-vxsq5                                         2/2       Running   0          13d
kube-system   heapster-v1.5.3-95c7549b8-fdlmm                                  3/3       Running   0          13d
kube-system   kube-dns-788979dc8f-c9v2d                                        4/4       Running   0          99d
kube-system   kube-dns-788979dc8f-rqp7d                                        4/4       Running   0          99d
kube-system   kube-dns-autoscaler-79b4b844b9-zjtwk                             1/1       Running   0          99d

我们可以从我们的应用程序代码(在我们的 pod 中运行)获取日志记录以显示在 Stackdriver Logging 中,但我们希望在 Stackdriver 中聚合 Apache(/var/log/httpd/access_log 和 error_log)和 PHP-FPM 的日志记录也是。

Google 文档中的此页面暗示默认情况下应启用此功能。 https://cloud.google.com/kubernetes-engine/docs/how-to/logging

注意:当您使用 gcloud 命令行工具或 Google Cloud Platform Console 创建新集群时,默认情况下会启用 Stackdriver Logging。

然而,对我们来说显然不是这样。我们尝试了几种不同的方法来使其工作(如下所列),但没有成功。

包含:

似乎不需要此步骤,因为文档暗示您只需要在 VM 实例上执行此操作,但我们还是在我们的 k8s pod 上尝试了它。作为此步骤的一部分,我们确保 Apache 启用了 mod_status (/server-status) 并且 PHP-FPM 启用了 /fpm-status,然后按照文档安装了模块 Apache 插件。

这似乎应该是一件简单的事情,但我们显然错过了一些东西。非常感激任何的帮助。

干杯,朱利安锥

标签: apachedockerkubernetesstackdriverfpm

解决方案


推荐阅读