8月に入り、いよいよ夏も本番ですね。
皆さん、はじめまして!K.Tです。
唐突ですが、みなさんは「夏」といえば何を思い浮かべますか?
私はアイスやかき氷が大好きなのですが、実は致命的なほどお腹が弱いんです。
先日も「今日はどのアイスを食べようかな?」と迷い最後の2択まで絞ったのですが、決めきれず両方食べてしまった結果、地獄の苦しみが待ち受けていました…。

さて、そんな私のお腹の大惨事は置いておいて。
仕事の現場でも、アイスの食べ過ぎとは比べ物にならないくらい、「大量のエラーメッセージで冷や汗が止まらなくなる瞬間」ってありませんか?
英語や記号がズラリと並んだ、まるで暗号のような文字列。「何が原因で、どこから対応したらいいのか…」と、フリーズした経験が誰しも一度はあるのではないでしょうか。
そんな誰もが苦戦するログ解析の救世主として、今アツい「生成AI(LLM)」を活用したエラー解析のアプローチをご紹介します!

インフラの運用保守や開発の現場でシステムにエラーが発生した際、私たちはまずログを確認します。しかし、従来のログ解析には大きく分けて3つの高いハードルがありました。

大量のテキストの中から、原因となるエラーコードを探し出すだけで一苦労。ここで時間がかかればかかるほど、対応の初動も遅くなります。

熟練のエンジニアであれば一目で直観するような事象も、経験の浅いメンバーだと、何が起きているか理解するのに時間がかかります。

エラーメッセージの多くは、不親切で分かりづらい書き方がされています。エラー原因や解決法を探すために、時にはいくつもサイトを巡る必要があります。

もし、熟練の先輩エンジニアが常に隣にいて解説してくれる環境があったら心強いですよね。そんな妄想が、AIを活用すれば現実になります。

AIにエラーメッセージを解析させれば、人間が読むより圧倒的に早く、「何が原因か」「まず何を試すべきか」をわかりやすく要約して教えてくれます。

難解なエラーメッセージも分かりやすい日本語に翻訳し、解説をしてくれます。もちろん多少の知識は必要ですが、専門的な知識が無くてもある程度の内容を理解することができます。

深夜や休日、どんな時でも文句を言わずに解析を手伝ってくれます。また、AIが自動で一次解析をする仕組みを作れば、エンジニアの負担を劇的に減らすことができます。

では、実際にAIはどこまで頼りになるのでしょうか?
今回は単純な構文ミスによるエラーログを使って検証してみます。

あなたは熟練のインフラエンジニアです。
以下のエラーログを分析し、次の3点をエンジニア向けに分かりやすく日本語で出力してください。

1.何が原因でエラーが起きているか
2.正しいコードへの修正案
3.次にとるべき具体的な対処法

【エラーログ】
SyntaxError: untracked exception inside parent process during execution
File “app.py”, line 42
print(“Process started”
^
SyntaxError: expected ‘)

結論から言うと、これはインフラやサーバーの深刻なトラブルではなく、アプリケーションのコード(Python)における非常にシンプルな記述ミス(構文エラー)が原因です。

1.何が原因でエラーが起きているか
app.py というファイルの42行目にある print 関数の閉じカッコ ) が不足していることが原因です。
エラーログの SyntaxError: expected ‘)’(構文エラー: ‘)’ が期待されます)がそれを直接示しています。

