🔍

Ubuntu 18.04でswatchを使ってログ監視、メールで送信(Gmail利用)

2021/01/23に公開

USBの接続が悪いのか、時々認識が外れてエラーが出てしまうのを、メールで知らせてほしかった。
どうもswatchというものでログ監視できるようだったが、まとまった情報が探しづらかったのでまとめる。

インストール

$ sudo apt-get install swatch

コマンドはこれでインストールできるが、実行するコマンドはswatchdogとなる。

実行コマンド

$ sudo swatchdog -c ~/.swatchrc -t [監視したいログファイル]

ただし、以下の設定をすべてした後に起動する。

設定ファイル

ホームディレクトリに.swatchrcを用意する。

$ vim ~/.swatchrc

記載内容は以下にした。

watchfor /[監視したい文字列]/
  echo red
  mail addresses=your\@address.com, subject=log_error
  pipe /your/script/path/do.py
watchfor /.*/
  echo

[監視したい文字列]を書き換える。例えば、errorとしておくと、errorという文字列が出力されたら書かれている内容を実行してくれる。
2つめのwatchforで書いているものは、監視したい文字列を含めて、すべてのログを端末上に表示するため。

ただ、これだけでは外部にメールを送信できるわけではない。
メール送信のためには、postfixが必要。また、Gmailのsmtpサーバを使うことが可能。

メールサーバの設定

メール系のソフトをインストール。

$ sudo apt install mailutils

起動を確認し、起動していなかったら起動する。

$ sudo systemctl status postfix
$ sudo systemctl start postfix

Gmailの設定

Gmailを使用する場合は、設定ファイルに書き込むパスワードを新たに作成する必要がある。
https://security.google.com/settings/security/apppasswords
こちらにアクセスして、発行されるパスワードを控えておく。

Googleのアプリパスワード設定
Googleのアプリパスワード設定

上記のような画面になるので、画面真ん中下の「デバイスを選択→その他(名前を入力)」でわかり易い名前をつけて「生成」をクリックすると、パスワードが発行される。

当初、通常のGmailパスワードを書いていると、ログにApplication-specific password requiredと出力され、そんなものがあるのかと知った次第。
設定ファイルに直接書くから、こういう手法を用意していると思われる。
アプリパスワードなら、削除もしやすいし。

メール送信サーバの設定

設定ファイルを編集する。

$ sudo vi /etc/postfix/main.cf

https://qiita.com/hkato/items/e6e58abfc416d2820f4c#中継設定
こちらの記事の通り追記する。

# GMail
# relayhostの角括弧はそのまま記述する。
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain

認証設定も同記事に従って行う。
https://qiita.com/hkato/items/e6e58abfc416d2820f4c#認証ユーザの設定

ただし、パスワードは先程控えておいたアプリパスワードを記載する。

パーミッションの変更等も済んだら、postfixを再起動する。

これで、監視したい文字列がログに出力されればメールが送信される。

その他

.swatchrcに記載したpipe /your/script/path/do.pyのpipeコマンドは、ログの内容を標準入力に渡す。
Pythonで標準入力を受け取る場合は、スクリプト上で

log_output = input()

とすれば、ログの内容を受け取れる。

参考

https://qiita.com/tukiyo3/items/258fa8fa8c48f05db1c9
https://www.usupi.org/sysad/271.html
https://nekonokataomoi.hatenadiary.org/entry/20101111/1289459703
https://qiita.com/hkato/items/e6e58abfc416d2820f4c
https://devanswers.co/outlook-and-gmail-problem-application-specific-password-required/

Discussion