Pythonでログ解析&レポート自動作成ツールを作ってみた【Pandas×Matplotlib×メール送信】

プログラミング

「毎日のログを手作業でチェックするのが大変」
「報告資料の作成に時間を取られて開発が進まない」
こうしたお悩みをお持ちではないでしょうか?

本記事では、Pythonを使ってログを自動で解析し、グラフ付きのレポートを作成し、メールで送信するツールを一から開発する方法をご紹介します。

PandasとMatplotlib、そしてメール送信機能を組み合わせれば、誰でも簡単に業務の自動化が実現できます。
この記事を読めば、面倒な手作業から解放され、作業効率を飛躍的に向上させることができます。

ログ解析ツールとは?

結論

ログ解析ツールとは、サーバーやアプリの動作記録を自動で読み取り、異常や傾向を分析するプログラムです。

理由

特にWebサービスや業務システムでは、アクセス状況やエラー情報を把握するためにログが必須です。
しかし、それらを毎日手作業でチェックするのは大きな負担です。

具体例

たとえば、エラーログから「1日あたりのエラー発生数」や「エラー内容の種類別件数」を抽出すれば、
システム改善に活かせます。

ポイント

  • ログを解析することで、問題の早期発見が可能
  • 手作業の負担が軽減される
  • データを可視化することで関係者への報告も簡単

使用するPythonライブラリ

結論

以下のライブラリを使います。すべて無料で導入できます。

使用ライブラリ一覧

  • pandas:データ解析用ライブラリ
  • matplotlib:グラフ作成ライブラリ
  • smtplib・email:メール送信用の標準ライブラリ
  • datetime:日付処理用

これらは pip で簡単に導入できます:

1
pip install pandas matplotlib

ログファイルの読み込みと前処理

結論

CSV形式のログファイルをpandasで読み取り、必要なカラムを抽出・整形します。

具体コード

1
2
3
4
5
6
import pandas as pd
 
df = pd.read_csv("access_log.csv")
df["datetime"] = pd.to_datetime(df["datetime"])
df["date"] = df["datetime"].dt.date
error_df = df[df["status"] >= 500# ステータスコード500以上=エラー

Matplotlibでグラフ作成

結論

エラー件数を日別に集計し、棒グラフで可視化します。

具体コード

1
2
3
4
5
6
7
8
9
10
import matplotlib.pyplot as plt
 
daily_error = error_df.groupby("date").size()
plt.figure(figsize=(10, 5))
daily_error.plot(kind="bar")
plt.title("日別エラー件数")
plt.xlabel("日付")
plt.ylabel("エラー数")
plt.tight_layout()
plt.savefig("error_graph.png")

メールで自動送信する方法

結論

Python標準の smtplibemail を使えば、画像付きメールを送信できます。

具体コード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import smtplib
from email.message import EmailMessage
 
msg = EmailMessage()
msg["Subject"] = "本日のログレポート"
msg["From"] = "your_email@example.com"
msg["To"] = "receiver@example.com"
msg.set_content("添付の画像をご確認ください。")
 
with open("error_graph.png", "rb") as f:
    msg.add_attachment(f.read(), maintype="image", subtype="png", filename="error_graph.png")
 
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("your_email@example.com", "your_password")
    smtp.send_message(msg)

完成形コード

以下は、すべての処理を一括で実行するコードです。

import pandas as pd
import matplotlib.pyplot as plt
import smtplib
from email.message import EmailMessage

# ログ読み込みと整形
df = pd.read_csv("access_log.csv")
df["datetime"] = pd.to_datetime(df["datetime"])
df["date"] = df["datetime"].dt.date
error_df = df[df["status"] >= 500]

# エラー集計とグラフ作成
daily_error = error_df.groupby("date").size()
plt.figure(figsize=(10, 5))
daily_error.plot(kind="bar")
plt.title("日別エラー件数")
plt.xlabel("日付")
plt.ylabel("エラー数")
plt.tight_layout()
plt.savefig("error_graph.png")

# メール送信
msg = EmailMessage()
msg["Subject"] = "本日のログレポート"
msg["From"] = "your_email@example.com"
msg["To"] = "receiver@example.com"
msg.set_content("添付の画像をご確認ください。")

with open("error_graph.png", "rb") as f:
    msg.add_attachment(f.read(), maintype="image", subtype="png", filename="error_graph.png")

with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("your_email@example.com", "your_password")
    smtp.send_message(msg)

まとめ

本記事では、Pythonで以下を自動化するツールを作成しました。

  • ログファイルの読み込みと整形
  • エラー集計とグラフ可視化
  • メールでの自動送信

このツールを使えば、日々の報告業務が大幅に効率化されます。
応用として、PDF出力やSlack通知への展開も可能です。
ぜひ、あなたの業務にも取り入れてみてください。

タイトルとURLをコピーしました