post Image
GAE/GoだとStackdriverErrorReportingの通知のStacktraceからSourceRepositoryのソースコードに直接飛べる

昨日ふと投稿したtwitterが結構RTやイイネが付いたのだけど、twitterの長さの制約の関係でちょっとした注意点が漏れていたので記事にしてみた。

twitterの投稿内容はこんな感じ

GAE/Goだと で書き始めているので何もしなくて実現できているのかと誤解されそうだったので、
注意点を下記します。

Stackdriver Error Reporting とはなに?

Googleのサイトより.
Stackdriver Error Reporting は、実行中のクラウド サービスで発生したクラッシュをカウントして、
分析と集計を実施します。
結果は一元化されたエラー管理インターフェースに表示され、並べ替えやフィルタリングも行えます。
専用のビューには、タイムチャート、発生回数、影響を受けたユーザー数、最初または最後の発生日時、
削除された例外スタック トレースといったエラー詳細が表示されます。
また、新しいエラーの発生時にメールアラートやモバイル アラートを受信することもできます。

エラーをよしなに通知しますよ。というもので、詳しくは こちら を。

Cloud Source Repositories とはなに?

Googleのサイトより.
Cloud Source Repositories では、プライベート Git レポジトリをいくつでも持つことができ、
お客様に最適な方法でクラウド プロジェクトに関連付けられているコードを整理することができます。

簡単に言うとgitのリポジトリですよ、と。

さっそく、注意点

ただ普通に Go で書いて Appengine にデプロイしただけでは 使えません!!

1点だけ注意点があって、ログの中にStackdriver Error Reportingが Stacktraceだと認識できる形式の文字列 を出力する必要があります。

どうすればいいか

サンプルコードですが、
エラー発生箇所でログに以下のようなロジックで生成したStacktraceを含めれば良いです。
(ユーティリティ化して使うのが良いと思いますが、その際にStackを剥がす処理をしたくなると思いますのでそのあたりは頑張ってみてください)

サンプル

c := appengine.NewContext(r) // appengineのcontextを生成する

buf := make([]byte, 1<<16)
runtime.Stack(buf, true)
s := fmt.Sprintf("%s", buf)

log.Errorf(c, s) // ログを出力する

GAE/Goを書いたことがある人はわかると思いますが、Stacktraceを普通にログとして出力しているだけです。

どのようになるか

上記のようにStacktraceを含むログを出力した際に、Error Reportingはエラーを認識してエラーを通知します。

サンプル1.png

上の例は殆どモザイクで見えないと思いますが、ErrorReportingで通知されたエラーの1件を選択すると以下のようなエラーの詳細画面へと遷移します。

サンプル2.png

エラー詳細画面に Go の Stacktrace が表示されるので、 gin.go:265 のようなリンクになっている部分をクリックします。

サンプル3.png

リンクから遷移すると Source Repository のコードへ飛び、ここまでのことがブラウザの中で一発で出来ます。
(この例はginというgoのライブラリのコードに飛んでいる例なのですが、実際には実装したアプリケーションのソースコードに飛んで確認ができます。)

ちなみに、Go のコードは Source Repository でわざわざホストする必要は無いと思います。
agppengineにデプロイするだけ。ちなみに、Source Repositoryの参照権限の付与は忘れないようにしましょう。


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。