#はじめに
サーバ(CentOS)に対するログインを全てslackで通知させたかった.
そこでrsyslogからシェルスクリプトを呼び出してslackに通知させてみる.
#Slackトークンの取得
今回はこちらを参考に取得させていただいた.
#rsyslogの設定
rsyslogの設定を追加する./etc/rsyslog.d/slack.conf
を作成して以下を書き込む.これでログイン時にslack.sh
が実行されるようになる.
/etc/rsyslog.d/slack.conf
$template login_msg, "%fromhost% %msg%"
if \
( $msg contains 'pam_unix(' ) \
and ( $msg contains 'session opened' ) \
then ^/etc/rsyslog.d/slack.sh;login_msg
次に/etc/rsyslog.d/slack.sh
を作る.例として,チャンネル名はalertとしている.
/etc/rsyslog.d/slack.sh
#!/bin/sh
curl -XPOST -d "token=アクセストークン" -d "channel=#alert" -d "text=${1#* * * * * }" "https://slack.com/api/chat.postMessage"
text=${1#* * * * * * }
の部分で下の例のような形にログを切り出している.
pam_unix(sshd:session): session opened for user root by xxxxx(uid=xxxx)
#これを切り出すと
root by xxxxx(uid=0)
#動作確認
まずは普通にSSHでログインしてみる.
ちゃんと通知が来た.
次にsudo
やsu -
を使ってみる.
rootへのログインも通知が来た.
#最後に
自分しかユーザがいないサーバで動かしてるので,不意の通知が来ないよう祈る.
#参考文献