Introduction
クラッシュレポートを集めたりフィードバックを管理するサービス HockeyApp というのがあった。
Microsoft に買収されたあと、自社のプロダクト Visual Studio App Center に吸収されて消えてしまった。
こういうのはいつも通りのことだが。
そういうクラッシュレポートを管理する仕組みあれば便利だと思ったので、少し調べたら最近は
とかある模様。
そんな中でそこそこ日本語の記事があった Sentry を味見した。
あと、UI の見た目が Sentry が一番イケてるのもある。これ大事。
サンプルソースは、GitHub に置きました。
How to use?
公式で docker を提供しているので、Windows にインストールする。
必要なのは
- Windows Subsystem for Linux 2
- Docker desktop
- Docker 19.03.6+
- Compose 1.28.0+
が最低限。
Python3 もいるかも。
コンテナを作る
docker は github からクローンして持ってくる。
Dockerhub はなんか deprecated になっている。
クローンしたら、Linux シェルを起動して、下記のように実行する。--skip-user-promp
をつけないと、インストール中に管理者ユーザの作成について、質問される。
1 | $ cd self-hosted |
以上で完了。
もし、下記のようなエラーが出たら、 WSL が 1 のままであることを疑う。
1 | $ ./install.sh --skip-user-prompt |
コンテナの起動
既にコンテナは起動しているはずだが、起動していなかったら下記で起動。
1 | $ cd docker/sentry |
ユーザの作成
--skip-user-promp
をつけてインストールした場合、ユーザがいないので作成する必要がある。
下記を実行してユーザを作る。
1 | $ cd docker/sentry |
ブラウザからアクセス
デフォルトポートは 9000。docker ps -a
で確認もできる。
先程作ったユーザでログイン。
この辺りはとりあえず無視。
無事に動いた。
プロジェクトを作る
左側の [Projects] を選択し、Sentry を使用するアプリのプラットフォームを選択する。
ここでは .NET を選択。
選択後、一番下の [Create Project] をクリックする。
Sentry を使用するための手順とサンプルコードが表示される。
nuget でインストールするだけのお手軽さ。
クラッシュさせてみる
簡単な割り算のプログラムを作り、0 除算させてみる。
1 | using System; |
これを実行。
1 | > dotnet run -c Release -- 10 0 |
色々出てきました。
Sentry で確認
非常に見やすい形式で、スタックトレースとかが表示されています。
Conclusion
using
で囲うだけで、クラッシュレポートを送信してくれる使いやすさ、わかりやすい UI と利用価値はありそう。
調べると、 Nlog などのロギングライブラリの拡張を利用して、レポートを送信できるらしい。
その場合は、コードの改修がいらないのかな?
nuget を見た感じ
- NLog
- Log4Net
- Serilog
に対応している模様。
あと、production で使うとなると、そもそも外部ネットワークに繋がっていないとか、ローカルネットワークでも Sentry のサーバーを置くようなリソースがない、ってのは日本の IT だと十分あり得る。
Sentry の出力結果をファイルにして、ログと一緒に吐き出したりできないのか?
そうすれば SE の人たちにそのファイルの回収をお願いして、という温かみのある (笑) 伝統手法で解析ができるかも。
Source Code
https://github.com/takuya-takeuchi/Demo/tree/master/ErrorTracking/Sentry/01_Simple