ログ分析と自動通知の基本|重要な情報を知らせる仕組み|UNIX Cafe

当ページのリンクには広告が含まれています。
ログ分析と自動通知の基本|重要な情報を知らせる仕組み

UNIX Cafe | 第16回

“カフェ日報”をもっと便利に!ログを読んで自動でお知らせ

目次

はじめに|ログを読むってどういうこと?

ミナちゃん

ユニ先生、前回のスクリプトでログを残すようになったんですけど、
毎回ファイルを開いてチェックするのがちょっと大変で…☕💦

ユニ先生

ふむふむ、それは良い悩みだね。
ログを“書く”ことができたら、次は“読む”番だ。
今日は、ログの中から大事なメッセージを見つけ出して、
自動でお知らせしてくれる仕組みを作ってみよう📩

grepでエラーメッセージを見つけよう

ユニ先生

まずは“grep”コマンドの登場だ。
grepは、ファイルの中からキーワードを探す“探偵さん”みたいなコマンド🔎

エラー行を検索してみよう

bash
$ grep "ERROR" /home/username/unix_cafe/cafe_log.txt
ミナちゃん

わぁ、ERROR って書かれた行だけが出てきました!☕✨
これなら問題のある部分をすぐに見つけられますね。

ユニ先生

そうそう。カフェで例えるなら、
“今日のコーヒー豆が焦げてないか”チェックするみたいなものさ☕

mailコマンドでお知らせを送ろう

Linuxでメールを送るときはね、
実はカフェの裏でこっそり働いている “郵便係(MTA:Mail Transfer Agent)” が
しっかりお仕事をしてくれているんだ📬

たとえば sendmail や postfixexim なんかがその郵便係。
mail や mailx コマンドは、ただ「この手紙をお願いね☕」と伝えるだけで、
あとは彼らが宛先までちゃんと届けてくれるんだ。

だからLinuxでは、echo "Hello" | mail -s "Test" you@example.com
って書くだけで、ほんとにメールが届くんだよ📨✨

Linuxカフェのキッチンには、いつも準備万端のスタッフたちがいて、
依頼が来たらすぐに湯気を立ててメールを出してくれる☕🔥

もし外の郵便局(SMTPサーバー)を使いたければ、
mailx の設定ファイルにちょっとレシピを書き足すだけでOK。

つまり、
Linuxの世界では、メール送信は“標準装備のサービス”なんだ☕✨

「カフェのスタッフが多いほど仕事が早い」ってこと、UNIXの世界でも同じなんだよ

エラーをメールで送信するスクリプト

ユニ先生

では早速、その結果を“自動で通知”する仕組みを作ろう。
grep で見つけたエラーをメールで送れば、毎日ログを開かなくても確認できるんだ📩

for Linux

/home/username/この部分を自分のユーザー名に書き換えてください。

#!/bin/bash
# ☕ error_check.sh
# ログの中からERRORを探してメール送信

LOG_FILE="/home/username/unix_cafe/cafe_log.txt"
RESULT=$(grep "ERROR" $LOG_FILE)

if [ -n "$RESULT" ]; then
    echo "☕ カフェログにエラーが見つかりました!" | mail -s "UNIX Café:エラーレポート" username@example.com
else
    echo "✨ 今日もカフェは順調です!" | mail -s "UNIX Café:正常レポート" username@example.com
fi
ミナちゃん

ファイル名は「error_check.sh」にして保存し、実行権限をつけましょう。

ファイルに実行権限をつける

bash
$ chmod +x error_check.sh

Apple純正のMail.appを使う(確実・おすすめ)

macOSでメールを送るときはね、
実はLinuxみたいに mail コマンドをそのまま使うことができないんだ。

というのも、macOSには “メールを配信するためのエンジン(MTA)” が標準で動いていないんだよ。
Linuxでは sendmail や postfix がこっそりキッチンの裏で働いていて、
mail コマンドがそれを呼び出してメールを届けてくれる📬

でもMacには、そのキッチンスタッフがいない。
だから「mail で送って!」と頼んでも、誰も動いてくれないんだ。

そこで登場するのが Apple純正のMail.app!🍎✨
これなら、macOSの中にすでに整っている“バリスタ”(Mailアプリ)を
osascript(AppleScript)経由で直接呼び出して
コーヒーを渡すようにスッとメールを届けてくれる📩

つまり、
Macでメールを出すなら mail ではなく “Mail.appにお願いする” のが正解なんだ。

