私は普段AWSのEC2でサーバー構築をしているのでCloudWatchにログは取っているのですが、コンソールにログインして見にいくのもめんどくさいですよね。
そこで、slackに定期的に状況を送ってもらった方が楽何じゃねということで今回サーバ監視botを作ってみました!
今回は、メモリの使用量を送信しますが監視したいものに応じてカスタマイズしてみてください。
事前準備
slack
slackに通知するためにslackのアクセストークンが必要です。
(アクセストークンの取得に関しては詳しくご紹介しているサイトを参考にしてみてください。)
botとして通知してほしい場合は「Bot User OAuth Access Token」で、
自分のユーザーとして通知してほしい場合は「OAuth Access Token」をコピーしておいてください。
機能的にはどっちでも大丈夫です。
必要なライブラリ
今回は、pythonの「slackclient」というライブラリが仕様するのでダウンロードします。
pip install slackclient
以上で事前準備は終わりです。
slackbot用スクリプト
基本的にコピペで大丈夫です。
アクセストークンとチャンネルIDを変えたらそれで動作すると思います。
(動作確認環境はAmazonLinux2ですが、Linux系のOSであれば動作すると思います。)
class SlackBot():
def init(self):
slack_token = "アクセストークン"
slack_channel = "チャンネル名(#から始める)"
client = WebClient(slack_token)
ms_args = ["free", "-m"]
memory_swap = subprocess.check_output(ms_args).decode('utf-8')
self.send_message(client, slack_channel, memory_swap)
def send_message(self, client, channel_id, message):
client.chat_postMessage(
channel=channel_id,
text=message
)
定期実行したい方はcronを設定し定期実行させることもできます。
自分の忘備録の兼ねているのでコードを乗せて少し解説しているだけですが、もっと詳しく解説してほしいなどのご要望などありましたら追記していこうかなと思います。
コメント