我正在尝试调试为什么我的应用程序日志没有被 Promtail 拾取并导入 Loki。
为了排除我的 PHP 应用程序日志记录的复杂性是罪魁祸首,我只是尝试stderr
从 pod 的 shell 向流中打印一条消息,以供接收kubectl logs counter
。为了进一步降低复杂性,我使用php:fpm-alpine
以下配置使用图像启动了一个全新的 pod:
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: php:fpm-alpine
一旦 pod 准备就绪,我通过运行来访问 shell kubectl exec -it counter -- /bin/ash
,然后运行i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done
。我可以在 pod 的 shell 中看到以下输出:
0: Sun May 24 13:51:09 UTC 2020
1: Sun May 24 13:51:10 UTC 2020
2: Sun May 24 13:51:11 UTC 2020
3: Sun May 24 13:51:12 UTC 2020
4: Sun May 24 13:51:13 UTC 2020
etc...
但是当我运行kubectl logs counter
返回的数据是:
[24-May-2020 13:36:20] NOTICE: fpm is running, pid 1
[24-May-2020 13:36:20] NOTICE: ready to handle connections
我似乎无法让i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done
命令的输出显示在 pod 日志中。
答案1
这似乎是由于该图像启用catch_workers_output = yes
将来,尝试在本地运行相同的映像将是一个很好的故障排除机制,看看你是否可以为自己创建一个最小的复制品:也就是说,可以任何该容器下运行的 php 脚本是否会将输出发送到容器的 stderr?