GMO DevelopersDay
GMO DevelopersDay
2024.11.29Fri - 11.30Sat YouTube Live
イベント開催まであと11

レガシーシステムのログ管理:生成AIを利用した課題解決!

こんにちは。
DX推進開発部というチームでアプリケーションエンジニアをしている鈴木です。
レガシーシステムのログひっ迫問題を、生成AIを利用して解決した話を書いてみようと思います。

はじめに

私は社内向けの内製システムの開発・保守運用チームでアプリケーションエンジニアをしています。
担当するシステムは多岐にわたるのですが、中にはレガシーと呼ばれる古いシステムも存在します。
小規模なシステムなのですが、古い分潜在的な課題が残っていることがあります。

ある日、担当するシステムの一つ(Windowsバッチアプリケーション)で、サーバーの容量がひっ迫しているという問題が発生しました。

この問題に生成AIを利用して課題解決をしていったことを書いていきます。


ログ管理の問題

サーバーの容量ひっ迫について調査した結果、原因は膨大なログファイルデータによる容量不足であることが判明しました。

さらに調査を続けたところ、ログファイルに対して、いわゆるログローテーションと呼ばれる有効な設定(アーカイブや削除等)が入っておりませんでした。

生成AIに最適解を聞いてみる

ログローテーションに対して正しい知見を持っていなかったため、生成AIに相談してみます。

以下はプロンプトです。今回はGemini 1.5 Flashを利用しました。

以下は回答です。

スクリプトを組むか、クラウドサービスを利用するか、サードパーティのツールを利用する手段を提示してくれました。
念のためGoogleで検索をしましたが概ね同じ内容が得られました。

しかしクラウドサービスやサードパーティツールは利用料がかかります。移行費用も含め、レガシーシステムにそこまでのコストを払うのは現実的ではありません。
そのためスクリプトを組むという方針で対応することにします。

コーディング

コーディングも例によってAIにお願いします。
今回はD:\APPLOGs\Logsというフォルダに「GMO01.YYYYMMDD.log」という名称で溜まっていくシンプルなログを想定してスクリプトを組んでもらいます。

スクリプトの生成は1回で期待する成果は返ってこないので、複数回のラリーとトライ&エラーをしています。
最終的に以下のようなコードとなりました。

こちらのスクリプトをタスクスケジューラにタスク設定します。
週1の起動設定をすれば、毎週圧縮&削除を実施してくれるようになります。

スクリプトの解説

このスクリプトを実施した際のログ出力用の関数
$logOutputPath = “D:\APPLOGs\script_output.log”に出力します。


ログファイルの最終更新日時が$CompressDate以前かどうかを判定。
このサンプルでは$CompressDateは7日前です。
$CompressDate以前であれば、ログファイルを ZIP 形式で圧縮し、指定されたフォルダに移動します。
圧縮が成功したら、元のログファイルを削除します。


アーカイブファイルの削除を実施します。
削除条件はファイル名に含まれる日付が$DeleteDateよりも前かどうかで判定します。
このサンプルでは$DeleteDateは2年前です。

おわりに

今回、生成AIの力を借りて課題解決をした経験を書いてみました。
対応方針のヒントをもらい、開発コストを抑えることができました。

このように最近では生成AIを利用して効率的に課題解決を目指す機会が増えています。開発の時間を極力減らし、より生産的な作業に集中するということが重要になってきていると思います。

最後に、散々言われていることですが、生成AIも万能ではないです。出力内容が正確ではないこともあるため注意が必要です。
コーディングに関しての所感ですが、エラー処理、セキュリティ対策などはきちんと条件に含めないと正しく入れてくれないことが多いと感じています。
アイデア出しや基本的なコード作成は非常に強力ですが、最終的には自身でのチェックが必須になってきます。

ブログの著者欄

鈴木 康太

GMOインターネットグループ株式会社

こんにちは。 DX推進開発部という社内向けの内製システムの開発・保守運用チームでアプリケーションエンジニアをしている鈴木です。 ボーダーコリーをずっと触っていたいです。

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW

GMOインターネットグループのSNSをフォローして最新情報をチェック