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

当サイトでは、コンテンツの一部に広告を掲載しています。
ログ分析と自動通知の基本|重要な情報を知らせる仕組み|UNIX Cafe

UNIX Cafe | 第16回

目次

はじめに|ログを「読む」ことで、自動化は完成する

前回は、スクリプトの実行結果を ログとして残す ところまで進みました。

ただ、ログは「残しただけ」では、まだ少し不便です。

  • 毎回ファイルを開くのは面倒
  • 重要なエラーを見逃してしまう
  • 忙しい日は確認を忘れがち

そこで今回は、ログの中から必要な情報だけを取り出し、
自動で知らせてくれる仕組み
 を作ります。

これができると、UNIX Cafe の自動化は 一段階レベルアップ します。

grepでログの中から「異常」を見つける

ログファイルは、
1日分・1週間分と増えていくと、とても人の目では追えません。

そこで使うのが grep コマンド です。

grep は、ファイルの中から特定の文字列を探すコマンド です。

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

grep "ERROR" /home/username/unix_cafe/cafe_log.txt

このコマンドは、

  • cafe_log.txt の中から
  • "ERROR" を含む行だけを
  • 画面に表示する

という意味になります。

👉「問題が起きた行だけを見る」という、とても大事な第一歩です。

ログ監視とメール通知の考え方

ここで一度、全体像を整理します。

今回やりたいことは、次の流れです。

  1. ログファイルを読む
  2. エラーがあるか調べる
  3. 結果をメールで知らせる

この3つを組み合わせることで、

  • ログを毎日確認しなくても
  • 問題があれば自動で気づける

安心できる運用環境 が完成します。

Linuxでエラーをメール通知するスクリプト

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

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

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

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

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

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

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

エラー検知+メール送信スクリプト

#!/bin/bash
# error_check.sh

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

if [ -n "$RESULT" ]; then
    echo "カフェログにエラーが見つかりました。" \
    | mail -s "UNIX Cafe : Error Report" username@example.com
else
    echo "本日のログに問題はありません。" \
    | mail -s "UNIX Cafe : Daily Report" username@example.com
fi

ポイント

  • grep の結果が 空でないか をチェック
  • エラーがあれば「エラーレポート」
  • なければ「正常レポート」

👉ログを見に行くのではなく、ログから知らせてもらう 発想です。

スクリプトに実行権限を付ける

chmod +x error_check.sh

これを忘れると、cron から実行できません。

macOSの場合|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)が直接届ける」
そんな違いだと思えば覚えやすいね✨

Apple純正の Mail.app を呼び出す 

macOS には、Linux のような MTA(sendmail / postfix) が標準では動いていません。

そのため macOS では、

  • mail コマンドを使うより
  • Apple純正の Mail.app を呼び出す 方が確実です。

macOS 用スクリプト(Mail.app 使用)

#!/bin/bash
# error_check_mac.sh

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

if [ -n "$RESULT" ]; then
    MESSAGE="カフェログにエラーが見つかりました。"
    SUBJECT="UNIX Cafe : Error Report"
else
    MESSAGE="本日のログに問題はありません。"
    SUBJECT="UNIX Cafe : Daily Report"
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

👉 macOS では Mail.app を使う
これを覚えておくと安心です。

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

chmod +x error_check_mac.sh

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

crontab を開く

crontab -e

毎晩22:00に実行する設定

0 22 * * * /home/username/unix_cafe/error_check.sh >> /home/username/unix_cafe/cron_debug.log 2>&1
フィールド意味
00分
2222時
*毎日
*毎月
曜日*すべての曜日

👉「毎日22:00に1回実行」という、明確な意味を持った設定です。

処理結果をログに残して安心度アップ

if [ $? -eq 0 ]; then
  /bin/echo "$(date '+%Y-%m-%d %H:%M:%S') 送信成功" >> /home/username/unix_cafe/mail_log.txt
else
  /bin/echo "$(date '+%Y-%m-%d %H:%M:%S') 送信失敗" >> /home/username/unix_cafe/mail_log.txt
fi

これをスクリプトの末尾に追加すると、

  • メール送信の成功・失敗
  • 実行時刻

がログとして残ります。

👉 自動処理は「記録が残る」ことで完成 します。

ポイントまとめ

  • grep でログを読む
  • メールで結果を通知
  • cron で毎日自動実行
  • 成功・失敗もログに残す

この流れができれば、ログ監視の基本はマスター です。

まとめ|ログを見に行かない運用へ

ログは、

  • 毎日開いて確認するものではなく
  • 必要なときに知らせてくれるもの

に変えられます。

今回の仕組みは、
バックアップや監視、自動レポートなど、
あらゆる自動化の土台になります。

次回は、1日の記録をまとめて保存する「自動バックアップ」 へ進みましょう。

☕ UNIX Cafe の自動化は、ここからどんどん楽しくなります。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次