Мы запускаем небольшой тестовый кластер настраиваемых модулей Kubernetes в облаке Google, внутри которых работают Apache и PHP-FPM.
Кластер имеет следующую ключевую конфигурацию:
- Мастер версия: 1.10.6-гке.2
- Возможности Kubernetes alpha: отключены
- Общий размер: 3
- Ведение журнала StackDriver: включено
- StackDriver Monitoring: включен
После создания кластера 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
Мы можем получить журнал из кода нашего приложения (который выполняется внутри наших модулей), чтобы он отображался в Stackdriver Logging, но мы хотим агрегировать журнал для Apache (/ var / log / httpd / access_log и error_log) и PHP-FPM в Stackdriver. также.
Эта страница из Документов Google подразумевает, что это должно быть включено по умолчанию. https://cloud.google.com/kubernetes-engine/docs/how-to/logging
Примечание. Ведение журнала Stackdriver включается по умолчанию при создании нового кластера с помощью инструмента командной строки gcloud или консоли Google Cloud Platform.
Однако для нас это явно не так. Мы пробовали несколько разных подходов, чтобы заставить это работать (перечислены ниже), но безуспешно.
Включая:
- перенаправление вывода журнала из Apache на stdout и / или stderr, как описано в этом посте. https://serverfault.com/questions/711168/writing-apache2-logs-to-stdout-stderr
- Установка агента stackdriver внутри каждого модуля, как описано в https://cloud.google.com/monitoring/agent/plugins/apache#configuring
Не казалось, что этот шаг должен быть обязательным, поскольку документация подразумевает, что вам нужно сделать это только на экземпляре виртуальной машины, но мы все равно попробовали это на наших модулях k8s. В рамках этого шага мы убедились, что в Apache включен mod_status (/ server-status), а в PHP-FPM включен / fpm-status, а затем установили модуль Apache plugin, следуя документации.
- Передача журнала Apache в STDOUT Как сделать Перенаправить журналы Apache как в STDOUT, так и в файл журнала Apache
Кажется, это должно быть несложно, но мы явно что-то упустили. Любая помощь будет очень признательна.
Ура, Джулиан Кон