我想在 Django 1.7 中将404 Not Found错误代码记录到 Sentry。
Django 提供了哪些钩子以便我可以推送logger.error()这些消息?
还有其他想法如何使用 Django 和 Sentry 监控非 500 个缺失/行为异常的页面吗?
正如 Sentry 的文档[1] [2]为其新的统一 python sdk ( sentry_sdk) 所推荐的那样,我已经使用我的 Django 应用程序对其进行了配置,以捕获所有异常或“错误”级日志上的事件:
import sentry_sdk
import logging
from sentry_sdk.integrations.django import DjangoIntegration
from sentry_sdk.integrations.logging import LoggingIntegration
sentry_logging = LoggingIntegration(
level=logging.DEBUG,
event_level=logging.ERROR
)
sentry_sdk.init(
dsn="{{sentry_dsn}}",
integrations=[DjangoIntegration(), sentry_logging]
)
Run Code Online (Sandbox Code Playgroud)
然而,由于这直接与 python 的日志模块和内部异常处理挂钩,这意味着任何使用这个 Django 环境的东西都会将事件发送到哨兵。有一些任务(例如交互式 manage.py 命令,或在 REPL 中工作)需要 Django 环境,但我不希望在 Sentry 中创建事件。
有没有办法向哨兵表明我希望它不从异常或logging当前任务的调用中捕获事件?或者在全局配置后暂时禁用它的方法?
我正面临哨兵的奇怪行为。我使用 sentry-webpack-plugin 将我的源地图上传到远程公司哨兵服务器。一切似乎都很好。 我在发布选项卡中的工件下看到源映射。
但问题是,在某些情况下,sourmaps 被正确映射,但在其他哨兵中显示缩小的错误代码并警告“Sourcemap 无效或不可解析”(即使出现相同的错误)
我做了一些研究,在哨兵论坛上有人指出这可能是因为上传工件时压缩了源地图。但是为什么在某些情况下它有效,而在其他情况下无效?
这是示例:一个错误在哨兵中出现两次,但第一次正确映射到源,第二次没有
有效映射:
无效映射:
在 main.js 最后一行是:
//#sourceMappingURL=vendor.d5b6708d.js.map
我的源地图上传到哨兵,并从静态服务器中删除,通过 WebpackDeleteAfterEmit 插件提供 main.*.js。
我有一个 Rails 5 应用程序,它使用raven-ruby向 Sentry 发送异常,然后向我们的 Slack 发送警报。
Raven.configure do |config|
config.dsn = ENV['SENTRY_DSN']
config.environments = %w[ production development ]
config.excluded_exceptions += []
config.async = lambda { |event|
SentryWorker.perform_async(event.to_hash)
}
end
class SentryWorker < ApplicationWorker
sidekiq_options queue: :default
def perform(event)
Raven.send_event(event)
end
end
Run Code Online (Sandbox Code Playgroud)
我们的 Sidekiq 作业抛出异常并被重试是正常的。这些大多是间歇性的 API 错误和超时,它们会在几分钟内自行清除。Sentry 尽职尽责地向我们的 Slack 发送这些错误警报。
我已经将 加到retry_count了 jobs。如何防止 Sentry 将 retry_count < N 的异常发送到 Slack,同时仍然提醒其他异常?一个不应该被警告的例子会有这样的额外上下文:
sidekiq: {
context: Job raised exception,
job: {
args: [{...}],
class: SomeWorker,
created_at: …Run Code Online (Sandbox Code Playgroud) 这是给Sentry (Open-source error tracking)用户的。
我尝试了一些代码,但没有成功。我希望你能调查一下。
提前感谢大家。
我已经下载了 SDK zip 并将其上传到服务器上。好吧,我已经阅读了一些有关 autoloader 和 raven_client 的内容,但仍然没有找到 autoloder.php。
我正在使用哨兵/sdk:2.0.3
require_once 'sentry-php-master/src/Sdk.php';
Sentry\init(['dsn' => '___DSN___' ]);
throw new Exception("My first Sentry error!");
Run Code Online (Sandbox Code Playgroud)
我期待它有效,我可以追踪错误。
我想知道是否有关于如何编写 HTML 代码以便在问题中获得更好的 Sentry.io 面包屑的良好实践。
无法识别用户交互的元素,我认为使用 CSS 类或 ID 并不理想 - 尽管我们可以自定义面包屑,但看起来将文本放入标签中并不是一个好习惯在 Sentry Github 存储库中发现的一些问题。
我在想aria-label,有没有人有什么建议?
现在很难理解用户在阅读面包屑时的步骤。
我有一个模仿Next JS sentry (simple) 示例的项目的简单设置
问题是没有哨兵Enable JavaScript source fetching功能,我无法让源映射正确地报告给哨兵示例:
与Enable JavaScript source fetching它正确显示示例(相同的错误):
以下是使用的配置文件:
// next.config.js
const { parsed: localEnv } = require("dotenv").config();
const webpack = require("webpack");
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
// Package.json => "@zeit/next-source-maps": "^0.0.4-canary.1",
const withSourceMaps = require("@zeit/next-source-maps")({ devtool: "source-map" });
module.exports = withSourceMaps({
target: "serverless",
env: {
// Will be available on both server and client
// Sentry DNS configurations
SENTRY_DNS: process.env.SENTRY_DNS,
},
poweredByHeader: false,
webpack(config, options) {
config.plugins.push(new webpack.EnvironmentPlugin(localEnv));
config.resolve.plugins.push(new …Run Code Online (Sandbox Code Playgroud) 有什么方法可以减少依赖服务的数量和/或 Sentry 使用的资源数量?
因为我在考虑至少8GB 的 RAM是否值得为少量项目进行错误跟踪。
或者我是否应该使用更简单的(?)自托管解决方案,如Exceptionless、Glitchtip、Coderr、Errbit或诸如此类。我对它们中的任何一个都没有经验,因为到目前为止我主要使用 Sentry。因此,我宁愿让 Sentry 更轻巧(如果可能的话)。
我刚刚让哨兵在我的环境中工作,我尝试调整我的日志记录以使其停止发送错误电子邮件,但它仍然如此,我不明白为什么。我的日志配置是:
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": '%(levelname)s %(asctime)s (%(pathname)s %(funcName)s): "%(message)s"'
},
"simple": {"format": "%(levelname)s %(message)s"},
"django.server": {
"()": "django.utils.log.ServerFormatter",
"format": "[%(server_time)s] %(message)s",
},
},
"handlers": {
"null": {"level": "DEBUG", "class": "logging.NullHandler",},
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "simple",
},
"log_file": {
"level": "DEBUG",
"class": "logging.handlers.RotatingFileHandler",
"filename": "/var/log/courtlistener/django.log",
"maxBytes": "16777216", # 16 megabytes
"formatter": "verbose",
},
"django.server": {
"level": "INFO",
"class": "logging.StreamHandler",
"formatter": "django.server",
},
},
"loggers": {
# Disable SuspiciousOperation.DisallowedHost exception …Run Code Online (Sandbox Code Playgroud) 在 openshift 上安装它时与哨兵战斗后,我启动并运行它只是发现当向我的服务器发送事件时它会抛出这个错误:
12:30:59 [警告] django.request: Forbidden (CSRF cookie not set.): /api/1/envelope/ (status_code=403 request=<WSGIRequest: POST u'/api/1/envelope/'>) 10.125.2.1 - - [20/Jul/2020:12:30:59 +0000] "POST /api/1/envelope/HTTP/1.1" 403 6059 "-" "sentry.native/0.3.4"
如果我向 API 发送 curl 请求,我会得到一个显示 csrf 错误的简洁 HTML 网页。有人知道这里可能有什么问题吗?
sentry ×10
django ×4
bug-tracking ×1
c ×1
c++ ×1
errbit ×1
exception ×1
html ×1
javascript ×1
logging ×1
next.js ×1
php ×1
python ×1
raven ×1
source-maps ×1
typescript ×1
webpack ×1