python-3.x - 堆栈驱动程序日志记录代理未显示从 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 内存)
那么,我还能检查什么来调试它?我在这里没有想法,希望我不是白痴:(
解决方案
根据我的理解,我认为您正在寻找以下流利的资源类型:
generic_node
“通用节点标识了一台机器或其他计算资源,没有更具体的资源类型适用。标签值必须唯一标识节点。”</p>
generic_task
“通用任务标识了一个应用程序进程,该进程没有更具体的资源适用,例如由自定义编排系统调度的进程。标签值必须唯一标识任务。”</p>
我的信息来源在这里
找到了
这个文档解释了如何从你的应用程序中以不同的方式发送日志:
- 云端日志 API
- Cloud Logging 代理
- 通用流利
正如您提到的已安装 fluentd,让我提供有关Cloud Logging Agent的更集中的文档。我还找到了一些您可能感兴趣的python 客户端库文档。
最后,我找到了一个 nginx/apache 用例指南,您可以将其用作参考。
推荐阅读
- docker - KafkaTool:无法连接到 Kafka 集群
- wordpress - 我无法在 WP 查询中进行分页
- excel - 在连接字符串中查找对服务器的所有引用
- python - Python代码没有通过日期时间比较筛选出未来的日期
- keras - 如何获得每个类的概率,而不是一个值为 1 和其他值为 0 的热编码数组?
- node.js - MongoDB 数组不显示
- javascript - 使用 zIndex 分层 div
- c++ - 如何为我的代码添加不同的字符?
- android - 使用前置摄像头和后置摄像头合成单个视频
- spring - Spring Security Oauth2:无效的重定向 url