哨兵一直在返回不存在的事件id

2024-09-27 00:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个django项目。我们使用Sentry收集http500错误的信息。你知道吗

Sentry有一个选项可以将事件信息添加到请求头中,这样您就可以在应用程序中处理它。你知道吗

所以,我们有一个类似于tastypice的mixin:

class Sentry500Mixin(object):
def _handle_500(self, request, exception):

    if not isinstance(exception, TastypieError) and not settings.DEBUG:
        sentry_exception_handler(request=request)
        data = {
            'error_message': 'Sorry, this request could not be processed.',
            'incident': getattr(request, 'sentry', None)
        }
        return self.error_response(request, data, response_class=HttpApplicationError)

    else:
        return super(Sentry500Mixin, self)._handle_500(request, exception)

当出现500个错误时,我们得到如下响应:

 {"error_message": "Sorry, this request could not be processed.", 
"incident": {"id": "3459b30f87ea4116a0a2855be576bbb3", "project_id": "5"}}

问题是,如果你拿着这个事件id去岗哨,很有可能这个id不会有什么事件,也不会有像这样的事件。我确信我正在检查正确的项目,如果事件不是创建的,逻辑上,Sentry不能返回您一个ID,但它确实返回了。你知道吗

任何帮助和想法都非常感谢。谢谢。你知道吗


Tags: 项目self信息idrequest错误exception事件
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:01

正如@erik-e在注释中解释的那样,event_id是在客户机上生成的。你知道吗

UDP协议没有保证

你在使用UDP协议吗?如果是,则event_id不一定映射到Sentry中的实际事件。路由器/交换机/网络设备可能丢失了您的数据包。使用UDP不能保证w.r.t传递、订购或复制数据包。你知道吗

我假设哨兵的HTTP/HTTPS协议超过了TCP。你知道吗

解决方案:

  • 仔细检查防火墙规则
  • 尝试其他协议,确保sentry服务器没有问题。你知道吗

那为什么要使用UDP呢?你知道吗

常见的原因有:

  • 不握手=更快
  • 无连接=连接中断时没有问题(例如,重新启动sentry服务器)。你知道吗

相关问题 更多 >

    热门问题