2.正しいコードへの修正案
該当箇所の閉じカッコを補填します。
【修正前】
print(“Process started”
【修正後】
print(“Process started”)

3.次にとるべき具体的な対処法
該当ファイルの修正:
サーバーまたは開発環境の app.py を開き、42行目を上記の「修正後」の通りに書き換えて保存してください。
構文チェック(シンタックスチェック)の実行:
再度アプリを起動する前に、以下のコマンドをターミナルで実行し、他に構文エラーがないか確認することをおすすめします。
python3 -m py_compile app.py
(何も出力されなければ構文チェックはパスしています)
プロセスの再起動:
エラーによって親プロセスが落ちている可能性があるため、アプリの起動コマンド(またはサービス)を再起動してください。

非常に分かりやすく、原因と修正案、対処法を一瞬で解説してくれました。
今回はシンプルなエラーログを解析させましたが、複雑で難解なログであっても
AIは一瞬で分かりやすく解説してくれるため、個人のスキルに依らずに素早く対応ができます。

ここまでは、手動でAIにエラーログと質問を投げかけて解析してもらいました。
これだけでもエラー解析の効率はグンと上がりますが、エラーが発生した瞬間にAIが自動で解析してくれたら最高だと思いませんか?

そんな仕組みを実現する一例として、インフラ運用の王道である「シェルスクリプト」と、定期実行を行う「Cron(クーロン)」を組み合わせる方法があります。

そもそも「シェルスクリプト」とはなんぞや?という方は、
1課の技術書 シェルスクリプト編」の記事を是非ご参照ください!

それでは、この自動化の仕組みを構築するための3つのステップを簡単にご紹介します。

まずは「Slack」や「Teams」などのコミュニケーションツールに、AIがエラー解析を行った結果を投稿するための専用チャンネルを用意し、そのチャンネルに外からメッセージを書き込めるようにするためのURL(Incoming Webhook URL)を発行しておきます。

次に、人間が行う作業をすべて代行してくれるプログラム(シェルスクリプト)を作成します。
このスクリプトに中に、以下の3つの処理を順番に書き込みます。

 処理1:エラーの抽出
 「grep」コマンドを使い、ログファイルから「SyntaxError」「ERROR」など特定の危険ワードが含まれる行だけ自動で探して抽出します。

 処理2:AIへ送信
 抽出したログを、「Curl」コマンドを使って生成AIのAPIへ送信します。

 処理3:解析結果の通知
 AIからの返答を、再び「Curl」コマンドを使って、ステップ①で用意した「Slack」や「Teams」などの通知用URLへ送信します。

スクリプトが完成したら、最後にLinuxの定期実行ツール「Cron」へ登録します。
「crontab -e」コマンドで設定画面を開き、ステップ②で作成したシェルスクリプトを自動実行する設定を1行書き込むだけです。
例えば、5分毎に実行させたい場合は下記のように書き込みます。

この仕組みを一度作ってしまえば、人間が寝ている間も自動でログを見張り、
エラーを検知した瞬間にAIが解析した結果をチャットへ通知してくれます。

いかがでしたでしょうか?
今回は、難解なエラーログを生成AIを使って解析する方法と、それをシェルスクリプトCronで自動化するアプローチをご紹介しました。
エラー解析以外でも、事前に前提情報を覚えさせておくカスタムAI機能を使うことで、自分専用のAIアシスタントを作ることもできるので、ここから初めてみるのもおすすめです。

最後に、絶対に忘れてはいけないセキュリティ上の注意についてです。
会社のログや顧客情報を無料版のAIチャットにそのまま貼り付けてしまうと、AI学習素材としてデータが取り込まれ情報漏洩につながるリスクがあります。
業務で使用する際は、必ず社内で推奨されている安全な環境を使い、IPアドレスや個人情報などの機密情報は事前に削除してからAIに渡すようにしてください。
また、AIは間違った情報を出力する可能性があるということも常に頭に入れておく必要があります。

皆さんもセキュリティリスクとアイスの食べ過ぎに注意して、この暑い夏を乗り切りましょう!
最後までお読みいただき、ありがとうございました!

The following two tabs change content below.

K.T

毎日が新しい学びの連続で、日々奮闘しています。 好きなものは映画、野球、動物園。 最近はお腹周りの急成長に危機感を覚えつつ、つまみ食いが止まりません。

最新記事 by K.T (全て見る)