故障排除
编辑故障排除编辑
以下是一些用于对 Python 代理进行故障排除和调试的资源和技巧。
简单修复编辑
在尝试任何其他操作之前,请先阅读以下部分,以确保代理配置正确。这不是一个详尽的列表,而是一个用户经常遇到的常见问题列表。
调试模式编辑
大多数框架都支持调试模式。通常,此模式适用于非生产环境,并提供详细的错误消息和可能敏感数据的日志记录。由于这些安全问题,默认情况下,如果应用程序处于调试模式,则代理不会收集跟踪。
您可以使用 DEBUG
配置覆盖此行为。
请注意,代理的配置应在创建任何 ElasticAPM
对象之前进行
app = Flask(__name__) app.config["ELASTIC_APM"] = {"DEBUG": True} apm = ElasticAPM(app, service_name="flask-app")
psutil
用于指标编辑
要在非 Linux 系统上获取 CPU 和系统指标,必须安装 psutil
。如果未安装,代理应在启动时自动显示警告,但有时可以抑制此警告。安装 psutil
后,代理应收集指标并将其发送到 APM 服务器。
python3 -m pip install psutil
凭据问题编辑
为了使代理能够将数据发送到 APM 服务器,它可能需要 API_KEY
或 SECRET_TOKEN
。仔细检查您的 APM 服务器设置,并确保您的凭据配置正确。此外,请检查 SERVER_URL
是否正确。
Django check
和 test
编辑
与 Django 一起使用时,代理提供两个管理命令来帮助调试常见问题。请转到 Django 故障排除部分 了解更多信息。
代理日志记录编辑
要使代理记录更多数据,只需一个附加到 elasticapm
记录器或根记录器的 处理程序 即可。
请注意,如果将处理程序附加到根记录器,则还需要显式设置 elasticapm
记录器的日志级别
import logging apm_logger = logging.getLogger("elasticapm") apm_logger.setLevel(logging.DEBUG)
Django编辑
从代理记录更多数据的最简单方法是向 elasticapm
记录器添加一个控制台日志记录处理程序。这是一个(非常简化的)示例
LOGGING = { 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler' } }, 'loggers': { 'elasticapm': { 'level': 'DEBUG', 'handlers': ['console'] }, }, }
Flask编辑
Flask 建议使用 dictConfig()
来设置日志记录。如果您使用这种格式,则为代理添加日志记录将与 上面针对 Django 的说明 非常相似。
否则,您可以使用 下面的通用说明。
通用说明编辑
创建控制台处理程序并将其添加到 elasticapm
记录器很容易
import logging elastic_apm_logger = logging.getLogger("elasticapm") console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) elastic_apm_logger.addHandler(console_handler)
您也可以将控制台处理程序添加到根记录器。这会将该处理程序应用于来自所有模块的所有日志消息。
import logging logger = logging.getLogger() console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) logger.addHandler(console_handler)
有关处理程序的更多详细信息(以及有关如何使用格式化程序格式化日志的信息),请参阅 Python 日志记录文档。
禁用代理编辑
如果代理导致生产应用程序中断,您可以禁用代理,同时进行故障排除。
如果您有权访问 动态配置,则可以通过将 recording
设置为 false
来禁用事件记录。当从受支持的源在运行时更改时,无需重新启动应用程序。
如果这不起作用,或者您无权访问动态配置,则可以通过将 enabled
设置为 false
来禁用代理。您需要重新启动应用程序才能使更改生效。