首页 > 解决方案 > 堆栈驱动程序日志记录代理未显示从 Google 云平台的堆栈驱动程序日志查看器中的自定义日志文件读取的日志

问题描述

我决定发布这个问题是因为,我已经用完了调试想法,只是想法是黄金,因为我知道通过这里帮助调试虚拟实例可能很困难(调试代码已经够难了jaja)。无论如何,我已经在 Compute engine 中创建了一个虚拟机,我创建了一个我填充的日志文件,例如,在 python 脚本中使用这个命令,我们称之为 logging.py:

import logging 
logging.basicConfig(filename= 'app.log'  , level = logging.INFO , format = ' %(asctime)s - %(name) - %(levelname)s - %(message)s')   

 logging.info('Some message ' + str(type(variable))) 

每次我使用 python3 logging.py 时,都会有效地填充 app.log。(Logging.py 和 app.log 位于 /home/username/ 文件夹的同一目录中)

我希望 stackdriver 在每次写入时都在日志查看器中显示此日志,因此,我在虚拟机命令行中按如下方式安装了 stackdriver 代理:

    $ curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
    $ sudo bash install-logging-agent.sh

我看到的没有错误在这里传递,其实你可以在这里看到得到的消息

在此处输入图像描述

stackdriver 查看器上的消息:

在此处输入图像描述

在此之后,我继续创建我在 /etc/google-fluentd/config.d/app.conf 中创建的 .conf 文件

用这个参数

 <source>
 type tail
 format none
 path /home/username/app.log
 pos_file /var/lib/google-fluentd/pos/app.pos
 read_from_head true
 tag whatever-tag
</source>

创建完成后,我启动 sudo service google-fluentd restart。

在我执行 python3 logging.py 之后,没有日志被添加到堆栈驱动程序日志查看器。

那么,我可能哪里出错了?

我尝试过/检查过的事情:

- 有超过 13 千兆字节的可用 RAM

- 如果我在命令行上运行记录器“一些消息”,我有效地将带有“一些消息”的日志添加到日志查看器

-如果我跑

ps ax | grep fluentd

我得到:3033?Sl 0:09 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd --log /var/log/google-fluentd/google-fluentd.log --no-supervisor 3309 pts/0 S+ 0:00 grep --color=auto fluentd

- 我的用户和我使用的服务帐户都具有 IAM 角色的记录器管理员权限。

- 这是我自己基于的文档:

https://cloud.google.com/logging/docs/agent/troubleshooting?hl=es-419 https://cloud.google.com/logging/docs/reference/v2/rest/v2/entries/list?hl =es-419 https://cloud.google.com/logging/docs/agent/configuration?hl=es-419 https://medium.com/google-cloud/how-to-log-your-application-on -google-compute-engine-6600d81e70e3 https://cloud.google.com/logging/docs/agent/installation

- 如果我运行 sudo service google-fluentd status ,代理会显示为活动状态。

在此处输入图像描述

-我的实例有权访问所有 API。这是使用 ubuntu linux 18:04 的 n1-standard-4(4 个 vCPU,15 GB 内存)

那么,我还能检查什么来调试它?我在这里没有想法,希望我不是白痴:(

标签: python-3.xgoogle-cloud-platformgoogle-compute-enginestackdriverfluentd

解决方案


根据我的理解,我认为您正在寻找以下流利的资源类型:

generic_node

“通用节点标识了一台机器或其他计算资源,没有更具体的资源类型适用。标签值必须唯一标识节点。”</p>

generic_task

“通用任务标识了一个应用程序进程,该进程没有更具体的资源适用,例如由自定义编排系统调度的进程。标签值必须唯一标识任务。”</p>

我的信息来源在这里
找到了 这个文档解释了如何从你的应用程序中以不同的方式发送日志:

  • 云端日志 API
  • Cloud Logging 代理
  • 通用流利

正如您提到的已安装 fluentd,让我提供有关Cloud Logging Agent的更集中的文档。我还找到了一些您可能感兴趣的python 客户端库文档。

最后,我找到了一个 nginx/apache 用例指南,您可以将其用作参考。


推荐阅读