VPS を式年遷宮する その3 サーバの監視周り - Mackerel 導入
概要
サーバ監視を目的として Mackerel を導入、SSH ログイン時 Slack へ通知するスクリプトを組み込んだ。
その際の作業内容を記述する。
環境
サーバ
- Ubuntu 18.04
ローカル
- macOS 10.15.6 Catalina
- iTerm2
1. Mackerelの導入
Mackerel とは
株式会社はてな が開発・運用しているサーバ監視サービス。
mackerel.io
数年程利用していますが、グラフやアラート時系列といった UI が見やすく、
各種設定も分かりやすいのでお勧めです。
Free プランと Standard プランが存在するが、個人用途なら Free プランで十分です。
サーバへのインストール
mackerel-agent
のインストールは非常に簡単です。
Mackerel のダッシュボードにて、新規ホストを追加する際に提示されるワンライナーコマンドを実行するだけで完了します。
$ sudo wget -q -O - https://mackerel.io/file/script/setup-all-apt-v2.sh | MACKEREL_APIKEY='<API Key>' sh
私の環境ではパッケージが足りず失敗したので、必要パッケージを導入しました。
$ sudo apt install gnupg
監視ルールの設定
サーバに異常が出た際、通知するための監視ルールを設定します。
Free プランでは監視ルール数の上限が結構少ないので、
厳密な設定が必要な場合は有償プランを検討してください。
Slack 通知の設定
監視ルールに抵触した場合は通知を送信できます。
送信先には様々なサービスが選択でき、複数サービスへ同時送信も可能です。
Slack へ通知を行う際には下記の2つが必要です。
- 通知するチャンネル名
- Slack の Webhook URL
実際に Slack へ通知が送られた例は以下の通り。
2. SSH ログイン時通知スクリプト導入
SSH ログイン時に実行するスクリプトを /var/local/script/
に設置する。
$ sudo vim /var/local/script/sshlogin.sh --- #!/bin/sh #WebHookUrl WEBHOOKURL="<WebHookUrl>" #Slack送信チャンネル CHANNEL=${CHANNEL:-"#server"} #Slack送信名 BOTNAME=${BOTNAME:-"SSH_Login"} #Slackアイコン FACEICON=${FACEICON:-":ghost:"} #Slackメッセージ MESSAGE=${MESSAGE:-"$1が$2から$3にログインしました"} curl -s -S -X POST --data-urlencode "payload={\"channel\": \"${CHANNEL}\", \"username\": \"${BOT NAME}\", \"icon_emoji\": \"${FACEICON}\", \"text\": \"${MESSAGE}${WEBMESSAGE}\" }" ${WEBHOOKURL} >/dev/null
/etc/ssh/sshrc
に下記を記述する。
$ sudo vim /etc/ssh/sshrc --- if [ $PS1 ]; then /var/local/script/sshlogin.sh "$USER" "$SSH_CLIENT" "$HOST_NAME" fi
SSH でログインを行うと Slack へ下図のような通知が届きます。