snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
0
zerver/webhooks/sentry/__init__.py
Normal file
0
zerver/webhooks/sentry/__init__.py
Normal file
62
zerver/webhooks/sentry/doc.md
Normal file
62
zerver/webhooks/sentry/doc.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Zulip Sentry integration
|
||||
|
||||
Get Zulip notifications for the issues in your Sentry projects!
|
||||
|
||||
!!! warn ""
|
||||
|
||||
**Note:** This integration supports Sentry's Node, Python, and Go
|
||||
[platforms](https://sentry.io/platforms/). If there's a platform
|
||||
you're interested in seeing support for that's missing, let us
|
||||
know in the [integrations][dev-community] channel of the Zulip
|
||||
development community.
|
||||
|
||||
{start_tabs}
|
||||
|
||||
1. {!create-an-incoming-webhook.md!}
|
||||
|
||||
1. {!generate-webhook-url-basic.md!}
|
||||
|
||||
1. In your Sentry organization's **Settings**, go to **Developer
|
||||
Settings**. Click on **Create New Integration**, and select
|
||||
**Internal Integration**.
|
||||
|
||||
!!! warn ""
|
||||
|
||||
**Note**: Zulip also supports configuring this integration as a
|
||||
webhook in Sentry. While this is easier to configure (navigate
|
||||
to **Settings > Integrations**, and search for **WebHooks**),
|
||||
it doesn't support the full breadth of event types. For instance,
|
||||
some events, like issue assignments or issues being resolved,
|
||||
will not trigger notifications with this configuration.
|
||||
|
||||
1. Set the **Webhook URL** to the URL generated above, and then enable
|
||||
**Alert Rule Action**. Fill out the remaining details based on your
|
||||
preferences, and click **Save Changes**.
|
||||
|
||||
!!! tip ""
|
||||
|
||||
If you want notifications for issues, as well as events, you can
|
||||
scroll down to **Webhooks** on the same page, and toggle the
|
||||
**issue** checkbox.
|
||||
|
||||
1. Go to **Alerts**, and click **Create Alert**.
|
||||
|
||||
1. Select the project for which you want to receive notifications, and
|
||||
set the conditions as you'd prefer (e.g., the events you want to be
|
||||
notified about). Under **PERFORM THESE ACTIONS**, select **Add an
|
||||
action...** > **Send a notification via an integration**, and set
|
||||
it to the internal integration created above.
|
||||
|
||||
{end_tabs}
|
||||
|
||||
{!congrats.md!}
|
||||
|
||||

