SentryのメッセージにドキュメントのURLを表示したい
アラートには対応するドキュメントがつきもの
インシデントが発生した時にSentry通知したいことはよくあリます。
そして対応手順をGitHubのWiki
だったりQiitaTeam
などにまとめているチームも多いかと思います。
Sentry通知が来てから、対応手順が書かれたドキュメントにたどりつくのを簡単にしたい。そのために、Slack通知のメッセージにドキュメントのURLを載せてしまおうというのがこの記事の紹介するところです。
実装
例えば、チームでQiitaTeam
を利用していて、そこからGitHubのWiki
に移動しましょうといのはありそうです。
そうした状況に対応しやすいように、アプリケーションのコードの中に書き換えるべきURLが散財するのは避けたいので、 YAMLでURLを管理して、ドキュメントへのアクセスするクラスから値を取得するようにしてます。
また、置き場所はドメインに関するものではないので/lib
に置くことにしました。
ドキュメントへのアクセスするクラスを作成する
lib/data/document.yml
インシデントAの対応方法: https://hoge.qiita.com/shared/items/aaaaaaaaaaaaaaaaa インシデントBの対応方法: https://foo.qiita.com/shared/items/bbbbbbbbbbbbbbbbb
lib/document.rb
class Document DOCUMENT_YAML_PATH = Rails.root.join('lib/data/document.yml') class << self def document_urls YAML.safe_load(File.read(DOCUMENT_YAML_PATH)) end end end
呼び出す側の簡単な例
document_url = Document.document_urls['Aの対応方法'] message = "インシデントAが発生しました!!!(ドキュメントURL: #{document_url})" Sentry.capture_message(message, level: "error")