LoginSignup
1
3

More than 3 years have passed since last update.

ログインをrsyslog経由でslackに通知させる

Last updated at Posted at 2020-02-07

はじめに

サーバ(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でログインしてみる.
無題.png
ちゃんと通知が来た.

次にsudosu -を使ってみる.
無題.png
rootへのログインも通知が来た.

最後に

自分しかユーザがいないサーバで動かしてるので,不意の通知が来ないよう祈る.

参考文献

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3