【发布时间】:2019-03-30 08:46:18
【问题描述】:
编辑:因为我看到了反对票并且我理解他们,所以我会澄清:该应用程序没有记录标准方式,也不是我改变它的呼吁。另外,当时作为k8s的新手,不知道如何获取其他文件。开发人员无法改变这一点(不记得为什么),但我确实设法用 fluentD/bit 之类的东西来获取文件。很抱歉造成误会。
我有一个带有 2 个容器的 pod:nginx 和 php-fpm。 我很想将 php-fpm 日志(确实记录到容器)到标准输出,以便我可以在 kibana 上看到它们。
这是 php-fpm 容器内的一些信息表单:
#env | grep -i log
APP_LOG_PATH=php://stdout
# php -i | grep -i log
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.1.17, Copyright (c) 1999-2018, by Zend Technologies
amqp.login => guest => guest
error_log => no value => no value
log_errors => Off => Off
log_errors_max_len => 1024 => 1024
mail.log => no value => no value
com_binlog_dump => 0
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException
opcache.error_log => no value => no value
opcache.log_verbosity_level => 1 => 1
APP_LOG_PATH => php://stdout
$_SERVER['APP_LOG_PATH'] => php://stdout
$_ENV['APP_LOG_PATH'] => php://stdout
Segmentation fault (core dumped)
#
试图在 www.conf 上取消注释(这是日志所在的位置):
php_admin_value[error_log] = /var/www/html/logs/my-app.log
php_admin_flag[log_errors] = on
我能得到的唯一信息是与进程有关的,例如“已重新启动”“已启动”等。
我重新启动了 php:
kill -USR2 1
但是在这样做之后不能得到 log_errors => on => on。
任何帮助都会很棒,谢谢!
【问题讨论】:
-
你使用哪个 docker 镜像?
-
嗨,我们使用:php:7.1-fpm-alpine
-
将 /usr/local/etc/php-fpm.d/docker.conf 中的 access.log 更改为
access.log = /proc/self/fd/1并重启 php-fpm 实例。 -
刚刚检查过,它已经这样设置了。也许它与在那里运行的应用程序代码有关。我可以在容器内的 random-name.log 中看到 php-fpm 日志,如果我执行 kubelog pod-name -c fpm 也是如此,但无法将其取出,因此我可以通过 kibana 共享它。
-
原始设置为 2 (stderr)
标签: php docker logging kubernetes kibana