🐣

Sentry APIを試しに触ってみた

2024/06/19に公開

こんにちは!
株式会社ココナラプロダクト開発部フロントエンドグループでエンジニアをしている maitoです。

coconalaでは、フロントエンドにSentryを導入しており、日々発生するエラーについてモニタリングをしているのですが、業務の生産性を向上させるために、Sentryをもっと活用できないかと調べていたところ、APIがあることを発見し、今回試しに触ってみました。

そもそもSentryとは

Sentryとは、400万人以上の開発者によって利用されているアプリケーションから発生するエラーをモニタリングするツールです。

Sentry APIを実行する前の準備

Sentry APIを実行するにあたって、Authentication Tokenが必要なので、その準備を行いました。

  1. 「設定」→「組織」→「Custom Integrations」の「Create New Integration」をクリックします。

Create New Integration

  1. 「Issue & Event」を「Read」にして保存します。

Issue & Event is Read

  1. 保存した後、Authentication Tokenをメモします。

保存した後、APIを実行するにあたって必要になるAuthentication Tokenをメモします。

Sentry APIの実行

今回、issueがリスト化されたデータをほしいと思ったので、
List a Project's Issues
を試しに、実行しました。

検索キーワードとして、ここでは、仮にqueryパラメータにtestを設定しています。

curl 'https://sentry.io/api/0/projects/{organization_id}/{project_id}/issues/?query=test' \
 -H 'Authorization: Bearer <auth_token>'

<auth_token>には、先ほどメモしたAuthentication Tokenを利用します。

Sentry APIの実行結果

実行した結果、以下のようなissueに関連するJSONデータを取得することができました。
(一部「xxx」という形でデータを省略しています。)

[
  {
    "id": "xxx",
    "shareId": null,
    "shortId": "",
    "title": "NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'xxx",
    "culprit": "XMLHttpRequest.<anonymous>(xxx)",
    "permalink": "https://xxx.sentry.io/issues/xxx/",
    "logger": null,
    "level": "error",
    "status": "unresolved",
    "statusDetails": {},
    "substatus": "ongoing",
    "isPublic": false,
    "platform": "javascript",
    "project": {
      "id": "",
      "name": "Vue",
      "slug": "",
      "platform": ""
    },
    "type": "error",
    "metadata": {
      "value": "Failed to execute 'send' on 'XMLHttpRequest': Failed to load '': Document is already detached.",
      "type": "NetworkError",
      "filename": "xxx",
      "function": "xxx",
      "display_title_with_tree_label": false,
      "in_app_frame_mix": "mixed",
      "sdk": {
        "name": "sentry.javascript.vue",
        "name_normalized": "sentry.javascript.vue"
      },
      "initial_priority": XXX,
      "title": null
    },
    "numComments": 0,
    "assignedTo": null,
    "isBookmarked": false,
    "isSubscribed": false,
    "subscriptionDetails": null,
    "hasSeen": false,
    "annotations": [],
    "issueType": "error",
    "issueCategory": "error",
    "priority": "high",
    "priorityLockedAt": null,
    "isUnhandled": false,
    "count": "XX",
    "userCount": XX,
    "firstSeen": "2023-12-05T18:39:00.976000Z",
    "lastSeen": "2024-06-09T07:26:38.511000Z",
    "stats": {
      "24h": [
        [xxx, 0],
        /* 省略 */
      ]
    }
  }
]

触ってみてどうだったか?

今回、試しにSentry APIを使ってJSONデータを取得できましたが、
検索機能やソート機能つきのUIに落とし込むことによってよりフル活用できるかなと思いました。

さいごに

ココナラでは、一緒に事業の課題を解決するエンジニアを募集しています!
気になった方は採用ページをぜひご覧ください。

https://coconala.co.jp/recruit/engineer/

Discussion