Upgrade to Pro — share decks privately, control downloads, hide ads and more …

本当に対処すべきエラーはどれ? 生成AIを活用したスマートなエラー調査

Avatar for m. ibushi m. ibushi
March 14, 2026
140

本当に対処すべきエラーはどれ? 生成AIを活用したスマートなエラー調査

Avatar for m. ibushi

m. ibushi

March 14, 2026

Transcript

  1. © 2021 Genbasupport Co.,Ltd. [開発元] [本社] [福岡営業所] [URL] 鹿児島市武1丁目35-4 福岡市博多区博多駅前3丁目4-8-3F

    http://www.genbasupport.com/ [TEL] 本当に対処すべきエラーはどれ? 生成AIを活用したスマートなエラー調査 株式会社現場サポート 現場クラウドConne開発チーム Embeded SRE 飯伏(いぶし)政樹
  2. © 2021 Genbasupport Co.,Ltd. /var/local/condr/app.log i-*** conne-app-g0 8053 [E 260307

    13:59:02 web:1875] Uncaught exception GET /api/holidays?=*** (...) HTTPServerRequest(protocol='https', host='***', method='GET', uri='/api/holidays?=', version='HTTP/1.1', remote_ip='...***') Traceback (most recent call last): File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 1769, in _execute result = await result # type: ignore ^^^^^^^^^^^^ File "/var/local/condr/app/schedule/apihdr.py", line 1171, in prepare await userexch.exchange_current_user(self) File "/var/local/condr/app/schedule/userexch.py", line 536, in exchange_current_user if not handler.current_user: ^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 1424, in current_user self._current_user = self.get_current_user() ^^^^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/app/schedule/auth.py", line 568, in get_current_user return get_current_user(self) ^^^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/app/schedule/auth.py", line 233, in get_current_user handler.redirect(handler.request.full_url()) File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 888, in redirect raise Exception("Cannot redirect after headers have been written") Exception: Cannot redirect after headers have been written /var/local/condr/app.log i-*** conne-app-g0 8053 [E 260307 13:59:02 web:1875] Uncaught exception GET /api/holidays?=*** (...) HTTPServerRequest(protocol='https', host='***', method='GET', uri='/api/holidays?=', version='HTTP/1.1', remote_ip='...***') Traceback (most recent call last): File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 1769, in _execute result = await result # type: ignore ^^^^^^^^^^^^ File "/var/local/condr/app/schedule/apihdr.py", line 1171, in prepare await userexch.exchange_current_user(self) File "/var/local/condr/app/schedule/userexch.py", line 536, in exchange_current_user if not handler.current_user: ^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 1424, in current_user self._current_user = self.get_current_user() ^^^^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/app/schedule/auth.py", line 568, in get_current_user return get_current_user(self) ^^^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/app/schedule/auth.py", line 233, in get_current_user handler.redirect(handler.request.full_url()) File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 888, in redirect raise Exception("Cannot redirect after headers have been written") Exception: Cannot redirect after headers have been written /var/local/condr/app.log i-*** conne-app-g0 8053 [E 260307 13:59:02 web:1875] Uncaught exception GET /api/holidays?=*** (...) HTTPServerRequest(protocol='https', host='***', method='GET', uri='/api/holidays?=', version='HTTP/1.1', remote_ip='...***') Traceback (most recent call last): File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 1769, in _execute result = await result # type: ignore ^^^^^^^^^^^^ File "/var/local/condr/app/schedule/apihdr.py", line 1171, in prepare await userexch.exchange_current_user(self) File "/var/local/condr/app/schedule/userexch.py", line 536, in exchange_current_user if not handler.current_user: ^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 1424, in current_user self._current_user = self.get_current_user() ^^^^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/app/schedule/auth.py", line 568, in get_current_user return get_current_user(self) ^^^^^^^^^^^^^^^^^^^^^^ File "/var/local/condr/app/schedule/auth.py", line 233, in get_current_user handler.redirect(handler.request.full_url()) File "/var/local/condr/lib/python3.11/site-packages/tornado/web.py", line 888, in redirect raise Exception("Cannot redirect after headers have been written") Exception: Cannot redirect after headers have been written 直面した課題 「『無視していい(?)エラー』にエラーが埋もれる!」 by 開発チーム
  3. © 2021 Genbasupport Co.,Ltd. 生成AIに「無視していいエラー」をフィルタさせてみよう !! ☹結局のところ原因調査まで踏み込まないとフィルタできない (指示の出し方も悪かったかも ) よし、じゃあ原因調査まで踏み込んでもらおうじゃないか

    EventBridge + Lambda -> Chatのwebhook -> Lambda/Gemini APIでリレー ☺エラー解決の糸口は掴めた !! 生成AI賢い\(^o^)/ ☺AWSに慣れてるからLambdaでやっちゃったけど変な構成というツッコミ歓迎 (ちなみにChatはGoogleChat) ☹件数そのものは多いので無駄が多い。ひとまず主だった偽エラーをつぶせそうなので踏込み休止 手がかりが分かったので、またまた生成 AIの力を借りながらエラーを潰す - ☺根本的に原因を取り除く修正 PRを書く - ☺再現条件のわからないものは抑止 &原因調査ができるような修正 PRを書く 解決への道筋 生成AIによるエラーの調査&修正案提示
  4. © 2021 Genbasupport Co.,Ltd. 修復パッチリリース前日エラー件数 => 94件 修復パッチリリース翌日エラー件数 => ☹87件

    => ☺翌々日は37件 翌日87件、実は25件リリース事障害由来。 => 改修がなかったら埋もれていた可能性も 翌日分37件中27件はパッチ適用によって浮かび上がった真因のエラー箇所 => 修正中 10件はレビュー待ちPRで解消予定 ☺観測中のエラーはほぼ全滅できる見込み 得られた効果 前後比較
  5. © 2021 Genbasupport Co.,Ltd. 再掲: ☹結局のところ原因調査まで踏み込まないとフィルタできない (指示の出し方も悪かったかも ) ☹件数そのものは多いので無駄が多い。ひとまず主だった偽エラーをつぶせそうなので踏込み休止 件数をだいぶ減らせたことだし、ノイズがへって人的余裕も確保できました!!

    次なるステップに進みたい - マスキング処理と組み合わせてエラー統計をとる - チャットに投げるまえにエラーの緊急度判定を挟んでみる - さらにここで1次調査をGenAIに任せられるとなお良し - 他にアイデアある方がいたら後で教えてください 󰢛 今後の展望 & まとめ まだまだやれそう