|
||||
|
||||
{!event-filtering-additional-feature.md!}
|
||||
|
||||
### Related documentation
|
||||
|
||||
{!webhooks-url-specification.md!}
|
||||
|
||||
[dev-community]: https://chat.zulip.org/#narrow/channel/127-integrations
|
||||
167
zerver/webhooks/sentry/fixtures/error_for_exception_js.json
Normal file
167
zerver/webhooks/sentry/fixtures/error_for_exception_js.json
Normal file
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"action": "created",
|
||||
"actor": {
|
||||
"id": "sentry",
|
||||
"name": "Sentry",
|
||||
"type": "application"
|
||||
},
|
||||
"data": {
|
||||
"error": {
|
||||
"_ref": 1293919,
|
||||
"_ref_version": 2,
|
||||
"contexts": {
|
||||
"browser": {
|
||||
"name": "Chrome",
|
||||
"type": "browser",
|
||||
"version": "75.0.3770"
|
||||
},
|
||||
"os": {
|
||||
"name": "Mac OS X",
|
||||
"type": "os",
|
||||
"version": "10.14.0"
|
||||
}
|
||||
},
|
||||
"culprit": "?(runner)",
|
||||
"datetime": "2019-08-19T20:58:37.391000Z",
|
||||
"dist": null,
|
||||
"event_id": "bb78c1407cea4519aa397afc059c793d",
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"mechanism": {
|
||||
"data": {
|
||||
"message": "blooopy is not defined",
|
||||
"mode": "stack",
|
||||
"name": "ReferenceError"
|
||||
},
|
||||
"description": null,
|
||||
"handled": false,
|
||||
"help_link": null,
|
||||
"meta": null,
|
||||
"synthetic": null,
|
||||
"type": "onerror"
|
||||
},
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"abs_path": "https://null.jsbin.com/runner",
|
||||
"colno": 5,
|
||||
"context_line": "<meta charset=utf-8>",
|
||||
"data": {
|
||||
"orig_in_app": 1
|
||||
},
|
||||
"errors": null,
|
||||
"filename": "/runner",
|
||||
"function": null,
|
||||
"image_addr": null,
|
||||
"in_app": false,
|
||||
"instruction_addr": null,
|
||||
"lineno": 3,
|
||||
"module": "runner",
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"post_context": [
|
||||
"<title>JS Bin Runner</title>",
|
||||
"",
|
||||
"<style type=\"text/css\">",
|
||||
" body {",
|
||||
" margin: 0;"
|
||||
],
|
||||
"pre_context": ["<!doctype html>", "<html>"],
|
||||
"raw_function": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"vars": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "ReferenceError",
|
||||
"value": "blooopy is not defined"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fingerprint": ["{{ default }}"],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY05qemJypZWRgaGlroGxrqHRBABbEwcC",
|
||||
"id": "legacy:2019-03-12"
|
||||
},
|
||||
"hashes": ["07d2da329989f6cd310eb5f1c5e828a4"],
|
||||
"issue_url": "https://sentry.io/api/0/issues/1170820242/",
|
||||
"issue_id": "1170820242",
|
||||
"key_id": "667532",
|
||||
"level": "error",
|
||||
"location": "/runner",
|
||||
"logger": "",
|
||||
"message": "",
|
||||
"metadata": {
|
||||
"filename": "/runner",
|
||||
"type": "ReferenceError",
|
||||
"value": "blooopy is not defined"
|
||||
},
|
||||
"platform": "javascript",
|
||||
"project": 1,
|
||||
"received": 1566248317.391,
|
||||
"release": null,
|
||||
"request": {
|
||||
"cookies": null,
|
||||
"data": null,
|
||||
"env": null,
|
||||
"fragment": null,
|
||||
"headers": [
|
||||
[
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
|
||||
]
|
||||
],
|
||||
"inferred_content_type": null,
|
||||
"method": null,
|
||||
"query_string": [],
|
||||
"url": "https://null.jsbin.com/runner"
|
||||
},
|
||||
"sdk": {
|
||||
"integrations": [
|
||||
"InboundFilters",
|
||||
"FunctionToString",
|
||||
"BrowserApiErrors",
|
||||
"Breadcrumbs",
|
||||
"GlobalHandlers",
|
||||
"LinkedErrors",
|
||||
"HttpContext"
|
||||
],
|
||||
"name": "sentry.javascript.browser",
|
||||
"packages": [
|
||||
{
|
||||
"name": "npm:@sentry/browser",
|
||||
"version": "5.5.0"
|
||||
}
|
||||
],
|
||||
"version": "5.5.0"
|
||||
},
|
||||
"tags": [
|
||||
["browser", "Chrome 75.0.3770"],
|
||||
["browser.name", "Chrome"],
|
||||
["handled", "no"],
|
||||
["level", "error"],
|
||||
["mechanism", "onerror"],
|
||||
["os", "Mac OS X 10.14.0"],
|
||||
["os.name", "Mac OS X"],
|
||||
["user", "ip:162.217.75.90"],
|
||||
["url", "https://null.jsbin.com/runner"]
|
||||
],
|
||||
"time_spent": null,
|
||||
"timestamp": 1566248317.391,
|
||||
"title": "ReferenceError: blooopy is not defined",
|
||||
"type": "error",
|
||||
"url": "https://sentry.io/api/0/projects/test-org/front-end/events/bb78c1407cea4519aa397afc059c793d/",
|
||||
"user": {
|
||||
"ip_address": "162.218.85.90"
|
||||
},
|
||||
"version": "7",
|
||||
"web_url": "https://sentry.io/organizations/test-org/issues/1170820242/events/bb78c1407cea4519aa397afc059c793d/"
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "a8e5d37a-696c-4c54-adb5-b3f28d64c7de"
|
||||
}
|
||||
}
|
||||
167
zerver/webhooks/sentry/fixtures/event_for_exception_golang.json
Normal file
167
zerver/webhooks/sentry/fixtures/event_for_exception_golang.json
Normal file
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "80777a9cc30e4d0eb8904333d5c298b0",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "go",
|
||||
"message": "",
|
||||
"datetime": "2020-04-29T11:23:45.978469Z",
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"os.name",
|
||||
"linux"
|
||||
],
|
||||
[
|
||||
"runtime",
|
||||
"go go1.14.1"
|
||||
],
|
||||
[
|
||||
"runtime.name",
|
||||
"go"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"hp-pavilion"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 1225,
|
||||
"bytes.stored.event": 2231
|
||||
},
|
||||
"contexts": {
|
||||
"device": {
|
||||
"num_cpu": 8,
|
||||
"arch": "amd64",
|
||||
"type": "device"
|
||||
},
|
||||
"runtime": {
|
||||
"name": "go",
|
||||
"go_numcgocalls": 1,
|
||||
"go_numroutines": 2,
|
||||
"version": "go1.14.1",
|
||||
"go_maxprocs": 8,
|
||||
"type": "runtime"
|
||||
},
|
||||
"os": {
|
||||
"type": "os",
|
||||
"name": "linux"
|
||||
}
|
||||
},
|
||||
"culprit": "main in main",
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"type": "*http.badStringError",
|
||||
"value": "unsupported protocol scheme \"\""
|
||||
},
|
||||
{
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "main",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/trigger-exception.go",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
" // Set the timeout to the maximum duration the program can afford to wait.",
|
||||
" defer sentry.Flush(2 * time.Second)",
|
||||
"",
|
||||
" resp, err := http.Get(os.Args[1])",
|
||||
" if err != nil {"
|
||||
],
|
||||
"post_context": [
|
||||
" log.Printf(\"reported to Sentry: %s\", err)",
|
||||
" return",
|
||||
" }",
|
||||
" defer resp.Body.Close()",
|
||||
""
|
||||
],
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": " sentry.CaptureException(err)",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "main",
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "trigger-exception.go",
|
||||
"lineno": 45,
|
||||
"colno": null,
|
||||
"trust": null,
|
||||
"data": {
|
||||
"orig_in_app": 1
|
||||
},
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "*url.Error",
|
||||
"value": "Get \"bad_url\": unsupported protocol scheme \"\""
|
||||
}
|
||||
]
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"acfd5581b952e2955c28d0d4615b2eeb",
|
||||
"62313c010c35c98db6151e708d658e61"
|
||||
],
|
||||
"key_id": "1146336",
|
||||
"level": "error",
|
||||
"location": "trigger-exception.go",
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"function": "main",
|
||||
"type": "*url.Error",
|
||||
"value": "Get \"bad_url\": unsupported protocol scheme \"\"",
|
||||
"filename": "trigger-exception.go"
|
||||
},
|
||||
"received": 1588159427.160184,
|
||||
"sdk": {
|
||||
"version": "0.6.0",
|
||||
"name": "sentry.go",
|
||||
"packages": [
|
||||
{
|
||||
"version": "0.6.0",
|
||||
"name": "sentry-go"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"ContextifyFrames",
|
||||
"Environment",
|
||||
"IgnoreErrors",
|
||||
"Modules"
|
||||
]
|
||||
},
|
||||
"timestamp": 1588159425.978469,
|
||||
"title": "*url.Error: Get \"bad_url\": unsupported protocol scheme \"\"",
|
||||
"type": "error",
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/80777a9cc30e4d0eb8904333d5c298b0/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1637164584/events/80777a9cc30e4d0eb8904333d5c298b0/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1637164584/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
155
zerver/webhooks/sentry/fixtures/event_for_exception_js.json
Normal file
155
zerver/webhooks/sentry/fixtures/event_for_exception_js.json
Normal file
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "355c3b2a142046629dd410db2fdda003",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "javascript",
|
||||
"message": "",
|
||||
"datetime": "2020-06-17T14:42:54.656000Z",
|
||||
"tags": [
|
||||
["browser", "Firefox 77.0"],
|
||||
["browser.name", "Firefox"],
|
||||
["handled", "yes"],
|
||||
["level", "error"],
|
||||
["mechanism", "generic"],
|
||||
["os.name", "Ubuntu"],
|
||||
["user", "ip:223.230.114.198"],
|
||||
[
|
||||
"url",
|
||||
"file:///mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/trigger-exception-with-external.html"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 876,
|
||||
"flag.processing.error": true,
|
||||
"bytes.stored.event": 2637
|
||||
},
|
||||
"contexts": {
|
||||
"os": {
|
||||
"type": "os",
|
||||
"name": "Ubuntu"
|
||||
},
|
||||
"browser": {
|
||||
"version": "77.0",
|
||||
"type": "browser",
|
||||
"name": "Firefox"
|
||||
}
|
||||
},
|
||||
"culprit": "?(/mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js)",
|
||||
"errors": [
|
||||
{
|
||||
"url": "file:///mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js",
|
||||
"type": "js_no_source"
|
||||
}
|
||||
],
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"abs_path": "file:///mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js",
|
||||
"filename": "/mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js",
|
||||
"colno": 25,
|
||||
"data": {
|
||||
"orig_in_app": 1
|
||||
},
|
||||
"lineno": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "Error",
|
||||
"mechanism": {
|
||||
"synthetic": null,
|
||||
"help_link": null,
|
||||
"type": "generic",
|
||||
"meta": null,
|
||||
"handled": true,
|
||||
"data": null,
|
||||
"description": null
|
||||
},
|
||||
"value": "Something external broke."
|
||||
}
|
||||
]
|
||||
},
|
||||
"fingerprint": ["{{ default }}"],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": ["2058ed8b75cb570c9646adcd9dc21843"],
|
||||
"key_id": "1146336",
|
||||
"level": "error",
|
||||
"location": null,
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"type": "Error",
|
||||
"filename": "/mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js",
|
||||
"value": "Something external broke."
|
||||
},
|
||||
"received": 1592406695.060435,
|
||||
"request": {
|
||||
"cookies": null,
|
||||
"url": "file:///mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/trigger-exception-with-external.html",
|
||||
"headers": [
|
||||
[
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0"
|
||||
]
|
||||
],
|
||||
"env": null,
|
||||
"fragment": null,
|
||||
"query_string": [],
|
||||
"data": null,
|
||||
"method": null,
|
||||
"inferred_content_type": null
|
||||
},
|
||||
"sdk": {
|
||||
"version": "5.17.0",
|
||||
"name": "sentry.javascript.browser",
|
||||
"packages": [
|
||||
{
|
||||
"version": "5.17.0",
|
||||
"name": "npm:@sentry/browser"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"InboundFilters",
|
||||
"FunctionToString",
|
||||
"TryCatch",
|
||||
"Breadcrumbs",
|
||||
"GlobalHandlers",
|
||||
"LinkedErrors",
|
||||
"UserAgent"
|
||||
]
|
||||
},
|
||||
"timestamp": 1592404974.656,
|
||||
"title": "Error: Something external broke.",
|
||||
"type": "error",
|
||||
"user": {
|
||||
"geo": {
|
||||
"city": "Hyderabad",
|
||||
"region": "India",
|
||||
"country_code": "IN"
|
||||
},
|
||||
"ip_address": "223.230.114.198"
|
||||
},
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/355c3b2a142046629dd410db2fdda003/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1731239773/events/355c3b2a142046629dd410db2fdda003/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1731239773/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
422
zerver/webhooks/sentry/fixtures/event_for_exception_node.json
Normal file
422
zerver/webhooks/sentry/fixtures/event_for_exception_node.json
Normal file
@@ -0,0 +1,422 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "f9cb0f2afff74a5aa92e766fb7ac3fe3",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "node",
|
||||
"message": "",
|
||||
"datetime": "2020-04-30T06:19:33.562812Z",
|
||||
"tags": [
|
||||
[
|
||||
"handled",
|
||||
"yes"
|
||||
],
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"mechanism",
|
||||
"generic"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 4145,
|
||||
"bytes.stored.event": 7690
|
||||
},
|
||||
"culprit": "null.<anonymous>(trigger-exception)",
|
||||
"errors": [
|
||||
{
|
||||
"url": "/home/hemanth/Desktop/sentry/trigger-exception.js",
|
||||
"type": "js_no_source"
|
||||
}
|
||||
],
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "Module._load",
|
||||
"abs_path": "module.js",
|
||||
"errors": null,
|
||||
"pre_context": null,
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": null,
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"post_context": null,
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "module.js",
|
||||
"module": "module",
|
||||
"colno": 3,
|
||||
"raw_function": null,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"lineno": 497
|
||||
},
|
||||
{
|
||||
"function": "tryModuleLoad",
|
||||
"abs_path": "module.js",
|
||||
"errors": null,
|
||||
"pre_context": null,
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": null,
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"post_context": null,
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "module.js",
|
||||
"module": "module",
|
||||
"colno": 12,
|
||||
"raw_function": null,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"lineno": 505
|
||||
},
|
||||
{
|
||||
"function": "Module.load",
|
||||
"abs_path": "module.js",
|
||||
"errors": null,
|
||||
"pre_context": null,
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": null,
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"post_context": null,
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "module.js",
|
||||
"module": "module",
|
||||
"colno": 32,
|
||||
"raw_function": null,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"lineno": 565
|
||||
},
|
||||
{
|
||||
"function": "Module._extensions..js",
|
||||
"abs_path": "module.js",
|
||||
"errors": null,
|
||||
"pre_context": null,
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": null,
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"post_context": null,
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "module.js",
|
||||
"module": "module",
|
||||
"colno": 10,
|
||||
"raw_function": null,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"lineno": 663
|
||||
},
|
||||
{
|
||||
"function": "Module._compile",
|
||||
"abs_path": "module.js",
|
||||
"errors": null,
|
||||
"pre_context": null,
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": null,
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"post_context": null,
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "module.js",
|
||||
"module": "module",
|
||||
"colno": 30,
|
||||
"raw_function": null,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"lineno": 652
|
||||
},
|
||||
{
|
||||
"function": "Object.<anonymous>",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/trigger-exception.js",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
"const Sentry = require('@sentry/node');",
|
||||
"",
|
||||
"Sentry.init({",
|
||||
" dsn: 'https://redacted.ingest.sentry.io/5216640',",
|
||||
"});",
|
||||
""
|
||||
],
|
||||
"post_context": [
|
||||
" scope.addEventProcessor(function(event, hint) {",
|
||||
" return event;",
|
||||
" });",
|
||||
" Sentry.captureException(new Error('Sample error from node.'));",
|
||||
"});",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": "Sentry.withScope(function(scope) {",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "trigger-exception",
|
||||
"in_app": true,
|
||||
"symbol_addr": null,
|
||||
"filename": "/home/hemanth/Desktop/sentry/trigger-exception.js",
|
||||
"lineno": 7,
|
||||
"colno": 8,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
},
|
||||
{
|
||||
"function": "Object.withScope",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/node_modules/@sentry/minimal/dist/index.js",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
" * pushScope();",
|
||||
" * callback();",
|
||||
" * popScope();",
|
||||
" *",
|
||||
" * @param callback that will be enclosed into push/popScope.",
|
||||
" */",
|
||||
"function withScope(callback) {"
|
||||
],
|
||||
"post_context": [
|
||||
"}",
|
||||
"exports.withScope = withScope;",
|
||||
"/**",
|
||||
" * Calls a function on the latest client. Use this with caution, it's meant as",
|
||||
" * in \"internal\" helper so we don't need to expose every possible function in",
|
||||
" * the shim. It is not guaranteed that the client actually implements the",
|
||||
" * function."
|
||||
],
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": " callOnHub('withScope', callback);",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "@sentry.minimal.dist:index",
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "/home/hemanth/Desktop/sentry/node_modules/@sentry/minimal/dist/index.js",
|
||||
"lineno": 158,
|
||||
"colno": 5,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
},
|
||||
{
|
||||
"function": "callOnHub",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/node_modules/@sentry/minimal/dist/index.js",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
" var args = [];",
|
||||
" for (var _i = 1; _i < arguments.length; _i++) {",
|
||||
" args[_i - 1] = arguments[_i];",
|
||||
" }",
|
||||
" var hub = hub_1.getCurrentHub();",
|
||||
" if (hub && hub[method]) {",
|
||||
" // tslint:disable-next-line:no-unsafe-any"
|
||||
],
|
||||
"post_context": [
|
||||
" }",
|
||||
" throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");",
|
||||
"}",
|
||||
"/**",
|
||||
" * Captures an exception event and sends it to Sentry.",
|
||||
" *",
|
||||
" * @param exception An exception-like object."
|
||||
],
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": " return hub[method].apply(hub, tslib_1.__spread(args));",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "@sentry.minimal.dist:index",
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "/home/hemanth/Desktop/sentry/node_modules/@sentry/minimal/dist/index.js",
|
||||
"lineno": 17,
|
||||
"colno": 28,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
},
|
||||
{
|
||||
"function": "Hub.withScope",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/node_modules/@sentry/hub/dist/hub.js",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
" };",
|
||||
" /**",
|
||||
" * @inheritDoc",
|
||||
" */",
|
||||
" Hub.prototype.withScope = function (callback) {",
|
||||
" var scope = this.pushScope();",
|
||||
" try {"
|
||||
],
|
||||
"post_context": [
|
||||
" }",
|
||||
" finally {",
|
||||
" this.popScope();",
|
||||
" }",
|
||||
" };",
|
||||
" /**",
|
||||
" * @inheritDoc"
|
||||
],
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": " callback(scope);",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "@sentry.hub.dist:hub",
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "/home/hemanth/Desktop/sentry/node_modules/@sentry/hub/dist/hub.js",
|
||||
"lineno": 103,
|
||||
"colno": 13,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
},
|
||||
{
|
||||
"function": "null.<anonymous>",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/trigger-exception.js",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
" dsn: 'https://redacted.ingest.sentry.io/5216640',",
|
||||
"});",
|
||||
"",
|
||||
"Sentry.withScope(function(scope) {",
|
||||
" scope.addEventProcessor(function(event, hint) {",
|
||||
" return event;",
|
||||
" });"
|
||||
],
|
||||
"post_context": [
|
||||
"});",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"vars": null,
|
||||
"package": null,
|
||||
"context_line": " Sentry.captureException(new Error('Sample error from node.'));",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "trigger-exception",
|
||||
"in_app": true,
|
||||
"symbol_addr": null,
|
||||
"filename": "/home/hemanth/Desktop/sentry/trigger-exception.js",
|
||||
"lineno": 11,
|
||||
"colno": 27,
|
||||
"trust": null,
|
||||
"data": null,
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "Error",
|
||||
"mechanism": {
|
||||
"synthetic": null,
|
||||
"help_link": null,
|
||||
"type": "generic",
|
||||
"meta": null,
|
||||
"handled": true,
|
||||
"data": null,
|
||||
"description": null
|
||||
},
|
||||
"value": "Sample error from node."
|
||||
}
|
||||
]
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"0f8707d55b9a07f1d98f7f411ae91921",
|
||||
"2b51fa6978fa72e1a400507643d03846"
|
||||
],
|
||||
"key_id": "1146336",
|
||||
"level": "error",
|
||||
"location": "/home/hemanth/Desktop/sentry/trigger-exception.js",
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"function": "null.<anonymous>",
|
||||
"type": "Error",
|
||||
"value": "Sample error from node.",
|
||||
"filename": "/home/hemanth/Desktop/sentry/trigger-exception.js"
|
||||
},
|
||||
"received": 1588227573.562812,
|
||||
"sdk": {
|
||||
"version": "5.15.5",
|
||||
"name": "sentry.javascript.node",
|
||||
"packages": [
|
||||
{
|
||||
"version": "5.15.5",
|
||||
"name": "npm:@sentry/node"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"InboundFilters",
|
||||
"FunctionToString",
|
||||
"Console",
|
||||
"Http",
|
||||
"OnUncaughtException",
|
||||
"OnUnhandledRejection",
|
||||
"LinkedErrors"
|
||||
]
|
||||
},
|
||||
"timestamp": 1588227573.562812,
|
||||
"title": "Error: Sample error from node.",
|
||||
"type": "error",
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/f9cb0f2afff74a5aa92e766fb7ac3fe3/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1638852747/events/f9cb0f2afff74a5aa92e766fb7ac3fe3/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1638852747/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
193
zerver/webhooks/sentry/fixtures/event_for_exception_python.json
Normal file
193
zerver/webhooks/sentry/fixtures/event_for_exception_python.json
Normal file
@@ -0,0 +1,193 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "599349254a1447a99774b5310711c1a8",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "python",
|
||||
"message": "",
|
||||
"datetime": "2020-04-28T13:56:05.903736Z",
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"runtime",
|
||||
"CPython 3.6.9"
|
||||
],
|
||||
[
|
||||
"runtime.name",
|
||||
"CPython"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"hp-pavilion"
|
||||
]
|
||||
],
|
||||
"_meta": {
|
||||
"exception": {
|
||||
"values": {
|
||||
"0": {
|
||||
"stacktrace": {
|
||||
"frames": {
|
||||
"0": {
|
||||
"vars": {
|
||||
"": {
|
||||
"len": 11
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 1972,
|
||||
"bytes.stored.event": 2666
|
||||
},
|
||||
"contexts": {
|
||||
"runtime": {
|
||||
"version": "3.6.9",
|
||||
"type": "runtime",
|
||||
"name": "CPython",
|
||||
"build": "3.6.9 (default, Apr 18 2020, 01:56:04) \n[GCC 8.4.0]"
|
||||
}
|
||||
},
|
||||
"culprit": "__main__ in <module>",
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "<module>",
|
||||
"abs_path": "/home/hemanth/Desktop/sentry/trigger-exception.py",
|
||||
"errors": null,
|
||||
"pre_context": [
|
||||
"",
|
||||
"",
|
||||
"if __name__ == \"__main__\":",
|
||||
" sentry_sdk.init(dsn=SECRET_DSN)",
|
||||
" try:"
|
||||
],
|
||||
"post_context": [
|
||||
" except Exception as e:",
|
||||
" sentry_sdk.capture_exception(e)",
|
||||
""
|
||||
],
|
||||
"vars": {
|
||||
"__spec__": "None",
|
||||
"__builtins__": "<module 'builtins' (built-in)>",
|
||||
"__annotations__": {},
|
||||
"__file__": "'trigger-exception.py'",
|
||||
"__loader__": "<_frozen_importlib_external.SourceFileLoader object at 0x7f9bedf106d8>",
|
||||
"__cached__": "None",
|
||||
"__name__": "'__main__'",
|
||||
"__package__": "None",
|
||||
"__doc__": "None",
|
||||
"sentry_sdk": "<module 'sentry_sdk' from '/home/hemanth/Desktop/sentry/venv/local/lib/python3.6/site-packages/sentry_sdk/__init__.py'>"
|
||||
},
|
||||
"package": null,
|
||||
"context_line": " raise Exception(\"Custom exception!\")",
|
||||
"symbol": null,
|
||||
"image_addr": null,
|
||||
"module": "__main__",
|
||||
"in_app": false,
|
||||
"symbol_addr": null,
|
||||
"filename": "trigger-exception.py",
|
||||
"lineno": 7,
|
||||
"colno": null,
|
||||
"trust": null,
|
||||
"data": {
|
||||
"orig_in_app": 1
|
||||
},
|
||||
"platform": null,
|
||||
"instruction_addr": null,
|
||||
"raw_function": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "Exception",
|
||||
"value": "Custom exception!"
|
||||
}
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"sys.argv": [
|
||||
"trigger-exception.py"
|
||||
]
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"448593f0ce4993462d80e817945a3190"
|
||||
],
|
||||
"key_id": "1146336",
|
||||
"level": "error",
|
||||
"location": "trigger-exception.py",
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"function": "<module>",
|
||||
"type": "Exception",
|
||||
"value": "Custom exception!",
|
||||
"filename": "trigger-exception.py"
|
||||
},
|
||||
"modules": {
|
||||
"wheel": "0.34.2",
|
||||
"pkg-resources": "0.0.0",
|
||||
"sentry-sdk": "0.14.3",
|
||||
"urllib3": "1.25.9",
|
||||
"setuptools": "46.1.3",
|
||||
"pip": "20.0.2",
|
||||
"certifi": "2020.4.5.1"
|
||||
},
|
||||
"received": 1588082166.991354,
|
||||
"sdk": {
|
||||
"version": "0.14.3",
|
||||
"name": "sentry.python",
|
||||
"packages": [
|
||||
{
|
||||
"version": "0.14.3",
|
||||
"name": "pypi:sentry-sdk"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"argv",
|
||||
"atexit",
|
||||
"dedupe",
|
||||
"excepthook",
|
||||
"logging",
|
||||
"modules",
|
||||
"stdlib",
|
||||
"threading"
|
||||
]
|
||||
},
|
||||
"timestamp": 1588082165.903736,
|
||||
"title": "Exception: Custom exception!",
|
||||
"type": "error",
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/599349254a1447a99774b5310711c1a8/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1635244907/events/599349254a1447a99774b5310711c1a8/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1635244907/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
1049
zerver/webhooks/sentry/fixtures/event_for_exception_rails.json
Normal file
1049
zerver/webhooks/sentry/fixtures/event_for_exception_rails.json
Normal file
File diff suppressed because it is too large
Load Diff
565
zerver/webhooks/sentry/fixtures/event_for_exception_vue.json
Normal file
565
zerver/webhooks/sentry/fixtures/event_for_exception_vue.json
Normal file
@@ -0,0 +1,565 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"installation": {
|
||||
"uuid": "be1b14f8-ffad-41af-8e97-24a9c32ebc26"
|
||||
},
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "292f78454e774e62999506f759ad791d",
|
||||
"project": 4505266924748801,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "javascript",
|
||||
"message": "",
|
||||
"datetime": "2023-05-29T11:08:30.821000Z",
|
||||
"tags": [
|
||||
[
|
||||
"browser",
|
||||
"Chrome 110.0.0"
|
||||
],
|
||||
[
|
||||
"browser.name",
|
||||
"Chrome"
|
||||
],
|
||||
[
|
||||
"environment",
|
||||
"production"
|
||||
],
|
||||
[
|
||||
"handled",
|
||||
"no"
|
||||
],
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"mechanism",
|
||||
"onunhandledrejection"
|
||||
],
|
||||
[
|
||||
"os.name",
|
||||
"Linux"
|
||||
],
|
||||
[
|
||||
"replayId",
|
||||
"f6eba8bdc1824d4faec200863e316c32"
|
||||
],
|
||||
[
|
||||
"user",
|
||||
"ip:49.36.170.187"
|
||||
],
|
||||
[
|
||||
"transaction",
|
||||
"home"
|
||||
],
|
||||
[
|
||||
"url",
|
||||
"http://localhost:5173/"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 6013,
|
||||
"bytes.stored.event": 21343
|
||||
},
|
||||
"_ref": 4505266924748801,
|
||||
"_ref_version": 2,
|
||||
"breadcrumbs": {
|
||||
"values": [
|
||||
{
|
||||
"timestamp": 1685358510.768,
|
||||
"type": "default",
|
||||
"category": "console",
|
||||
"level": "warning",
|
||||
"message": "[@sentry/vue]: Misconfigured SDK. Vue app is already mounted. Make sure to call `app.mount()` after `Sentry.init()`.",
|
||||
"data": {
|
||||
"arguments": [
|
||||
"[@sentry/vue]: Misconfigured SDK. Vue app is already mounted. Make sure to call `app.mount()` after `Sentry.init()`."
|
||||
],
|
||||
"logger": "console"
|
||||
}
|
||||
},
|
||||
{
|
||||
"timestamp": 1685358510.768,
|
||||
"type": "default",
|
||||
"category": "console",
|
||||
"level": "warning",
|
||||
"message": "[Vue warn]: Plugin has already been applied to target app.",
|
||||
"data": {
|
||||
"arguments": [
|
||||
"[Vue warn]: Plugin has already been applied to target app."
|
||||
],
|
||||
"logger": "console"
|
||||
}
|
||||
},
|
||||
{
|
||||
"timestamp": 1685358510.769,
|
||||
"type": "default",
|
||||
"category": "console",
|
||||
"level": "warning",
|
||||
"message": "[Vue warn]: App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`",
|
||||
"data": {
|
||||
"arguments": [
|
||||
"[Vue warn]: App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`"
|
||||
],
|
||||
"logger": "console"
|
||||
}
|
||||
},
|
||||
{
|
||||
"timestamp": 1685358510.769,
|
||||
"type": "default",
|
||||
"category": "navigation",
|
||||
"level": "info",
|
||||
"data": {
|
||||
"from": "/",
|
||||
"to": "/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"timestamp": 1685358510.778,
|
||||
"type": "default",
|
||||
"category": "console",
|
||||
"level": "warning",
|
||||
"message": "[Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core \n at <HomeView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< viewRef > > \n at <RouterView> \n at <App>",
|
||||
"data": {
|
||||
"arguments": [
|
||||
"[Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core",
|
||||
"\n",
|
||||
" at <HomeView",
|
||||
"onVnodeUnmounted=fn<onVnodeUnmounted>",
|
||||
"ref=Ref<",
|
||||
"viewRef",
|
||||
">",
|
||||
">",
|
||||
"\n",
|
||||
" at <RouterView>",
|
||||
"\n",
|
||||
" at <App>"
|
||||
],
|
||||
"logger": "console"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"contexts": {
|
||||
"browser": {
|
||||
"name": "Chrome",
|
||||
"version": "110.0.0",
|
||||
"type": "browser"
|
||||
},
|
||||
"os": {
|
||||
"name": "Linux",
|
||||
"type": "os"
|
||||
},
|
||||
"replay": {
|
||||
"replay_id": "f6eba8bdc1824d4faec200863e316c32",
|
||||
"type": "replay"
|
||||
},
|
||||
"trace": {
|
||||
"trace_id": "b1b7eb2d91cc4d0580d3f9b72d3a244c",
|
||||
"span_id": "86a7afb4c705ca3c",
|
||||
"op": "pageload",
|
||||
"status": "internal_error",
|
||||
"client_sample_rate": 1.0,
|
||||
"sampled": true,
|
||||
"data": {
|
||||
"params": {},
|
||||
"query": {}
|
||||
},
|
||||
"tags": {
|
||||
"routing.instrumentation": "vue-router"
|
||||
},
|
||||
"type": "trace"
|
||||
}
|
||||
},
|
||||
"culprit": "insert(deps/chunk-G4DFXOZZ)",
|
||||
"environment": "production",
|
||||
"errors": [
|
||||
{
|
||||
"type": "js_no_source",
|
||||
"url": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f"
|
||||
}
|
||||
],
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"type": "TypeError",
|
||||
"value": "Cannot read properties of null (reading 'insertBefore')",
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "flushJobs",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 1763,
|
||||
"colno": 9,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "callWithErrorHandling",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 1565,
|
||||
"colno": 32,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "instance.update",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7212,
|
||||
"colno": 52,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.run",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 423,
|
||||
"colno": 19,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.componentUpdateFn [as fn]",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7171,
|
||||
"colno": 9,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "patch",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6436,
|
||||
"colno": 11,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "processComponent",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6963,
|
||||
"colno": 9,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "mountComponent",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7010,
|
||||
"colno": 5,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "setupRenderEffect",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7220,
|
||||
"colno": 5,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "instance.update",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7212,
|
||||
"colno": 52,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.run",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 423,
|
||||
"colno": 19,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.componentUpdateFn [as fn]",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7106,
|
||||
"colno": 11,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "patch",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6424,
|
||||
"colno": 11,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "processElement",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6552,
|
||||
"colno": 7,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "mountElement",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6642,
|
||||
"colno": 5,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"module": "deps/chunk-G4DFXOZZ",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 9134,
|
||||
"colno": 12,
|
||||
"in_app": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"raw_stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "flushJobs",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 1763,
|
||||
"colno": 9,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "callWithErrorHandling",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 1565,
|
||||
"colno": 32,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "instance.update",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7212,
|
||||
"colno": 52,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.run",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 423,
|
||||
"colno": 19,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.componentUpdateFn [as fn]",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7171,
|
||||
"colno": 9,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "patch",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6436,
|
||||
"colno": 11,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "processComponent",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6963,
|
||||
"colno": 9,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "mountComponent",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7010,
|
||||
"colno": 5,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "setupRenderEffect",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7220,
|
||||
"colno": 5,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "instance.update",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7212,
|
||||
"colno": 52,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.run",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 423,
|
||||
"colno": 19,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "ReactiveEffect.componentUpdateFn [as fn]",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 7106,
|
||||
"colno": 11,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "patch",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6424,
|
||||
"colno": 11,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "processElement",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6552,
|
||||
"colno": 7,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "mountElement",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 6642,
|
||||
"colno": 5,
|
||||
"in_app": true
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"abs_path": "http://localhost:5173/node_modules/.vite/deps/chunk-G4DFXOZZ.js?v=530d9f5f",
|
||||
"lineno": 9134,
|
||||
"colno": 12,
|
||||
"in_app": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"mechanism": {
|
||||
"type": "onunhandledrejection",
|
||||
"handled": false
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDRxY3J-bm5-npWRgaGlroGxrpHxBABcYgcZ",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"fdd7bfccd74d70129094ae0482059ab1"
|
||||
],
|
||||
"ingest_path": [
|
||||
{
|
||||
"version": "23.5.1",
|
||||
"public_key": "XE7QiyuNlja9PZ7I9qJlwQotzecWrUIN91BAO7Q5R38"
|
||||
}
|
||||
],
|
||||
"key_id": "3162314",
|
||||
"level": "error",
|
||||
"location": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"display_title_with_tree_label": false,
|
||||
"filename": "/node_modules/.vite/deps/chunk-G4DFXOZZ.js",
|
||||
"function": "insert",
|
||||
"type": "TypeError",
|
||||
"value": "Cannot read properties of null (reading 'insertBefore')"
|
||||
},
|
||||
"nodestore_insert": 1685358514.576503,
|
||||
"processed_by_symbolicator": true,
|
||||
"received": 1685358510.991622,
|
||||
"request": {
|
||||
"url": "http://localhost:5173/",
|
||||
"headers": [
|
||||
[
|
||||
"Referer",
|
||||
"http://localhost:5173/"
|
||||
],
|
||||
[
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
]
|
||||
]
|
||||
},
|
||||
"sdk": {
|
||||
"name": "sentry.javascript.vue",
|
||||
"version": "7.53.1",
|
||||
"integrations": [
|
||||
"InboundFilters",
|
||||
"FunctionToString",
|
||||
"TryCatch",
|
||||
"Breadcrumbs",
|
||||
"GlobalHandlers",
|
||||
"LinkedErrors",
|
||||
"Dedupe",
|
||||
"HttpContext",
|
||||
"BrowserTracing",
|
||||
"Replay"
|
||||
],
|
||||
"packages": [
|
||||
{
|
||||
"name": "npm:@sentry/vue",
|
||||
"version": "7.53.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"timestamp": 1685358510.821,
|
||||
"title": "TypeError: Cannot read properties of null (reading 'insertBefore')",
|
||||
"type": "error",
|
||||
"user": {
|
||||
"ip_address": "49.36.170.187",
|
||||
"geo": {
|
||||
"country_code": "IN",
|
||||
"city": "Lucknow",
|
||||
"subdivision": "Uttar Pradesh",
|
||||
"region": "India"
|
||||
}
|
||||
},
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/nitk-46/javascript-vue-new/events/292f78454e774e62999506f759ad791d/",
|
||||
"web_url": "https://sentry.io/organizations/nitk-46/issues/4214010673/events/292f78454e774e62999506f759ad791d/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/4214010673/",
|
||||
"issue_id": "4214010673"
|
||||
},
|
||||
"triggered_rule": "vue-alert"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
115
zerver/webhooks/sentry/fixtures/event_for_message_golang.json
Normal file
115
zerver/webhooks/sentry/fixtures/event_for_message_golang.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "01ecb45633bc4f5ca940ada671124c8f",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "go",
|
||||
"message": "A test message event from golang.",
|
||||
"datetime": "2020-04-30T06:14:13.611851Z",
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"info"
|
||||
],
|
||||
[
|
||||
"os.name",
|
||||
"linux"
|
||||
],
|
||||
[
|
||||
"runtime",
|
||||
"go go1.14.1"
|
||||
],
|
||||
[
|
||||
"runtime.name",
|
||||
"go"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"hp-pavilion"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 551,
|
||||
"bytes.stored.event": 1205
|
||||
},
|
||||
"contexts": {
|
||||
"device": {
|
||||
"num_cpu": 8,
|
||||
"arch": "amd64",
|
||||
"type": "device"
|
||||
},
|
||||
"runtime": {
|
||||
"name": "go",
|
||||
"go_numcgocalls": 1,
|
||||
"go_numroutines": 2,
|
||||
"version": "go1.14.1",
|
||||
"go_maxprocs": 8,
|
||||
"type": "runtime"
|
||||
},
|
||||
"os": {
|
||||
"type": "os",
|
||||
"name": "linux"
|
||||
}
|
||||
},
|
||||
"culprit": "",
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"dbd68cd07ee5d429a42cdc0da3bf8823"
|
||||
],
|
||||
"key_id": "1146336",
|
||||
"level": "info",
|
||||
"location": null,
|
||||
"logentry": {
|
||||
"message": null,
|
||||
"params": null,
|
||||
"formatted": "A test message event from golang."
|
||||
},
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"title": "A test message event from golang."
|
||||
},
|
||||
"received": 1588227254.623787,
|
||||
"sdk": {
|
||||
"version": "0.6.0",
|
||||
"name": "sentry.go",
|
||||
"packages": [
|
||||
{
|
||||
"version": "0.6.0",
|
||||
"name": "sentry-go"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"ContextifyFrames",
|
||||
"Environment",
|
||||
"IgnoreErrors",
|
||||
"Modules"
|
||||
]
|
||||
},
|
||||
"timestamp": 1588227253.611851,
|
||||
"title": "A test message event from golang.",
|
||||
"type": "default",
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/01ecb45633bc4f5ca940ada671124c8f/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1638844654/events/01ecb45633bc4f5ca940ada671124c8f/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1638844654/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
83
zerver/webhooks/sentry/fixtures/event_for_message_node.json
Normal file
83
zerver/webhooks/sentry/fixtures/event_for_message_node.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "6886bb1fe7ce4497b7836f6083d5fd34",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "node",
|
||||
"message": "Test event from node.",
|
||||
"datetime": "2020-04-30T06:09:56.493251Z",
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"info"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 363,
|
||||
"bytes.stored.event": 933
|
||||
},
|
||||
"culprit": "",
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"b1e874f29de1cc06a65a1cb4faafc21b"
|
||||
],
|
||||
"key_id": "1146336",
|
||||
"level": "info",
|
||||
"location": null,
|
||||
"logentry": {
|
||||
"message": null,
|
||||
"params": null,
|
||||
"formatted": "Test event from node."
|
||||
},
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"title": "Test event from node."
|
||||
},
|
||||
"received": 1588226996.493251,
|
||||
"sdk": {
|
||||
"version": "5.15.5",
|
||||
"name": "sentry.javascript.node",
|
||||
"packages": [
|
||||
{
|
||||
"version": "5.15.5",
|
||||
"name": "npm:@sentry/node"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"InboundFilters",
|
||||
"FunctionToString",
|
||||
"Console",
|
||||
"Http",
|
||||
"OnUncaughtException",
|
||||
"OnUnhandledRejection",
|
||||
"LinkedErrors"
|
||||
]
|
||||
},
|
||||
"timestamp": 1588226996.493251,
|
||||
"title": "Test event from node.",
|
||||
"type": "default",
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/6886bb1fe7ce4497b7836f6083d5fd34/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1638840427/events/6886bb1fe7ce4497b7836f6083d5fd34/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1638840427/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
118
zerver/webhooks/sentry/fixtures/event_for_message_python.json
Normal file
118
zerver/webhooks/sentry/fixtures/event_for_message_python.json
Normal file
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "8da63b42375e4d3b803c377fefb062f8",
|
||||
"project": 5216640,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "python",
|
||||
"message": "A simple message-based issue.",
|
||||
"datetime": "2020-04-28T14:05:04.210463Z",
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"info"
|
||||
],
|
||||
[
|
||||
"runtime",
|
||||
"CPython 3.6.9"
|
||||
],
|
||||
[
|
||||
"runtime.name",
|
||||
"CPython"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"hp-pavilion"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 796,
|
||||
"bytes.stored.event": 1339
|
||||
},
|
||||
"contexts": {
|
||||
"runtime": {
|
||||
"version": "3.6.9",
|
||||
"type": "runtime",
|
||||
"name": "CPython",
|
||||
"build": "3.6.9 (default, Apr 18 2020, 01:56:04) \n[GCC 8.4.0]"
|
||||
}
|
||||
},
|
||||
"culprit": "",
|
||||
"extra": {
|
||||
"sys.argv": [
|
||||
"trigger-message.py"
|
||||
]
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"hashes": [
|
||||
"b31896ab3433f42862a78d60fca14636"
|
||||
],
|
||||
"key_id": "1146336",
|
||||
"level": "info",
|
||||
"location": null,
|
||||
"logentry": {
|
||||
"message": null,
|
||||
"params": null,
|
||||
"formatted": "A simple message-based issue."
|
||||
},
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"title": "A simple message-based issue."
|
||||
},
|
||||
"modules": {
|
||||
"wheel": "0.34.2",
|
||||
"pkg-resources": "0.0.0",
|
||||
"sentry-sdk": "0.14.3",
|
||||
"urllib3": "1.25.9",
|
||||
"setuptools": "46.1.3",
|
||||
"pip": "20.0.2",
|
||||
"certifi": "2020.4.5.1"
|
||||
},
|
||||
"received": 1588082705.406414,
|
||||
"sdk": {
|
||||
"version": "0.14.3",
|
||||
"name": "sentry.python",
|
||||
"packages": [
|
||||
{
|
||||
"version": "0.14.3",
|
||||
"name": "pypi:sentry-sdk"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"argv",
|
||||
"atexit",
|
||||
"dedupe",
|
||||
"excepthook",
|
||||
"logging",
|
||||
"modules",
|
||||
"stdlib",
|
||||
"threading"
|
||||
]
|
||||
},
|
||||
"timestamp": 1588082704.210463,
|
||||
"title": "A simple message-based issue.",
|
||||
"type": "default",
|
||||
"version": "7",
|
||||
"url": "https://sentry.io/api/0/projects/hypro999-personal-organization/zulip-integration-testing/events/8da63b42375e4d3b803c377fefb062f8/",
|
||||
"web_url": "https://sentry.io/organizations/hypro999-personal-organization/issues/1635261062/events/8da63b42375e4d3b803c377fefb062f8/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/1635261062/"
|
||||
},
|
||||
"triggered_rule": "Send a webhook payload to Webhook.site"
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"action": "assigned",
|
||||
"data": {
|
||||
"assignee": {
|
||||
"type": "user",
|
||||
"id": 662437,
|
||||
"name": "Hemanth V. Alluri",
|
||||
"email": "hdrive1999@gmail.com"
|
||||
},
|
||||
"issue": {
|
||||
"platform": "go",
|
||||
"lastSeen": "2020-04-30T06:14:13.611851Z",
|
||||
"numComments": 0,
|
||||
"userCount": 0,
|
||||
"culprit": "",
|
||||
"title": "A test message event from golang.",
|
||||
"id": "1638844654",
|
||||
"assignedTo": {
|
||||
"type": "user",
|
||||
"email": "hdrive1999@gmail.com",
|
||||
"name": "Hemanth V. Alluri",
|
||||
"id": "662437"
|
||||
},
|
||||
"logger": null,
|
||||
"type": "default",
|
||||
"annotations": [],
|
||||
"metadata": {
|
||||
"title": "A test message event from golang."
|
||||
},
|
||||
"status": "unresolved",
|
||||
"subscriptionDetails": null,
|
||||
"isPublic": false,
|
||||
"hasSeen": false,
|
||||
"shortId": "ZULIP-INTEGRATION-TESTING-G",
|
||||
"shareId": null,
|
||||
"firstSeen": "2020-04-30T06:14:13.611851Z",
|
||||
"count": "1",
|
||||
"permalink": null,
|
||||
"level": "info",
|
||||
"isSubscribed": false,
|
||||
"isBookmarked": false,
|
||||
"project": {
|
||||
"platform": "python",
|
||||
"slug": "zulip-integration-testing",
|
||||
"id": "5216640",
|
||||
"name": "Zulip Integration Testing"
|
||||
},
|
||||
"statusDetails": {}
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "user",
|
||||
"id": 662437,
|
||||
"name": "Hemanth V. Alluri"
|
||||
}
|
||||
}
|
||||
60
zerver/webhooks/sentry/fixtures/issue_assigned_to_team.json
Normal file
60
zerver/webhooks/sentry/fixtures/issue_assigned_to_team.json
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"action": "assigned",
|
||||
"data": {
|
||||
"assignee": {
|
||||
"type": "team",
|
||||
"name": "Hypro999",
|
||||
"id": 473371
|
||||
},
|
||||
"issue": {
|
||||
"platform": "python",
|
||||
"lastSeen": "2020-04-30T05:54:15.092476Z",
|
||||
"numComments": 0,
|
||||
"userCount": 0,
|
||||
"culprit": "__main__ in <module>",
|
||||
"title": "Exception: program has entered an invalid state.",
|
||||
"id": "1638821441",
|
||||
"assignedTo": {
|
||||
"type": "team",
|
||||
"id": "473371",
|
||||
"name": "lone-wolf"
|
||||
},
|
||||
"logger": null,
|
||||
"type": "error",
|
||||
"annotations": [],
|
||||
"metadata": {
|
||||
"function": "<module>",
|
||||
"type": "Exception",
|
||||
"value": "program has entered an invalid state.",
|
||||
"filename": "trigger-exception.py"
|
||||
},
|
||||
"status": "unresolved",
|
||||
"subscriptionDetails": null,
|
||||
"isPublic": false,
|
||||
"hasSeen": false,
|
||||
"shortId": "ZULIP-INTEGRATION-TESTING-E",
|
||||
"shareId": null,
|
||||
"firstSeen": "2020-04-30T05:54:15.092476Z",
|
||||
"count": "1",
|
||||
"permalink": null,
|
||||
"level": "error",
|
||||
"isSubscribed": false,
|
||||
"isBookmarked": false,
|
||||
"project": {
|
||||
"platform": "python",
|
||||
"slug": "zulip-integration-testing",
|
||||
"id": "5216640",
|
||||
"name": "Zulip Integration Testing"
|
||||
},
|
||||
"statusDetails": {}
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "user",
|
||||
"id": 662437,
|
||||
"name": "Hemanth V. Alluri"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"action": "created",
|
||||
"data": {
|
||||
"issue": {
|
||||
"platform": "python",
|
||||
"lastSeen": "2020-04-28T13:56:05.903736Z",
|
||||
"numComments": 0,
|
||||
"userCount": 0,
|
||||
"culprit": "__main__ in <module>",
|
||||
"title": "Exception: Custom exception!",
|
||||
"id": "1635244907",
|
||||
"assignedTo": null,
|
||||
"logger": null,
|
||||
"type": "error",
|
||||
"annotations": [],
|
||||
"metadata": {
|
||||
"function": "<module>",
|
||||
"type": "Exception",
|
||||
"value": "Custom exception!",
|
||||
"filename": "trigger-exception.py"
|
||||
},
|
||||
"status": "unresolved",
|
||||
"subscriptionDetails": null,
|
||||
"isPublic": false,
|
||||
"hasSeen": false,
|
||||
"shortId": "ZULIP-INTEGRATION-TESTING-2",
|
||||
"shareId": null,
|
||||
"firstSeen": "2020-04-28T13:56:05.903736Z",
|
||||
"count": "1",
|
||||
"permalink": null,
|
||||
"level": "error",
|
||||
"isSubscribed": false,
|
||||
"isBookmarked": false,
|
||||
"project": {
|
||||
"platform": "python",
|
||||
"slug": "zulip-integration-testing",
|
||||
"id": "5216640",
|
||||
"name": "Zulip Integration Testing"
|
||||
},
|
||||
"statusDetails": {}
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"action": "created",
|
||||
"data": {
|
||||
"issue": {
|
||||
"platform": "python",
|
||||
"lastSeen": "2020-04-28T14:05:04.210463Z",
|
||||
"numComments": 0,
|
||||
"userCount": 0,
|
||||
"culprit": "",
|
||||
"title": "A simple message-based issue.",
|
||||
"id": "1635261062",
|
||||
"assignedTo": null,
|
||||
"logger": null,
|
||||
"type": "default",
|
||||
"annotations": [],
|
||||
"metadata": {
|
||||
"title": "A simple message-based issue."
|
||||
},
|
||||
"status": "unresolved",
|
||||
"subscriptionDetails": null,
|
||||
"isPublic": false,
|
||||
"hasSeen": false,
|
||||
"shortId": "ZULIP-INTEGRATION-TESTING-3",
|
||||
"shareId": null,
|
||||
"firstSeen": "2020-04-28T14:05:04.210463Z",
|
||||
"count": "1",
|
||||
"permalink": null,
|
||||
"level": "info",
|
||||
"isSubscribed": false,
|
||||
"isBookmarked": false,
|
||||
"project": {
|
||||
"platform": "python",
|
||||
"slug": "zulip-integration-testing",
|
||||
"id": "5216640",
|
||||
"name": "Zulip Integration Testing"
|
||||
},
|
||||
"statusDetails": {}
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
51
zerver/webhooks/sentry/fixtures/issue_ignored.json
Normal file
51
zerver/webhooks/sentry/fixtures/issue_ignored.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"action": "ignored",
|
||||
"data": {
|
||||
"issue": {
|
||||
"platform": "python",
|
||||
"lastSeen": "2020-04-30T05:54:15.092476Z",
|
||||
"numComments": 0,
|
||||
"userCount": 0,
|
||||
"culprit": "__main__ in <module>",
|
||||
"title": "Exception: program has entered an invalid state.",
|
||||
"id": "1638821441",
|
||||
"assignedTo": null,
|
||||
"logger": null,
|
||||
"type": "error",
|
||||
"annotations": [],
|
||||
"metadata": {
|
||||
"function": "<module>",
|
||||
"type": "Exception",
|
||||
"value": "program has entered an invalid state.",
|
||||
"filename": "trigger-exception.py"
|
||||
},
|
||||
"status": "ignored",
|
||||
"subscriptionDetails": null,
|
||||
"isPublic": false,
|
||||
"hasSeen": false,
|
||||
"shortId": "ZULIP-INTEGRATION-TESTING-E",
|
||||
"shareId": null,
|
||||
"firstSeen": "2020-04-30T05:54:15.092476Z",
|
||||
"count": "1",
|
||||
"permalink": null,
|
||||
"level": "error",
|
||||
"isSubscribed": false,
|
||||
"isBookmarked": false,
|
||||
"project": {
|
||||
"platform": "python",
|
||||
"slug": "zulip-integration-testing",
|
||||
"id": "5216640",
|
||||
"name": "Zulip Integration Testing"
|
||||
},
|
||||
"statusDetails": {}
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "user",
|
||||
"id": 662437,
|
||||
"name": "Hemanth V. Alluri"
|
||||
}
|
||||
}
|
||||
52
zerver/webhooks/sentry/fixtures/issue_resolved.json
Normal file
52
zerver/webhooks/sentry/fixtures/issue_resolved.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"action": "resolved",
|
||||
"data": {
|
||||
"resolution_type": "now",
|
||||
"issue": {
|
||||
"platform": "python",
|
||||
"lastSeen": "2020-04-30T05:54:15.092476Z",
|
||||
"numComments": 0,
|
||||
"userCount": 0,
|
||||
"culprit": "__main__ in <module>",
|
||||
"title": "Exception: program has entered an invalid state.",
|
||||
"id": "1638821441",
|
||||
"assignedTo": null,
|
||||
"logger": null,
|
||||
"type": "error",
|
||||
"annotations": [],
|
||||
"metadata": {
|
||||
"function": "<module>",
|
||||
"type": "Exception",
|
||||
"value": "program has entered an invalid state.",
|
||||
"filename": "trigger-exception.py"
|
||||
},
|
||||
"status": "resolved",
|
||||
"subscriptionDetails": null,
|
||||
"isPublic": false,
|
||||
"hasSeen": false,
|
||||
"shortId": "ZULIP-INTEGRATION-TESTING-E",
|
||||
"shareId": null,
|
||||
"firstSeen": "2020-04-30T05:54:15.092476Z",
|
||||
"count": "1",
|
||||
"permalink": null,
|
||||
"level": "error",
|
||||
"isSubscribed": false,
|
||||
"isBookmarked": false,
|
||||
"project": {
|
||||
"platform": "python",
|
||||
"slug": "zulip-integration-testing",
|
||||
"id": "5216640",
|
||||
"name": "Zulip Integration Testing"
|
||||
},
|
||||
"statusDetails": {}
|
||||
}
|
||||
},
|
||||
"installation": {
|
||||
"uuid": "65027794-169a-4042-80d0-808ece377141"
|
||||
},
|
||||
"actor": {
|
||||
"type": "user",
|
||||
"id": 662437,
|
||||
"name": "Hemanth V. Alluri"
|
||||
}
|
||||
}
|
||||
134
zerver/webhooks/sentry/fixtures/raven_sdk_python_event.json
Normal file
134
zerver/webhooks/sentry/fixtures/raven_sdk_python_event.json
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"id": "4311163364",
|
||||
"project": "python-raven",
|
||||
"project_name": "python-raven",
|
||||
"project_slug": "python-raven",
|
||||
"logger": null,
|
||||
"level": "error",
|
||||
"culprit": "__main__ in <module>",
|
||||
"message": "ZeroDivisionError: division by zero",
|
||||
"url": "https://nitk-46.sentry.io/issues/4311163364/?referrer=webhooks_plugin",
|
||||
"triggering_rules": [
|
||||
"a"
|
||||
],
|
||||
"event": {
|
||||
"event_id": "b465c7ca9581475093a6f5c3c6a523d2",
|
||||
"level": "error",
|
||||
"version": "6",
|
||||
"type": "error",
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"culprit": "__main__ in <module>",
|
||||
"logentry": {
|
||||
"formatted": "ZeroDivisionError: division by zero"
|
||||
},
|
||||
"logger": "",
|
||||
"modules": {
|
||||
"python": "3.10.6"
|
||||
},
|
||||
"platform": "python",
|
||||
"timestamp": 1689194871.0,
|
||||
"received": 1689194872.041476,
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"type": "ZeroDivisionError",
|
||||
"value": "division by zero",
|
||||
"module": "builtins",
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "<module>",
|
||||
"module": "__main__",
|
||||
"filename": "sentry/temp.py",
|
||||
"abs_path": "/home/sbansal1999/p/sentry/temp.py",
|
||||
"lineno": 6,
|
||||
"pre_context": [
|
||||
"from raven import Client",
|
||||
"",
|
||||
"client = Client('https://6130e69dc19e426e87deaa54744be1cd@o4505261800423424.ingest.sentry.io/4505518370586624')",
|
||||
"",
|
||||
"try:"
|
||||
],
|
||||
"context_line": " 1 / 0",
|
||||
"post_context": [
|
||||
"except ZeroDivisionError:",
|
||||
" client.captureException()"
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"Client": "<class 'raven.base.Client'>",
|
||||
"__annotations__": {},
|
||||
"__builtins__": "<module 'builtins' (built-in)>",
|
||||
"__cached__": null,
|
||||
"__doc__": null,
|
||||
"__file__": "'/home/sbansal1999/p/sentry/temp.py'",
|
||||
"__loader__": "<_frozen_importlib_external.SourceFileLoader object at 0x7fd40cfdd930>",
|
||||
"__name__": "'__main__'",
|
||||
"__package__": null,
|
||||
"__spec__": null,
|
||||
"client": "<raven.base.Client object at 0x7fd40d107c10>"
|
||||
},
|
||||
"data": {
|
||||
"orig_in_app": -1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"sbansal1999-OMEN-Laptop-15-en0xxx"
|
||||
]
|
||||
],
|
||||
"extra": {
|
||||
"sys.argv": [
|
||||
"'temp.py'"
|
||||
]
|
||||
},
|
||||
"sdk": {
|
||||
"name": "raven-python",
|
||||
"version": "6.10.0"
|
||||
},
|
||||
"ingest_path": [
|
||||
{
|
||||
"version": "23.6.2",
|
||||
"public_key": "XE7QiyuNlja9PZ7I9qJlwQotzecWrUIN91BAO7Q5R38"
|
||||
}
|
||||
],
|
||||
"key_id": "3267509",
|
||||
"project": 4505518370586624,
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDRxc15qeXFJZU6qlZGBkbGugaGuoeEEAHJMCAM",
|
||||
"id": "newstyle:2023-01-11"
|
||||
},
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 1549,
|
||||
"bytes.stored.event": 2356
|
||||
},
|
||||
"_ref": 4505518370586624,
|
||||
"_ref_version": 2,
|
||||
"hashes": [
|
||||
"cac8c3af9240e70448922144a14f55b3"
|
||||
],
|
||||
"location": "sentry/temp.py",
|
||||
"metadata": {
|
||||
"display_title_with_tree_label": false,
|
||||
"filename": "sentry/temp.py",
|
||||
"function": "<module>",
|
||||
"type": "ZeroDivisionError",
|
||||
"value": "division by zero"
|
||||
},
|
||||
"nodestore_insert": 1689194873.112506,
|
||||
"title": "ZeroDivisionError: division by zero",
|
||||
"id": "b465c7ca9581475093a6f5c3c6a523d2"
|
||||
}
|
||||
}
|
||||
479
zerver/webhooks/sentry/fixtures/sample_event_through_alert.json
Normal file
479
zerver/webhooks/sentry/fixtures/sample_event_through_alert.json
Normal file
@@ -0,0 +1,479 @@
|
||||
{
|
||||
"action": "triggered",
|
||||
"installation": {
|
||||
"uuid": "be1b14f8-ffad-41af-8e97-24a9c32ebc26"
|
||||
},
|
||||
"data": {
|
||||
"event": {
|
||||
"event_id": "b6eff1a49b1f4132850b1238d968da70",
|
||||
"project": 4505278293147648,
|
||||
"release": null,
|
||||
"dist": null,
|
||||
"platform": "python",
|
||||
"message": "This is an example Python exception",
|
||||
"datetime": "2023-05-31T11:06:16.247000Z",
|
||||
"tags": [
|
||||
[
|
||||
"browser",
|
||||
"Chrome 28.0.1500"
|
||||
],
|
||||
[
|
||||
"browser.name",
|
||||
"Chrome"
|
||||
],
|
||||
[
|
||||
"client_os",
|
||||
"Windows 8"
|
||||
],
|
||||
[
|
||||
"client_os.name",
|
||||
"Windows"
|
||||
],
|
||||
[
|
||||
"environment",
|
||||
"prod"
|
||||
],
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"sample_event",
|
||||
"yes"
|
||||
],
|
||||
[
|
||||
"user",
|
||||
"id:1"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"web01.example.org"
|
||||
],
|
||||
[
|
||||
"url",
|
||||
"http://example.com/foo"
|
||||
]
|
||||
],
|
||||
"_metrics": {
|
||||
"bytes.stored.event": 8070
|
||||
},
|
||||
"_ref": 4505278293147648,
|
||||
"_ref_version": 2,
|
||||
"contexts": {
|
||||
"browser": {
|
||||
"name": "Chrome",
|
||||
"version": "28.0.1500",
|
||||
"type": "browser"
|
||||
},
|
||||
"client_os": {
|
||||
"name": "Windows",
|
||||
"version": "8",
|
||||
"type": "os"
|
||||
}
|
||||
},
|
||||
"culprit": "raven.scripts.runner in main",
|
||||
"environment": "prod",
|
||||
"extra": {
|
||||
"emptyList": [],
|
||||
"emptyMap": {},
|
||||
"length": 10837790,
|
||||
"results": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5
|
||||
],
|
||||
"session": {
|
||||
"foo": "bar"
|
||||
},
|
||||
"unauthorized": false,
|
||||
"url": "http://example.org/foo/bar/"
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"hashes": [
|
||||
"3a2b45089d0211943e5a6645fb4cea3f"
|
||||
],
|
||||
"level": "error",
|
||||
"location": null,
|
||||
"logentry": {
|
||||
"formatted": "This is an example Python exception",
|
||||
"message": null,
|
||||
"params": null
|
||||
},
|
||||
"logger": "",
|
||||
"metadata": {
|
||||
"title": "This is an example Python exception"
|
||||
},
|
||||
"modules": {
|
||||
"my.package": "1.0.0"
|
||||
},
|
||||
"nodestore_insert": 1685531237.009953,
|
||||
"received": 1685531236.249363,
|
||||
"request": {
|
||||
"url": "http://example.com/foo",
|
||||
"method": "GET",
|
||||
"data": {
|
||||
"hello": "world"
|
||||
},
|
||||
"query_string": [
|
||||
[
|
||||
"foo",
|
||||
"bar"
|
||||
]
|
||||
],
|
||||
"cookies": [
|
||||
[
|
||||
"foo",
|
||||
"bar"
|
||||
],
|
||||
[
|
||||
"biz",
|
||||
"baz"
|
||||
]
|
||||
],
|
||||
"headers": [
|
||||
[
|
||||
"Content-Type",
|
||||
"application/json"
|
||||
],
|
||||
[
|
||||
"Referer",
|
||||
"http://example.com"
|
||||
],
|
||||
[
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36"
|
||||
]
|
||||
],
|
||||
"env": {
|
||||
"ENV": "prod"
|
||||
},
|
||||
"inferred_content_type": "application/json",
|
||||
"fragment": null
|
||||
},
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "build_msg",
|
||||
"module": "raven.base",
|
||||
"filename": "raven/base.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py",
|
||||
"lineno": 303,
|
||||
"pre_context": [
|
||||
" frames = stack",
|
||||
"",
|
||||
" data.update({",
|
||||
" 'sentry.interfaces.Stacktrace': {",
|
||||
" 'frames': get_stack_info(frames,"
|
||||
],
|
||||
"context_line": " transformer=self.transform)",
|
||||
"post_context": [
|
||||
" },",
|
||||
" })",
|
||||
"",
|
||||
" if 'sentry.interfaces.Stacktrace' in data:",
|
||||
" if self.include_paths:"
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'culprit'": null,
|
||||
"'data'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'sentry.interfaces.Message'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'params'": []
|
||||
}
|
||||
},
|
||||
"'date'": "datetime.datetime(2013, 8, 13, 3, 8, 24, 880386)",
|
||||
"'event_id'": "'54a322436e1b47b88e239b78998ae742'",
|
||||
"'event_type'": "'raven.events.Message'",
|
||||
"'extra'": {
|
||||
"'go_deeper'": [
|
||||
[
|
||||
"{\"'bar'\":[\"'baz'\"],\"'foo'\":\"'bar'\"}"
|
||||
]
|
||||
],
|
||||
"'loadavg'": [
|
||||
0.37255859375,
|
||||
0.5341796875,
|
||||
0.62939453125
|
||||
],
|
||||
"'user'": "'dcramer'"
|
||||
},
|
||||
"'frames'": "<generator object iter_stack_frames at 0x107bcc3c0>",
|
||||
"'handler'": "<raven.events.Message object at 0x107bd0890>",
|
||||
"'k'": "'sentry.interfaces.Message'",
|
||||
"'kwargs'": {
|
||||
"'level'": 20,
|
||||
"'message'": "'This is a test message generated using ``raven test``'"
|
||||
},
|
||||
"'public_key'": null,
|
||||
"'result'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'sentry.interfaces.Message'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'params'": []
|
||||
}
|
||||
},
|
||||
"'self'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'stack'": true,
|
||||
"'tags'": null,
|
||||
"'time_spent'": null,
|
||||
"'v'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'params'": []
|
||||
}
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null
|
||||
},
|
||||
{
|
||||
"function": "capture",
|
||||
"module": "raven.base",
|
||||
"filename": "raven/base.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py",
|
||||
"lineno": 459,
|
||||
"pre_context": [
|
||||
" if not self.is_enabled():",
|
||||
" return",
|
||||
"",
|
||||
" data = self.build_msg(",
|
||||
" event_type, data, date, time_spent, extra, stack, tags=tags,"
|
||||
],
|
||||
"context_line": " **kwargs)",
|
||||
"post_context": [
|
||||
"",
|
||||
" self.send(**data)",
|
||||
"",
|
||||
" return (data.get('event_id'),)",
|
||||
""
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'data'": null,
|
||||
"'date'": null,
|
||||
"'event_type'": "'raven.events.Message'",
|
||||
"'extra'": {
|
||||
"'go_deeper'": [
|
||||
[
|
||||
"{\"'bar'\":[\"'baz'\"],\"'foo'\":\"'bar'\"}"
|
||||
]
|
||||
],
|
||||
"'loadavg'": [
|
||||
0.37255859375,
|
||||
0.5341796875,
|
||||
0.62939453125
|
||||
],
|
||||
"'user'": "'dcramer'"
|
||||
},
|
||||
"'kwargs'": {
|
||||
"'level'": 20,
|
||||
"'message'": "'This is a test message generated using ``raven test``'"
|
||||
},
|
||||
"'self'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'stack'": true,
|
||||
"'tags'": null,
|
||||
"'time_spent'": null
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null
|
||||
},
|
||||
{
|
||||
"function": "captureMessage",
|
||||
"module": "raven.base",
|
||||
"filename": "raven/base.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py",
|
||||
"lineno": 577,
|
||||
"pre_context": [
|
||||
" \"\"\"",
|
||||
" Creates an event from ``message``.",
|
||||
"",
|
||||
" >>> client.captureMessage('My event just happened!')",
|
||||
" \"\"\""
|
||||
],
|
||||
"context_line": " return self.capture('raven.events.Message', message=message, **kwargs)",
|
||||
"post_context": [
|
||||
"",
|
||||
" def captureException(self, exc_info=None, **kwargs):",
|
||||
" \"\"\"",
|
||||
" Creates an event from an exception.",
|
||||
""
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'kwargs'": {
|
||||
"'data'": null,
|
||||
"'extra'": {
|
||||
"'go_deeper'": [
|
||||
"[{\"'bar'\":[\"'baz'\"],\"'foo'\":\"'bar'\"}]"
|
||||
],
|
||||
"'loadavg'": [
|
||||
0.37255859375,
|
||||
0.5341796875,
|
||||
0.62939453125
|
||||
],
|
||||
"'user'": "'dcramer'"
|
||||
},
|
||||
"'level'": 20,
|
||||
"'stack'": true,
|
||||
"'tags'": null
|
||||
},
|
||||
"'message'": "'This is a test message generated using ``raven test``'",
|
||||
"'self'": "<raven.base.Client object at 0x107bb8210>"
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null
|
||||
},
|
||||
{
|
||||
"function": "send_test_message",
|
||||
"module": "raven.scripts.runner",
|
||||
"filename": "raven/scripts/runner.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/scripts/runner.py",
|
||||
"lineno": 77,
|
||||
"pre_context": [
|
||||
" level=logging.INFO,",
|
||||
" stack=True,",
|
||||
" tags=options.get('tags', {}),",
|
||||
" extra={",
|
||||
" 'user': get_uid(),"
|
||||
],
|
||||
"context_line": " 'loadavg': get_loadavg(),",
|
||||
"post_context": [
|
||||
" },",
|
||||
" ))",
|
||||
"",
|
||||
" if client.state.did_fail():",
|
||||
" print('error!')"
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'client'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'data'": null,
|
||||
"'k'": "'secret_key'",
|
||||
"'options'": {
|
||||
"'data'": null,
|
||||
"'tags'": null
|
||||
}
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null
|
||||
},
|
||||
{
|
||||
"function": "main",
|
||||
"module": "raven.scripts.runner",
|
||||
"filename": "raven/scripts/runner.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/scripts/runner.py",
|
||||
"lineno": 112,
|
||||
"pre_context": [
|
||||
" print(\"Using DSN configuration:\")",
|
||||
" print(\" \", dsn)",
|
||||
" print()",
|
||||
"",
|
||||
" client = Client(dsn, include_paths=['raven'])"
|
||||
],
|
||||
"context_line": " send_test_message(client, opts.__dict__)",
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'args'": [
|
||||
"'test'",
|
||||
"'https://ebc35f33e151401f9deac549978bda11:f3403f81e12e4c24942d505f086b2cad@sentry.io/1'"
|
||||
],
|
||||
"'client'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'dsn'": "'https://ebc35f33e151401f9deac549978bda11:f3403f81e12e4c24942d505f086b2cad@sentry.io/1'",
|
||||
"'opts'": "<Values at 0x107ba3b00: {'data': None, 'tags': None}>",
|
||||
"'parser'": "<optparse.OptionParser instance at 0x107ba3368>",
|
||||
"'root'": "<logging.Logger object at 0x107ba5b10>"
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"post_context": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"timestamp": 1685531176.247,
|
||||
"title": "This is an example Python exception",
|
||||
"type": "default",
|
||||
"user": {
|
||||
"id": "1",
|
||||
"email": "sentry@example.com",
|
||||
"ip_address": "127.0.0.1",
|
||||
"username": "sentry",
|
||||
"name": "Sentry",
|
||||
"geo": {
|
||||
"country_code": "AU",
|
||||
"city": "Melbourne",
|
||||
"region": "VIC"
|
||||
}
|
||||
},
|
||||
"version": "5",
|
||||
"url": "https://sentry.io/api/0/projects/nitk-46/python/events/b6eff1a49b1f4132850b1238d968da70/",
|
||||
"web_url": "https://sentry.io/organizations/nitk-46/issues/4218258981/events/b6eff1a49b1f4132850b1238d968da70/",
|
||||
"issue_url": "https://sentry.io/api/0/issues/4218258981/",
|
||||
"issue_id": "4218258981"
|
||||
},
|
||||
"triggered_rule": ""
|
||||
},
|
||||
"actor": {
|
||||
"type": "application",
|
||||
"id": "sentry",
|
||||
"name": "Sentry"
|
||||
}
|
||||
}
|
||||
471
zerver/webhooks/sentry/fixtures/sample_event_through_plugin.json
Normal file
471
zerver/webhooks/sentry/fixtures/sample_event_through_plugin.json
Normal file
@@ -0,0 +1,471 @@
|
||||
{
|
||||
"id": "4218258981",
|
||||
"project": "python",
|
||||
"project_name": "python",
|
||||
"project_slug": "python",
|
||||
"logger": null,
|
||||
"level": "error",
|
||||
"culprit": "raven.scripts.runner in main",
|
||||
"message": "This is an example Python exception",
|
||||
"url": "https://nitk-46.sentry.io/issues/4218258981/?referrer=webhooks_plugin",
|
||||
"triggering_rules": [],
|
||||
"event": {
|
||||
"event_id": "4dc4fc2858aa450eb658be9e5b8ad149",
|
||||
"level": "error",
|
||||
"version": "5",
|
||||
"type": "default",
|
||||
"logentry": {
|
||||
"formatted": "This is an example Python exception",
|
||||
"message": null,
|
||||
"params": null
|
||||
},
|
||||
"logger": "",
|
||||
"modules": {
|
||||
"my.package": "1.0.0"
|
||||
},
|
||||
"platform": "python",
|
||||
"timestamp": 1688935284.772,
|
||||
"received": 1688935344.773181,
|
||||
"environment": "prod",
|
||||
"user": {
|
||||
"id": "1",
|
||||
"email": "sentry@example.com",
|
||||
"ip_address": "127.0.0.1",
|
||||
"username": "sentry",
|
||||
"name": "Sentry",
|
||||
"geo": {
|
||||
"country_code": "GB",
|
||||
"city": "London",
|
||||
"region": "H9"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"url": "http://example.com/foo",
|
||||
"method": "GET",
|
||||
"data": {
|
||||
"hello": "world"
|
||||
},
|
||||
"query_string": [
|
||||
[
|
||||
"foo",
|
||||
"bar"
|
||||
]
|
||||
],
|
||||
"cookies": [
|
||||
[
|
||||
"foo",
|
||||
"bar"
|
||||
],
|
||||
[
|
||||
"biz",
|
||||
"baz"
|
||||
]
|
||||
],
|
||||
"headers": [
|
||||
[
|
||||
"Content-Type",
|
||||
"application/json"
|
||||
],
|
||||
[
|
||||
"Referer",
|
||||
"http://example.com"
|
||||
],
|
||||
[
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36"
|
||||
]
|
||||
],
|
||||
"env": {
|
||||
"ENV": "prod"
|
||||
},
|
||||
"inferred_content_type": "application/json",
|
||||
"api_target": null,
|
||||
"fragment": null
|
||||
},
|
||||
"contexts": {
|
||||
"browser": {
|
||||
"name": "Chrome",
|
||||
"version": "28.0.1500",
|
||||
"type": "browser"
|
||||
},
|
||||
"client_os": {
|
||||
"name": "Windows",
|
||||
"version": "8",
|
||||
"type": "os"
|
||||
}
|
||||
},
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "build_msg",
|
||||
"module": "raven.base",
|
||||
"filename": "raven/base.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py",
|
||||
"lineno": 303,
|
||||
"pre_context": [
|
||||
" frames = stack",
|
||||
"",
|
||||
" data.update({",
|
||||
" 'sentry.interfaces.Stacktrace': {",
|
||||
" 'frames': get_stack_info(frames,"
|
||||
],
|
||||
"context_line": " transformer=self.transform)",
|
||||
"post_context": [
|
||||
" },",
|
||||
" })",
|
||||
"",
|
||||
" if 'sentry.interfaces.Stacktrace' in data:",
|
||||
" if self.include_paths:"
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'culprit'": null,
|
||||
"'data'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'sentry.interfaces.Message'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'params'": []
|
||||
}
|
||||
},
|
||||
"'date'": "datetime.datetime(2013, 8, 13, 3, 8, 24, 880386)",
|
||||
"'event_id'": "'54a322436e1b47b88e239b78998ae742'",
|
||||
"'event_type'": "'raven.events.Message'",
|
||||
"'extra'": {
|
||||
"'go_deeper'": [
|
||||
[
|
||||
"{\"'bar'\":[\"'baz'\"],\"'foo'\":\"'bar'\"}"
|
||||
]
|
||||
],
|
||||
"'loadavg'": [
|
||||
0.37255859375,
|
||||
0.5341796875,
|
||||
0.62939453125
|
||||
],
|
||||
"'user'": "'dcramer'"
|
||||
},
|
||||
"'frames'": "<generator object iter_stack_frames at 0x107bcc3c0>",
|
||||
"'handler'": "<raven.events.Message object at 0x107bd0890>",
|
||||
"'k'": "'sentry.interfaces.Message'",
|
||||
"'kwargs'": {
|
||||
"'level'": 20,
|
||||
"'message'": "'This is a test message generated using ``raven test``'"
|
||||
},
|
||||
"'public_key'": null,
|
||||
"'result'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'sentry.interfaces.Message'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'params'": []
|
||||
}
|
||||
},
|
||||
"'self'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'stack'": true,
|
||||
"'tags'": null,
|
||||
"'time_spent'": null,
|
||||
"'v'": {
|
||||
"'message'": "u'This is a test message generated using ``raven test``'",
|
||||
"'params'": []
|
||||
}
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null,
|
||||
"lock": null
|
||||
},
|
||||
{
|
||||
"function": "capture",
|
||||
"module": "raven.base",
|
||||
"filename": "raven/base.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py",
|
||||
"lineno": 459,
|
||||
"pre_context": [
|
||||
" if not self.is_enabled():",
|
||||
" return",
|
||||
"",
|
||||
" data = self.build_msg(",
|
||||
" event_type, data, date, time_spent, extra, stack, tags=tags,"
|
||||
],
|
||||
"context_line": " **kwargs)",
|
||||
"post_context": [
|
||||
"",
|
||||
" self.send(**data)",
|
||||
"",
|
||||
" return (data.get('event_id'),)",
|
||||
""
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'data'": null,
|
||||
"'date'": null,
|
||||
"'event_type'": "'raven.events.Message'",
|
||||
"'extra'": {
|
||||
"'go_deeper'": [
|
||||
[
|
||||
"{\"'bar'\":[\"'baz'\"],\"'foo'\":\"'bar'\"}"
|
||||
]
|
||||
],
|
||||
"'loadavg'": [
|
||||
0.37255859375,
|
||||
0.5341796875,
|
||||
0.62939453125
|
||||
],
|
||||
"'user'": "'dcramer'"
|
||||
},
|
||||
"'kwargs'": {
|
||||
"'level'": 20,
|
||||
"'message'": "'This is a test message generated using ``raven test``'"
|
||||
},
|
||||
"'self'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'stack'": true,
|
||||
"'tags'": null,
|
||||
"'time_spent'": null
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null,
|
||||
"lock": null
|
||||
},
|
||||
{
|
||||
"function": "captureMessage",
|
||||
"module": "raven.base",
|
||||
"filename": "raven/base.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/base.py",
|
||||
"lineno": 577,
|
||||
"pre_context": [
|
||||
" \"\"\"",
|
||||
" Creates an event from ``message``.",
|
||||
"",
|
||||
" >>> client.captureMessage('My event just happened!')",
|
||||
" \"\"\""
|
||||
],
|
||||
"context_line": " return self.capture('raven.events.Message', message=message, **kwargs)",
|
||||
"post_context": [
|
||||
"",
|
||||
" def captureException(self, exc_info=None, **kwargs):",
|
||||
" \"\"\"",
|
||||
" Creates an event from an exception.",
|
||||
""
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'kwargs'": {
|
||||
"'data'": null,
|
||||
"'extra'": {
|
||||
"'go_deeper'": [
|
||||
"[{\"'bar'\":[\"'baz'\"],\"'foo'\":\"'bar'\"}]"
|
||||
],
|
||||
"'loadavg'": [
|
||||
0.37255859375,
|
||||
0.5341796875,
|
||||
0.62939453125
|
||||
],
|
||||
"'user'": "'dcramer'"
|
||||
},
|
||||
"'level'": 20,
|
||||
"'stack'": true,
|
||||
"'tags'": null
|
||||
},
|
||||
"'message'": "'This is a test message generated using ``raven test``'",
|
||||
"'self'": "<raven.base.Client object at 0x107bb8210>"
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null,
|
||||
"lock": null
|
||||
},
|
||||
{
|
||||
"function": "send_test_message",
|
||||
"module": "raven.scripts.runner",
|
||||
"filename": "raven/scripts/runner.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/scripts/runner.py",
|
||||
"lineno": 77,
|
||||
"pre_context": [
|
||||
" level=logging.INFO,",
|
||||
" stack=True,",
|
||||
" tags=options.get('tags', {}),",
|
||||
" extra={",
|
||||
" 'user': get_uid(),"
|
||||
],
|
||||
"context_line": " 'loadavg': get_loadavg(),",
|
||||
"post_context": [
|
||||
" },",
|
||||
" ))",
|
||||
"",
|
||||
" if client.state.did_fail():",
|
||||
" print('error!')"
|
||||
],
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'client'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'data'": null,
|
||||
"'k'": "'secret_key'",
|
||||
"'options'": {
|
||||
"'data'": null,
|
||||
"'tags'": null
|
||||
}
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null,
|
||||
"lock": null
|
||||
},
|
||||
{
|
||||
"function": "main",
|
||||
"module": "raven.scripts.runner",
|
||||
"filename": "raven/scripts/runner.py",
|
||||
"abs_path": "/home/ubuntu/.virtualenvs/getsentry/src/raven/raven/scripts/runner.py",
|
||||
"lineno": 112,
|
||||
"pre_context": [
|
||||
" print(\"Using DSN configuration:\")",
|
||||
" print(\" \", dsn)",
|
||||
" print()",
|
||||
"",
|
||||
" client = Client(dsn, include_paths=['raven'])"
|
||||
],
|
||||
"context_line": " send_test_message(client, opts.__dict__)",
|
||||
"in_app": false,
|
||||
"vars": {
|
||||
"'args'": [
|
||||
"'test'",
|
||||
"'https://ebc35f33e151401f9deac549978bda11:f3403f81e12e4c24942d505f086b2cad@sentry.io/1'"
|
||||
],
|
||||
"'client'": "<raven.base.Client object at 0x107bb8210>",
|
||||
"'dsn'": "'https://ebc35f33e151401f9deac549978bda11:f3403f81e12e4c24942d505f086b2cad@sentry.io/1'",
|
||||
"'opts'": "<Values at 0x107ba3b00: {'data': None, 'tags': None}>",
|
||||
"'parser'": "<optparse.OptionParser instance at 0x107ba3368>",
|
||||
"'root'": "<logging.Logger object at 0x107ba5b10>"
|
||||
},
|
||||
"colno": null,
|
||||
"data": null,
|
||||
"errors": null,
|
||||
"raw_function": null,
|
||||
"image_addr": null,
|
||||
"instruction_addr": null,
|
||||
"addr_mode": null,
|
||||
"package": null,
|
||||
"platform": null,
|
||||
"post_context": null,
|
||||
"symbol": null,
|
||||
"symbol_addr": null,
|
||||
"trust": null,
|
||||
"snapshot": null,
|
||||
"lock": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"tags": [
|
||||
[
|
||||
"browser",
|
||||
"Chrome 28.0.1500"
|
||||
],
|
||||
[
|
||||
"browser.name",
|
||||
"Chrome"
|
||||
],
|
||||
[
|
||||
"client_os",
|
||||
"Windows 8"
|
||||
],
|
||||
[
|
||||
"client_os.name",
|
||||
"Windows"
|
||||
],
|
||||
[
|
||||
"environment",
|
||||
"prod"
|
||||
],
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"sentry:user",
|
||||
"id:1"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"web01.example.org"
|
||||
],
|
||||
[
|
||||
"url",
|
||||
"http://example.com/foo"
|
||||
]
|
||||
],
|
||||
"extra": {
|
||||
"emptyList": [],
|
||||
"emptyMap": {},
|
||||
"length": 10837790,
|
||||
"results": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5
|
||||
],
|
||||
"session": {
|
||||
"foo": "bar"
|
||||
},
|
||||
"unauthorized": false,
|
||||
"url": "http://example.org/foo/bar/"
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"hashes": [
|
||||
"3a2b45089d0211943e5a6645fb4cea3f"
|
||||
],
|
||||
"culprit": "raven.scripts.runner in main",
|
||||
"metadata": {
|
||||
"title": "This is an example Python exception"
|
||||
},
|
||||
"title": "This is an example Python exception",
|
||||
"location": null,
|
||||
"_ref": 4505278293147648,
|
||||
"_ref_version": 2,
|
||||
"_metrics": {
|
||||
"bytes.stored.event": 8121
|
||||
},
|
||||
"nodestore_insert": 1688935345.484592,
|
||||
"id": "4dc4fc2858aa450eb658be9e5b8ad149"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,178 @@
|
||||
{
|
||||
"project_name": "Live",
|
||||
"message": "",
|
||||
"id": "1982047746",
|
||||
"culprit": "debugger eval code",
|
||||
"project_slug": "live",
|
||||
"url": "https://sentry.io/organizations/foo-bar-org/issues/1982047746/?referrer=webhooks_plugin",
|
||||
"level": "error",
|
||||
"triggering_rules": [
|
||||
"Send a notification for new issues"
|
||||
],
|
||||
"event": {
|
||||
"extra": {
|
||||
"session:duration": 71705
|
||||
},
|
||||
"_ref_version": 2,
|
||||
"_ref": 5481202,
|
||||
"id": "f3bf5fc4e354451db9e885a69b2a2b51",
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 946,
|
||||
"flag.processing.error": true,
|
||||
"bytes.stored.event": 2683
|
||||
},
|
||||
"errors": [
|
||||
{
|
||||
"type": "invalid_attribute",
|
||||
"name": "trimHeadFrames"
|
||||
},
|
||||
{
|
||||
"url": "debugger eval code",
|
||||
"type": "js_no_source"
|
||||
}
|
||||
],
|
||||
"culprit": "debugger eval code",
|
||||
"title": "TypeError: can't access property \"bar\", x.foo is undefined",
|
||||
"event_id": "f3bf5fc4e354451db9e885a69b2a2b51",
|
||||
"breadcrumbs": {
|
||||
"values": [
|
||||
{
|
||||
"category": "console",
|
||||
"timestamp": 1603730322.773,
|
||||
"message": "configured !!!!",
|
||||
"type": "default",
|
||||
"level": "info"
|
||||
},
|
||||
{
|
||||
"category": "sentry",
|
||||
"timestamp": 1603730337.597,
|
||||
"message": "ReferenceError: doMoreSomethingUndefined is not defined",
|
||||
"type": "default",
|
||||
"level": "error"
|
||||
}
|
||||
]
|
||||
},
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY3J-bm5-npWRgaGlroGxrpHxBABcTQcY",
|
||||
"id": "newstyle:2019-10-29"
|
||||
},
|
||||
"platform": "javascript",
|
||||
"trimHeadFrames": null,
|
||||
"version": "7",
|
||||
"logger": "javascript",
|
||||
"type": "error",
|
||||
"metadata": {
|
||||
"type": "TypeError",
|
||||
"value": "can't access property \"bar\", x.foo is undefined"
|
||||
},
|
||||
"tags": [
|
||||
[
|
||||
"browser",
|
||||
"Firefox 83.0"
|
||||
],
|
||||
[
|
||||
"browser.name",
|
||||
"Firefox"
|
||||
],
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"logger",
|
||||
"javascript"
|
||||
],
|
||||
[
|
||||
"os.name",
|
||||
"Ubuntu"
|
||||
],
|
||||
[
|
||||
"sentry:user",
|
||||
"ip:106.206.50.32"
|
||||
],
|
||||
[
|
||||
"transaction",
|
||||
"debugger eval code"
|
||||
],
|
||||
[
|
||||
"url",
|
||||
"file:///tmp/raven-js-test.html"
|
||||
]
|
||||
],
|
||||
"user": {
|
||||
"geo": {
|
||||
"city": "Bengaluru",
|
||||
"region": "India",
|
||||
"country_code": "IN"
|
||||
},
|
||||
"ip_address": "106.206.50.32"
|
||||
},
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"hashes": [
|
||||
"338ec9eb220a67d39c935292df886c3f"
|
||||
],
|
||||
"sdk": {
|
||||
"version": "3.26.4",
|
||||
"name": "raven-js"
|
||||
},
|
||||
"received": 1603730394.648839,
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"abs_path": "debugger eval code",
|
||||
"in_app": false,
|
||||
"data": {
|
||||
"orig_in_app": 1
|
||||
},
|
||||
"lineno": 3,
|
||||
"filename": "debugger eval code"
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "TypeError",
|
||||
"value": "can't access property \"bar\", x.foo is undefined"
|
||||
}
|
||||
]
|
||||
},
|
||||
"transaction": "debugger eval code",
|
||||
"_meta": {
|
||||
"trimHeadFrames": {
|
||||
"": {
|
||||
"err": [
|
||||
"invalid_attribute"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"level": "error",
|
||||
"contexts": {
|
||||
"os": {
|
||||
"type": "os",
|
||||
"name": "Ubuntu"
|
||||
},
|
||||
"browser": {
|
||||
"version": "83.0",
|
||||
"type": "browser",
|
||||
"name": "Firefox"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"url": "file:///tmp/raven-js-test.html",
|
||||
"headers": [
|
||||
[
|
||||
"User-Agent",
|
||||
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0"
|
||||
]
|
||||
]
|
||||
},
|
||||
"project": 5481202,
|
||||
"key_id": "1381841"
|
||||
},
|
||||
"project": "live",
|
||||
"logger": "javascript"
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
{
|
||||
"project_name": "live",
|
||||
"message": "",
|
||||
"id": "1972208801",
|
||||
"culprit": "__main__ in <module>",
|
||||
"project_slug": "foo-live",
|
||||
"url": "https://sentry.io/organizations/bar-foundation/issues/1972208801/?referrer=webhooks_plugin",
|
||||
"level": "error",
|
||||
"triggering_rules": [
|
||||
"Send a notification for new events"
|
||||
],
|
||||
"event": {
|
||||
"extra": {
|
||||
"sys.argv": [
|
||||
"data/trigger-exception.py"
|
||||
]
|
||||
},
|
||||
"_ref_version": 2,
|
||||
"_ref": 218288,
|
||||
"id": "c916dccfd58e41dcabaebef0091f0736",
|
||||
"_metrics": {
|
||||
"bytes.ingested.event": 2229,
|
||||
"bytes.stored.event": 3021
|
||||
},
|
||||
"culprit": "__main__ in <module>",
|
||||
"title": "ValueError: new sentry error.",
|
||||
"event_id": "c916dccfd58e41dcabaebef0091f0736",
|
||||
"grouping_config": {
|
||||
"enhancements": "eJybzDhxY05qemJypZWRgaGlroGxrqHRBABbEwcC",
|
||||
"id": "legacy:2019-03-12"
|
||||
},
|
||||
"platform": "python",
|
||||
"version": "7",
|
||||
"location": "trigger-exception.py",
|
||||
"logger": "",
|
||||
"type": "error",
|
||||
"metadata": {
|
||||
"function": "<module>",
|
||||
"type": "ValueError",
|
||||
"value": "new sentry error.",
|
||||
"filename": "trigger-exception.py"
|
||||
},
|
||||
"tags": [
|
||||
[
|
||||
"level",
|
||||
"error"
|
||||
],
|
||||
[
|
||||
"runtime",
|
||||
"CPython 3.8.5"
|
||||
],
|
||||
[
|
||||
"runtime.name",
|
||||
"CPython"
|
||||
],
|
||||
[
|
||||
"server_name",
|
||||
"enterprise"
|
||||
]
|
||||
],
|
||||
"timestamp": 1603322711.147672,
|
||||
"fingerprint": [
|
||||
"{{ default }}"
|
||||
],
|
||||
"hashes": [
|
||||
"05eeb8cc2a9103790797a56728cfa1e8"
|
||||
],
|
||||
"sdk": {
|
||||
"version": "0.19.1",
|
||||
"name": "sentry.python",
|
||||
"packages": [
|
||||
{
|
||||
"version": "0.19.1",
|
||||
"name": "pypi:sentry-sdk"
|
||||
}
|
||||
],
|
||||
"integrations": [
|
||||
"argv",
|
||||
"atexit",
|
||||
"dedupe",
|
||||
"excepthook",
|
||||
"logging",
|
||||
"modules",
|
||||
"stdlib",
|
||||
"threading"
|
||||
]
|
||||
},
|
||||
"received": 1603322712.317751,
|
||||
"exception": {
|
||||
"values": [
|
||||
{
|
||||
"stacktrace": {
|
||||
"frames": [
|
||||
{
|
||||
"function": "<module>",
|
||||
"abs_path": "/home/user/software/bar/bar-foo/data/trigger-exception.py",
|
||||
"pre_context": [
|
||||
"",
|
||||
"",
|
||||
"if __name__ == \"__main__\":",
|
||||
" sentry_sdk.init(dsn=DSN_SECRET)",
|
||||
" try:"
|
||||
],
|
||||
"post_context": [
|
||||
" except Exception as e:",
|
||||
" sentry_sdk.capture_exception(e)"
|
||||
],
|
||||
"vars": {
|
||||
"__spec__": "None",
|
||||
"__builtins__": "<module 'builtins' (built-in)>",
|
||||
"__annotations__": null,
|
||||
"__file__": "'data/trigger-exception.py'",
|
||||
"__loader__": "<_frozen_importlib_external.SourceFileLoader object at 0x7f80a18acc70>",
|
||||
"__cached__": "None",
|
||||
"__name__": "'__main__'",
|
||||
"__package__": "None",
|
||||
"__doc__": "None",
|
||||
"sentry_sdk": "<module 'sentry_sdk' from '/home/user/.virtualenvs/sentry-test/lib/python3.8/site-packages/sentry_sdk/__init__.py'>"
|
||||
},
|
||||
"module": "__main__",
|
||||
"filename": "trigger-exception.py",
|
||||
"lineno": 10,
|
||||
"in_app": false,
|
||||
"data": {
|
||||
"orig_in_app": 1
|
||||
},
|
||||
"context_line": " raise ValueError(\"new sentry error.\")"
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": "ValueError",
|
||||
"value": "new sentry error."
|
||||
}
|
||||
]
|
||||
},
|
||||
"_meta": {
|
||||
"exception": {
|
||||
"values": {
|
||||
"0": {
|
||||
"stacktrace": {
|
||||
"frames": {
|
||||
"0": {
|
||||
"vars": {
|
||||
"": {
|
||||
"len": 12
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"level": "error",
|
||||
"contexts": {
|
||||
"runtime": {
|
||||
"version": "3.8.5",
|
||||
"type": "runtime",
|
||||
"name": "CPython",
|
||||
"build": "3.8.5 (default, Jul 28 2020, 12:59:40) \n[GCC 9.3.0]"
|
||||
}
|
||||
},
|
||||
"modules": {
|
||||
"six": "1.14.0",
|
||||
"packaging": "20.3",
|
||||
"pip": "20.0.2",
|
||||
"pyparsing": "2.4.6",
|
||||
"html5lib": "1.0.1",
|
||||
"appdirs": "1.4.3",
|
||||
"distlib": "0.3.0",
|
||||
"msgpack": "0.6.2",
|
||||
"sentry-sdk": "0.19.1",
|
||||
"pytoml": "0.1.21",
|
||||
"ipaddr": "2.2.0",
|
||||
"webencodings": "0.5.1",
|
||||
"progress": "1.5",
|
||||
"certifi": "2019.11.28",
|
||||
"distro": "1.4.0",
|
||||
"wheel": "0.34.2",
|
||||
"pkg-resources": "0.0.0",
|
||||
"urllib3": "1.25.8",
|
||||
"retrying": "1.3.3",
|
||||
"colorama": "0.4.3",
|
||||
"cachecontrol": "0.12.6",
|
||||
"lockfile": "0.12.2",
|
||||
"pep517": "0.8.2",
|
||||
"contextlib2": "0.6.0",
|
||||
"chardet": "3.0.4",
|
||||
"setuptools": "44.0.0",
|
||||
"requests": "2.22.0",
|
||||
"idna": "2.8"
|
||||
},
|
||||
"project": 218288,
|
||||
"key_id": "430951"
|
||||
},
|
||||
"project": "foo-live",
|
||||
"logger": null
|
||||
}
|
||||
300
zerver/webhooks/sentry/tests.py
Normal file
300
zerver/webhooks/sentry/tests.py
Normal file
@@ -0,0 +1,300 @@
|
||||
from zerver.lib.test_classes import WebhookTestCase
|
||||
|
||||
|
||||
class SentryHookTests(WebhookTestCase):
|
||||
def test_event_for_exception_golang(self) -> None:
|
||||
expected_topic_name = '*url.Error: Get "bad_url": unsupported protocol scheme ""'
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [*url.Error: Get "bad_url": unsupported protocol scheme ""](https://sentry.io/organizations/hypro999-personal-organization/issues/1637164584/events/80777a9cc30e4d0eb8904333d5c298b0/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-04-29T11:23:45+00:00>
|
||||
**filename:** trigger-exception.go
|
||||
```
|
||||
|
||||
Traceback:
|
||||
```go
|
||||
// Set the timeout to the maximum duration the program can afford to wait.
|
||||
defer sentry.Flush(2 * time.Second)
|
||||
|
||||
resp, err := http.Get(os.Args[1])
|
||||
if err != nil {
|
||||
---> sentry.CaptureException(err)
|
||||
log.Printf("reported to Sentry: %s", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
```"""
|
||||
self.check_webhook("event_for_exception_golang", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_exception_node(self) -> None:
|
||||
expected_topic_name = "Error: Sample error from node."
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [Error: Sample error from node.](https://sentry.io/organizations/hypro999-personal-organization/issues/1638852747/events/f9cb0f2afff74a5aa92e766fb7ac3fe3/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-04-30T06:19:33+00:00>
|
||||
**filename:** /home/hemanth/Desktop/sentry/trigger-exception.js
|
||||
```
|
||||
|
||||
Traceback:
|
||||
```javascript
|
||||
dsn: 'https://redacted.ingest.sentry.io/5216640',
|
||||
});
|
||||
|
||||
Sentry.withScope(function(scope) {
|
||||
scope.addEventProcessor(function(event, hint) {
|
||||
return event;
|
||||
});
|
||||
---> Sentry.captureException(new Error('Sample error from node.'));
|
||||
});
|
||||
|
||||
|
||||
```"""
|
||||
self.check_webhook("event_for_exception_node", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_exception_python(self) -> None:
|
||||
expected_topic_name = "Exception: Custom exception!"
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [Exception: Custom exception!](https://sentry.io/organizations/hypro999-personal-organization/issues/1635244907/events/599349254a1447a99774b5310711c1a8/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-04-28T13:56:05+00:00>
|
||||
**filename:** trigger-exception.py
|
||||
```
|
||||
|
||||
Traceback:
|
||||
```python3
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sentry_sdk.init(dsn=SECRET_DSN)
|
||||
try:
|
||||
---> raise Exception("Custom exception!")
|
||||
except Exception as e:
|
||||
sentry_sdk.capture_exception(e)
|
||||
|
||||
```"""
|
||||
self.check_webhook("event_for_exception_python", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_exception_rails(self) -> None:
|
||||
expected_topic_name = "ZeroDivisionError: divided by 0"
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [ZeroDivisionError: divided by 0](https://sentry.io/organizations/nitk-46/issues/4213933362/events/49b528e13e45497ab9adc3173fd2ed34/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2023-05-29T10:12:33+00:00>
|
||||
**filename:** app/controllers/articles_controller.rb
|
||||
```
|
||||
|
||||
Traceback:
|
||||
```ruby
|
||||
class ArticlesController < ApplicationController
|
||||
|
||||
def index
|
||||
|
||||
begin
|
||||
|
||||
---> 132312 / 0
|
||||
|
||||
rescue ZeroDivisionError => exception
|
||||
|
||||
Sentry.capture_exception(exception)
|
||||
|
||||
end
|
||||
|
||||
```"""
|
||||
self.check_webhook("event_for_exception_rails", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_exception_vue(self) -> None:
|
||||
expected_topic_name = "TypeError: Cannot read properties of null (reading 'inser..."
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [TypeError: Cannot read properties of null (reading 'insertBefore')](https://sentry.io/organizations/nitk-46/issues/4214010673/events/292f78454e774e62999506f759ad791d/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2023-05-29T11:08:30+00:00>
|
||||
**filename:** /node_modules/.vite/deps/chunk-G4DFXOZZ.js
|
||||
```"""
|
||||
self.check_webhook("event_for_exception_vue", expected_topic_name, expected_message)
|
||||
|
||||
def test_webhook_event_for_exception_python(self) -> None:
|
||||
expected_topic_name = "ValueError: new sentry error."
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [ValueError: new sentry error.](https://sentry.io/organizations/bar-foundation/issues/1972208801/events/c916dccfd58e41dcabaebef0091f0736/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-10-21T23:25:11+00:00>
|
||||
**filename:** trigger-exception.py
|
||||
```
|
||||
|
||||
Traceback:
|
||||
```python3
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sentry_sdk.init(dsn=DSN_SECRET)
|
||||
try:
|
||||
---> raise ValueError("new sentry error.")
|
||||
except Exception as e:
|
||||
sentry_sdk.capture_exception(e)
|
||||
```"""
|
||||
self.check_webhook(
|
||||
"webhook_event_for_exception_python", expected_topic_name, expected_message
|
||||
)
|
||||
|
||||
def test_webhook_event_for_exception_javascript(self) -> None:
|
||||
expected_topic_name = 'TypeError: can\'t access property "bar", x.foo is undefined'
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [TypeError: can't access property "bar", x.foo is undefined](https://sentry.io/organizations/foo-bar-org/issues/1982047746/events/f3bf5fc4e354451db9e885a69b2a2b51/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-10-26T16:39:54+00:00>
|
||||
**filename:** None
|
||||
```"""
|
||||
self.check_webhook(
|
||||
"webhook_event_for_exception_javascript", expected_topic_name, expected_message
|
||||
)
|
||||
|
||||
def test_event_for_exception_js(self) -> None:
|
||||
expected_topic_name = "Error: Something external broke."
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [Error: Something external broke.](https://sentry.io/organizations/hypro999-personal-organization/issues/1731239773/events/355c3b2a142046629dd410db2fdda003/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-06-17T14:42:54+00:00>
|
||||
**filename:** /mnt/data/Documents/Stuff%20for%20Zulip/Repos/sentry/js/external.js
|
||||
```"""
|
||||
self.check_webhook("event_for_exception_js", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_message_golang(self) -> None:
|
||||
expected_topic_name = "A test message event from golang."
|
||||
expected_message = """\
|
||||
:blue_circle: **New message event:** [A test message event from golang.](https://sentry.io/organizations/hypro999-personal-organization/issues/1638844654/events/01ecb45633bc4f5ca940ada671124c8f/)
|
||||
```quote
|
||||
**level:** info
|
||||
**timestamp:** <time:2020-04-30T06:14:13+00:00>
|
||||
```"""
|
||||
self.check_webhook("event_for_message_golang", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_message_node(self) -> None:
|
||||
expected_topic_name = "Test event from node."
|
||||
expected_message = """\
|
||||
:blue_circle: **New message event:** [Test event from node.](https://sentry.io/organizations/hypro999-personal-organization/issues/1638840427/events/6886bb1fe7ce4497b7836f6083d5fd34/)
|
||||
```quote
|
||||
**level:** info
|
||||
**timestamp:** <time:2020-04-30T06:09:56+00:00>
|
||||
```"""
|
||||
self.check_webhook("event_for_message_node", expected_topic_name, expected_message)
|
||||
|
||||
def test_event_for_message_python(self) -> None:
|
||||
expected_topic_name = "A simple message-based issue."
|
||||
expected_message = """\
|
||||
:blue_circle: **New message event:** [A simple message-based issue.](https://sentry.io/organizations/hypro999-personal-organization/issues/1635261062/events/8da63b42375e4d3b803c377fefb062f8/)
|
||||
```quote
|
||||
**level:** info
|
||||
**timestamp:** <time:2020-04-28T14:05:04+00:00>
|
||||
```"""
|
||||
self.check_webhook("event_for_message_python", expected_topic_name, expected_message)
|
||||
|
||||
def test_error_for_exception_javascript(self) -> None:
|
||||
expected_topic_name = "ReferenceError: blooopy is not defined"
|
||||
expected_message = """\
|
||||
:orange_circle: **New exception:** [ReferenceError: blooopy is not defined](https://sentry.io/organizations/test-org/issues/1170820242/events/bb78c1407cea4519aa397afc059c793d/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2019-08-19T20:58:37+00:00>
|
||||
**filename:** /runner
|
||||
```
|
||||
|
||||
Traceback:
|
||||
```javascript
|
||||
<!doctype html>
|
||||
<html>
|
||||
---> <meta charset=utf-8>
|
||||
<title>JS Bin Runner</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0;
|
||||
```"""
|
||||
self.check_webhook(
|
||||
"error_for_exception_js",
|
||||
expected_topic_name,
|
||||
expected_message,
|
||||
)
|
||||
|
||||
def test_issue_assigned_to_individual(self) -> None:
|
||||
expected_topic_name = "A test message event from golang."
|
||||
expected_message = """Issue **A test message event from golang.** has now been assigned to **Hemanth V. Alluri** by **Hemanth V. Alluri**."""
|
||||
self.check_webhook("issue_assigned_to_individual", expected_topic_name, expected_message)
|
||||
|
||||
def test_issue_assigned_to_team(self) -> None:
|
||||
expected_topic_name = "Exception: program has entered an invalid state."
|
||||
expected_message = """Issue **Exception: program has entered an invalid state.** has now been assigned to **team lone-wolf** by **Hemanth V. Alluri**."""
|
||||
self.check_webhook("issue_assigned_to_team", expected_topic_name, expected_message)
|
||||
|
||||
def test_issue_created_for_exception(self) -> None:
|
||||
expected_topic_name = "Exception: Custom exception!"
|
||||
expected_message = """\
|
||||
:orange_circle: **New issue created:** Exception: Custom exception!
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2020-04-28T13:56:05+00:00>
|
||||
**assignee:** No one
|
||||
```"""
|
||||
self.check_webhook("issue_created_for_exception", expected_topic_name, expected_message)
|
||||
|
||||
def test_issue_created_for_message(self) -> None:
|
||||
expected_topic_name = "A simple message-based issue."
|
||||
expected_message = """\
|
||||
:blue_circle: **New issue created:** A simple message-based issue.
|
||||
```quote
|
||||
**level:** info
|
||||
**timestamp:** <time:2020-04-28T14:05:04+00:00>
|
||||
**assignee:** No one
|
||||
```"""
|
||||
self.check_webhook("issue_created_for_message", expected_topic_name, expected_message)
|
||||
|
||||
def test_issue_ignored(self) -> None:
|
||||
expected_topic_name = "Exception: program has entered an invalid state."
|
||||
expected_message = """Issue **Exception: program has entered an invalid state.** was ignored by **Hemanth V. Alluri**."""
|
||||
self.check_webhook("issue_ignored", expected_topic_name, expected_message)
|
||||
|
||||
def test_issue_resolved(self) -> None:
|
||||
expected_topic_name = "Exception: program has entered an invalid state."
|
||||
expected_message = """Issue **Exception: program has entered an invalid state.** was marked as resolved by **Hemanth V. Alluri**."""
|
||||
self.check_webhook("issue_resolved", expected_topic_name, expected_message)
|
||||
|
||||
def test_sample_event_through_alert(self) -> None:
|
||||
expected_topic_name = "This is an example Python exception"
|
||||
expected_message = """\
|
||||
:orange_circle: **New message event:** [This is an example Python exception](https://sentry.io/organizations/nitk-46/issues/4218258981/events/b6eff1a49b1f4132850b1238d968da70/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2023-05-31T11:06:16+00:00>
|
||||
```"""
|
||||
self.check_webhook("sample_event_through_alert", expected_topic_name, expected_message)
|
||||
|
||||
def test_sample_event_through_plugin(self) -> None:
|
||||
expected_topic_name = "This is an example Python exception"
|
||||
expected_message = """\
|
||||
:orange_circle: **New message event:** [This is an example Python exception](https://nitk-46.sentry.io/issues/4218258981/events/4dc4fc2858aa450eb658be9e5b8ad149/)
|
||||
```quote
|
||||
**level:** error
|
||||
**timestamp:** <time:2023-07-09T20:41:24+00:00>
|
||||
```"""
|
||||
self.check_webhook("sample_event_through_plugin", expected_topic_name, expected_message)
|
||||
|
||||
def test_raven_sdk_python_event(self) -> None:
|
||||
payload = self.get_body("raven_sdk_python_event")
|
||||
result = self.client_post(
|
||||
self.url,
|
||||
payload,
|
||||
content_type="application/json",
|
||||
)
|
||||
self.assert_json_success(result)
|
||||
self.assert_in_response(
|
||||
"The 'Raven SDK' event isn't currently supported by the Sentry webhook; ignoring",
|
||||
result,
|
||||
)
|
||||
298
zerver/webhooks/sentry/view.py
Normal file
298
zerver/webhooks/sentry/view.py
Normal file
@@ -0,0 +1,298 @@
|
||||
import logging
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
|
||||
from zerver.decorator import webhook_view
|
||||
from zerver.lib.exceptions import UnsupportedWebhookEventTypeError
|
||||
from zerver.lib.response import json_success
|
||||
from zerver.lib.timestamp import datetime_to_global_time
|
||||
from zerver.lib.typed_endpoint import JsonBodyPayload, typed_endpoint
|
||||
from zerver.lib.webhooks.common import check_send_webhook_message
|
||||
from zerver.models import UserProfile
|
||||
|
||||
LOG_ENTRY_MESSAGE_TEMPLATE = """
|
||||
{severity_emoji} **New message event:** [{title}]({web_link})
|
||||
```quote
|
||||
**level:** {level}
|
||||
**timestamp:** {global_time}
|
||||
```
|
||||
"""
|
||||
|
||||
EXCEPTION_MESSAGE_TEMPLATE = """
|
||||
{severity_emoji} **New exception:** [{title}]({web_link})
|
||||
```quote
|
||||
**level:** {level}
|
||||
**timestamp:** {global_time}
|
||||
**filename:** {filename}
|
||||
```
|
||||
"""
|
||||
|
||||
EXCEPTION_MESSAGE_TEMPLATE_WITH_TRACEBACK = (
|
||||
EXCEPTION_MESSAGE_TEMPLATE
|
||||
+ """
|
||||
Traceback:
|
||||
```{syntax_highlight_as}
|
||||
{pre_context}---> {context_line}{post_context}\
|
||||
```
|
||||
"""
|
||||
)
|
||||
# Because of the \n added at the end of each context element,
|
||||
# this will actually look better in the traceback.
|
||||
|
||||
ISSUE_CREATED_MESSAGE_TEMPLATE = """
|
||||
{severity_emoji} **New issue created:** {title}
|
||||
```quote
|
||||
**level:** {level}
|
||||
**timestamp:** {global_time}
|
||||
**assignee:** {assignee}
|
||||
```
|
||||
"""
|
||||
|
||||
ISSUE_ASSIGNED_MESSAGE_TEMPLATE = """
|
||||
Issue **{title}** has now been assigned to **{assignee}** by **{actor}**.
|
||||
"""
|
||||
|
||||
ISSUE_RESOLVED_MESSAGE_TEMPLATE = """
|
||||
Issue **{title}** was marked as resolved by **{actor}**.
|
||||
"""
|
||||
|
||||
ISSUE_IGNORED_MESSAGE_TEMPLATE = """
|
||||
Issue **{title}** was ignored by **{actor}**.
|
||||
"""
|
||||
|
||||
# Maps "platform" name provided by Sentry to the Pygments lexer name
|
||||
syntax_highlight_as_map = {
|
||||
"go": "go",
|
||||
"java": "java",
|
||||
"javascript": "javascript",
|
||||
"node": "javascript",
|
||||
"python": "python3",
|
||||
"ruby": "ruby",
|
||||
}
|
||||
|
||||
severity_emoji_map = {
|
||||
"fatal": ":red_circle:",
|
||||
"error": ":orange_circle:",
|
||||
"warning": ":yellow_circle:",
|
||||
"log": ":white_circle:",
|
||||
"info": ":blue_circle:",
|
||||
"debug": ":purple_circle:",
|
||||
}
|
||||
|
||||
|
||||
def get_global_time(dt_str: str) -> str:
|
||||
dt = datetime.fromisoformat(dt_str)
|
||||
return datetime_to_global_time(dt)
|
||||
|
||||
|
||||
def is_sample_event(event: dict[str, Any]) -> bool:
|
||||
# This is just a heuristic to detect the sample event, this should
|
||||
# not be used for making important behavior decisions.
|
||||
title = event.get("title", "")
|
||||
if title == "This is an example Python exception":
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def convert_lines_to_traceback_string(lines: list[str] | None) -> str:
|
||||
traceback = ""
|
||||
if lines is not None:
|
||||
for line in lines:
|
||||
if line == "":
|
||||
traceback += "\n"
|
||||
else:
|
||||
traceback += f" {line}\n"
|
||||
return traceback
|
||||
|
||||
|
||||
def handle_exception_or_log_entry_payloads(event: dict[str, Any]) -> tuple[str, str]:
|
||||
"""
|
||||
Handles `event_alert` and `error` event types. They can both be
|
||||
triggered by either an exception or a log entry.
|
||||
"""
|
||||
|
||||
topic_name = event["title"]
|
||||
platform_name = event["platform"]
|
||||
syntax_highlight_as = syntax_highlight_as_map.get(platform_name, "")
|
||||
if syntax_highlight_as == "": # nocoverage
|
||||
logging.info("Unknown Sentry platform: %s", platform_name)
|
||||
|
||||
severity_emoji = severity_emoji_map.get(event["level"], "")
|
||||
# We shouldn't support the officially deprecated Raven series of
|
||||
# Python SDKs.
|
||||
if platform_name == "python" and int(event["version"]) < 7 and not is_sample_event(event):
|
||||
# The sample event is still an old "version" -- accept it even
|
||||
# though we don't accept events from the old Python SDK.
|
||||
raise UnsupportedWebhookEventTypeError("Raven SDK")
|
||||
context = {
|
||||
"title": topic_name,
|
||||
"severity_emoji": severity_emoji,
|
||||
"level": event["level"],
|
||||
"web_link": event["web_url"],
|
||||
"global_time": get_global_time(event["datetime"]),
|
||||
}
|
||||
|
||||
if "exception" in event:
|
||||
# The event was triggered by a sentry.capture_exception() call
|
||||
# (in the Python Sentry SDK) or something similar.
|
||||
|
||||
filename = event["metadata"].get("filename", None)
|
||||
|
||||
stacktrace = None
|
||||
for value in reversed(event["exception"]["values"]):
|
||||
if "stacktrace" in value:
|
||||
stacktrace = value["stacktrace"]
|
||||
break
|
||||
|
||||
if stacktrace and filename:
|
||||
exception_frame = None
|
||||
for frame in reversed(stacktrace["frames"]):
|
||||
if frame.get("filename", None) == filename:
|
||||
exception_frame = frame
|
||||
break
|
||||
|
||||
if (
|
||||
exception_frame
|
||||
and "context_line" in exception_frame
|
||||
and exception_frame["context_line"] is not None
|
||||
):
|
||||
pre_context = convert_lines_to_traceback_string(
|
||||
exception_frame.get("pre_context", None)
|
||||
)
|
||||
context_line = exception_frame["context_line"] + "\n"
|
||||
post_context = convert_lines_to_traceback_string(
|
||||
exception_frame.get("post_context", None)
|
||||
)
|
||||
|
||||
context.update(
|
||||
syntax_highlight_as=syntax_highlight_as,
|
||||
filename=filename,
|
||||
pre_context=pre_context,
|
||||
context_line=context_line,
|
||||
post_context=post_context,
|
||||
)
|
||||
|
||||
body = EXCEPTION_MESSAGE_TEMPLATE_WITH_TRACEBACK.format(**context).strip()
|
||||
return (topic_name, body)
|
||||
|
||||
context.update(filename=filename) # nocoverage
|
||||
body = EXCEPTION_MESSAGE_TEMPLATE.format(**context).strip() # nocoverage
|
||||
return (topic_name, body) # nocoverage
|
||||
|
||||
elif "logentry" in event:
|
||||
# The event was triggered by a sentry.capture_message() call
|
||||
# (in the Python Sentry SDK) or something similar.
|
||||
body = LOG_ENTRY_MESSAGE_TEMPLATE.format(**context).strip()
|
||||
|
||||
else:
|
||||
raise UnsupportedWebhookEventTypeError("unknown-event type")
|
||||
|
||||
return (topic_name, body)
|
||||
|
||||
|
||||
def handle_issue_payload(
|
||||
action: str, issue: dict[str, Any], actor: dict[str, Any]
|
||||
) -> tuple[str, str]:
|
||||
topic_name = issue["title"]
|
||||
global_time = get_global_time(issue["lastSeen"])
|
||||
severity_emoji = severity_emoji_map.get(issue["level"], "")
|
||||
|
||||
if issue["assignedTo"]:
|
||||
if issue["assignedTo"]["type"] == "team":
|
||||
assignee = "team {}".format(issue["assignedTo"]["name"])
|
||||
else:
|
||||
assignee = issue["assignedTo"]["name"]
|
||||
else:
|
||||
assignee = "No one"
|
||||
|
||||
if action == "created":
|
||||
context = {
|
||||
"title": topic_name,
|
||||
"severity_emoji": severity_emoji,
|
||||
"level": issue["level"],
|
||||
"global_time": global_time,
|
||||
"assignee": assignee,
|
||||
}
|
||||
body = ISSUE_CREATED_MESSAGE_TEMPLATE.format(**context).strip()
|
||||
|
||||
elif action == "resolved":
|
||||
context = {
|
||||
"title": topic_name,
|
||||
"actor": actor["name"],
|
||||
}
|
||||
body = ISSUE_RESOLVED_MESSAGE_TEMPLATE.format(**context)
|
||||
|
||||
elif action == "assigned":
|
||||
context = {
|
||||
"title": topic_name,
|
||||
"assignee": assignee,
|
||||
"actor": actor["name"],
|
||||
}
|
||||
body = ISSUE_ASSIGNED_MESSAGE_TEMPLATE.format(**context)
|
||||
|
||||
elif action == "ignored":
|
||||
context = {
|
||||
"title": topic_name,
|
||||
"actor": actor["name"],
|
||||
}
|
||||
body = ISSUE_IGNORED_MESSAGE_TEMPLATE.format(**context)
|
||||
|
||||
else:
|
||||
raise UnsupportedWebhookEventTypeError(f"{action} action")
|
||||
|
||||
return (topic_name, body)
|
||||
|
||||
|
||||
def transform_webhook_payload(payload: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Attempt to use webhook payload for the notification.
|
||||
|
||||
When the integration is configured as a webhook, instead of being added as
|
||||
an internal integration, the payload is slightly different, but has all the
|
||||
required information for sending a notification. We transform this payload to
|
||||
look like the payload from a "properly configured" integration.
|
||||
"""
|
||||
event = payload.get("event", {})
|
||||
event_id = event["event_id"]
|
||||
event_path = f"events/{event_id}/"
|
||||
event["web_url"] = urljoin(payload["url"], event_path)
|
||||
timestamp = event.get("timestamp", event["received"])
|
||||
event["datetime"] = datetime.fromtimestamp(timestamp, timezone.utc).isoformat(
|
||||
timespec="microseconds"
|
||||
)
|
||||
return payload
|
||||
|
||||
|
||||
ALL_EVENT_TYPES = ["event_alert", "issue", "error"]
|
||||
|
||||
|
||||
@webhook_view("Sentry", all_event_types=ALL_EVENT_TYPES)
|
||||
@typed_endpoint
|
||||
def api_sentry_webhook(
|
||||
request: HttpRequest,
|
||||
user_profile: UserProfile,
|
||||
*,
|
||||
payload: JsonBodyPayload[dict[str, Any]],
|
||||
) -> HttpResponse:
|
||||
# This webhook integration uses the payload structure instead of the
|
||||
# Sentry-Hook-Resource header to determine the type of event.
|
||||
# TODO: Investigate switching to use headers for event types.
|
||||
data = payload.get("data", None) or transform_webhook_payload(payload)
|
||||
event_type = None
|
||||
match data:
|
||||
case {"issue": issue_data}:
|
||||
event_type = "issue"
|
||||
topic_name, body = handle_issue_payload(payload["action"], issue_data, payload["actor"])
|
||||
case {"event": event_data}:
|
||||
event_type = "event_alert"
|
||||
topic_name, body = handle_exception_or_log_entry_payloads(event_data)
|
||||
case {"error": event_data}:
|
||||
event_type = "error"
|
||||
topic_name, body = handle_exception_or_log_entry_payloads(event_data)
|
||||
case _: # nocoverage
|
||||
raise UnsupportedWebhookEventTypeError(str(list(data.keys())))
|
||||
|
||||
check_send_webhook_message(request, user_profile, topic_name, body, event_type)
|
||||
return json_success(request)
|
||||
Reference in New Issue
Block a user