「Linuxのカウンターには郵便係がいるけど、Macのカフェでは店長(Mail.app)が直接届ける」
そんな違いだと思えば覚えやすいね✨

エラーをメールで送信するスクリプト

ユニ先生

macOSでは mail コマンドが使えないから、
代わりに Mail.app にお願いして送ってもらうんだ🍎📩
osascript を使えば、店長(Mail.app)が自分で手紙を届けてくれるよ。

for macOS

/Users/username/この部分を自分のユーザー名に書き換えてください。

#!/bin/bash
# ☕ error_check_mac.sh
# ログの中からERRORを探してMail.appで送信(確実動作版)

LOG_FILE="/Users/username/unix_cafe/cafe_log.txt"
RESULT=$(grep "ERROR" "$LOG_FILE")

if [ -n "$RESULT" ]; then
    MESSAGE="☕ カフェログにエラーが見つかりました!"
    SUBJECT="UNIX Café:エラーレポート"
else
    MESSAGE="✨ 今日もカフェは順調です!"
    SUBJECT="UNIX Café:正常レポート"
fi

osascript <<EOF
tell application "Mail"
    set newMessage to make new outgoing message with properties {subject:"$SUBJECT", content:"$MESSAGE", visible:false}
    tell newMessage
        make new to recipient at end of to recipients with properties {address:"username@example.com"}
        send
    end tell
end tell
EOF
ミナちゃん

わぁ〜✨ 本当にメールが届きました!
カフェのログが毎晩送られてくるなんて、ちょっと感動です☕📩

ユニ先生

よくできました、ミナちゃん✨
これでカフェの“日報メール”も自動で届くようになったね。
毎晩、ログをチェックして「今日もカフェは順調です☕」って知らせてくれる。UNIX Caféの夜勤スタッフとして、もう立派に一人前だよ🌙

ファイルに実行権限をつける

bash
$ chmod +x error_check_mac.sh
ミナちゃん

ファイル名は「error_check_mac.sh」にして保存し、実行権限をつけましょう。

毎晩22:00に自動実行 & スクリプト内で「送信成功!」を記録 for Linux

crontab を開く

bash
$ crontab -e

以下のコードを追加

/home/username/この部分を自分のユーザー名に書き換えてください。

0 22 * * * /home/username/unix_cafe/error_check.sh >> /home/username/unix_cafe/cron_debug.log 2>&1
ミナちゃん

Linux:/home/username/macOS:/Users/username/ の部分は自分の環境に合わせて変更してくださいね。

# 直前の処理結果で成功/失敗を記録
if [ $? -eq 0 ]; then
  /bin/echo "$(/bin/date '+%Y-%m-%d %H:%M:%S') 送信成功!" >> /home/username/unix_cafe/mail_log.txt
else
  /bin/echo "$(/bin/date '+%Y-%m-%d %H:%M:%S') 送信失敗…" >> /home/username/unix_cafe/mail_log.txt
fi

error_check.sh の末尾に追記(osascript の直後でOK)

事前に実行権限:chmod +x /home/username/unix_cafe/error_check.sh

mail/mailx を使う場合は MTA(postfix/sendmail等) の設定が必要です。

起動して設定すれば、mail/mailx が使える

bash
$ sudo systemctl enable --now postfix

これで mail コマンドが内部で Postfix を呼び出せるようになります📬

Linuxカフェにはね、郵便係(MTA)は最初から店の奥にいるんだ。
でも、初期設定のままだとまだ休憩中☕💤
「お仕事お願いね」って言ってあげれば、ちゃんと起きてメールを届けてくれるんだ📩✨

☕ ポイント

  • cron は PATH が狭いので 絶対パス/bin/echo /bin/date)で安心。
  • 実行権限もお忘れなく:chmod +x /Users/username/unix_cafe/error_check_mac.sh

これで、毎晩22:00に自動送信しつつ、mail_log.txt に
「送信成功!」の足跡が残ります📬✨

まとめ|ログを見守るカフェの夜

ミナちゃん

エラーを見つけてメールで知らせてくれるなんて、
 カフェが自分で“日報”を書いてるみたいですね📩

ユニ先生

毎晩、ログを開かなくても、カフェのスタッフ(スクリプト)がちゃんと報告してくれるんだ。これが“自動化”の第一歩だよ☕🌙

ミナちゃん

じゃあ、次は“バックアップ”も自動にしたいです!

ユニ先生

いいねぇ、それこそカフェの“閉店作業”だね。次回は、1日の記録をきれいに包んで保存しておこう☕✨

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次