apache - 从运行 Apache 和 PHP-FPM 的自定义 Kubernetes docker 容器向 Stackdriver 提供日志
问题描述
我们正在谷歌云上运行一个自定义 Kubernetes pod 的小型测试集群,内部运行 Apache 和 PHP-FPM。
集群具有以下关键配置:
- 主版本:1.10.6-gke.2
- Kubernetes alpha 功能:已禁用
- 总大小:3
- StackDriver 日志记录:已启用
- StackDriver 监控:已启用
一旦集群启动,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。
然而,对我们来说显然不是这样。我们尝试了几种不同的方法来使其工作(如下所列),但没有成功。
包含:
- 如本文所述,将日志输出从 Apache 重定向到 stdout 和/或 stderr。 https://serverfault.com/questions/711168/writing-apache2-logs-to-stdout-stderr
- 如https://cloud.google.com/monitoring/agent/plugins/apache#configuring中所述,在每个 pod 中安装 stackdriver 代理
似乎不需要此步骤,因为文档暗示您只需要在 VM 实例上执行此操作,但我们还是在我们的 k8s pod 上尝试了它。作为此步骤的一部分,我们确保 Apache 启用了 mod_status (/server-status) 并且 PHP-FPM 启用了 /fpm-status,然后按照文档安装了模块 Apache 插件。
- 通过管道将 Apache 日志记录到 STDOUT 如何将 Apache 日志重定向到 STDOUT 和 Apache 日志文件
这似乎应该是一件简单的事情,但我们显然错过了一些东西。非常感激任何的帮助。
干杯,朱利安锥
解决方案
推荐阅读
- javascript - 如何为 forwach 循环中的按钮创建事件侦听器
- javascript - Express + React:CSRF Cookie 在生产中未定义,在本地工作
- javascript - Firefox 扩展无法添加请求标头?
- php - WordPress:根据类别数组遍历帖子
- google-cloud-platform - 是否允许提交 Google Cloud IoT MQTT 设备配置的最大数量?
- javascript - 如何在 slack api 命令中创建投票?
- regex - 使用正则表达式进行正则表达式
- macos - 如何为我的 AppleScript 应用程序创建 Dock 菜单?
- sql - ORA-01873 计算两个时间戳之间的差异时
- java - 如何使用 dbus 和 NetworkManager 激活连接