1. HOME
  2. What's New
  3. Slackを利用したサーバー監視

What's New

最新情報

Tech Blog

Slackを利用したサーバー監視

Slackは、メールや会議から解放され、最高の仕事ができるように、大切な人とのつながりを保ち、好きなことをする時間を取り戻すことができるように設計されたコラボレーションプラットフォームです。このブログではエクストリームーDで稼働中のSlackを利用したサーバー監視とその効果についてご紹介します。

はじめに

エクストリームーDでは、社内のコミュニケーションツールとしてSlackを利用しています。Slackは、コラボレーション、柔軟性、包括的な働き方を実現するビジネスメッセージングアプリケーションとして知られています。Slackを使えば、同僚と簡単につながり、コミュニケーションをとることができます。弊社では、Slack APIを利用して、Slackをモニタリングツールのひとつとして活用しています。近年、システム運用において、ChatOpsツールであるSlackが注目されています。

さらに、Slackではチャネルを作成することもできます。チャネルというのは、複数のメンバーでコミュニケーションをとったり、共同作業をしたり、議論したりする専用スペースのことです。弊社では、サーバー監視のためのチャネルも用意しています。システムのログ(ステータス/警告/エラーを含む)をSlackに送信することで、システムの異常を即座に把握できるシステムを構築したいという背景があります。これにより、システムに問題が発生する可能性があることを警告、通知することで、サービスのダウンタイム削減が期待できます。このような仕組みを用意することで、弊社メンバーは問題発生時の対応を迅速に行えるようになります。

カスタマーサポートや一般的な通知、DatadogやCloudWatchなどの監視アプリケーションも含まれています。リモートワークではSlackを利用したコミュニケーションが便利です。また、いくつかのプログラミングスクリプトに基づいて、ディスク使用量、合計時間の計算、AWS関連ユーザーの使用状況などを出力することができます。弊社メンバーにとっては、常にSlackを第一に考えたワークスタイルとなっており、このような形で実現することで、サーバーの監視効率が向上することが期待できます。BashやPythonなどのスクリプトを利用しています。

今回のブログでは、弊社でSlackを使ってどのように監視を行っているかをご紹介します。

セットアップ

スクリプトの作成

グループごとに利用しているストレージ容量を求めるスクリプトを作成します。
ホームディレクトリの構造は /home/<group>/<user1> として、グループ毎のディスク容量を調べてみます。

#!/bin/bash
 
# get the total disk usage per group 
usage=$(du -h /home --max-depth=1 | grep group | column -t)
 
# push the data to a Slack channel
curl -X POST -H 'Content-type: application/json' --data "{\"text\": \"\`\`\`$usage\`\`\`\"}" https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY

このような結果をSlackで表示できるようにします。

374G  /home/group_1
544K  /home/group_2
496K  /home/group_3
1.4M  /home/group_4
0     /home/group_0
8.9M  /home/group_5
54G   /home/group_6
75M   /home/group_7
19G   /home/group_8
404K  /home/group_9
380K  /home/group_10
Slackの設定

次にSlack側での設定が必要となります。

  1. SlackのWeb API <https://api.slack.com/> ページにアクセスします。
  2. Slack Web APIページで Create an app をクリックし、次のダイアログボックスで Crete an App をクリックします。
  3. ‘From scratch’ を選択すると、次のようなダイアログボックスが表示されます。

アプリケーションが作成されると、次のようなページが表示されます。


最後に、アプリケーションをワークスペース、メッセージを表示させたいチャネルと関連付けます。

これでSlackと連携できました。

Crontabの設定

次に、作成したスクリプトを定期的に実行するために crontab の設定を行います。
例:毎日午後9時5分に実行する場合

5 9 * * * /path/to/script/filename01 >>/path/to/log/file01.log 2>&1

結果

このように設定することで、スクリプトの実行結果が、設定したSlackチャネルに送信され、crontabにより毎日定期的に午後9時5分に送信され流ようになります。

‘xdg-059’というグループのディスク使用量は527GバイトであることがSlackのxd-monitoringチャネルに送信されます。

まとめ

当初、サーバーの使用率を把握するのが大変でした。今では、Slackで必要な内容が通知されることで、使用率の把握が非常に簡単になりました。以前はたくさんのサーバーを手作業で確認する必要があったため、時間がかかっていました。しかし、今では作業が簡略化され、必要に応じてスクリプトを使って定期的に実行できるようになりました。

  • 今までは、トラブルが発生してから各クラスターにログインして確認する必要がありました。これは非常に面倒でした。
  • しかし、Slackに情報を集約することで、トラブルを回避できるようになりました。
  • 今では問題が発生しても、すぐに解決できるようになり、その効果は絶大です。
  • 警告・アラートにタイムリーのアクセスできるようになったことより、システムの運用改善やサービスのダウンタイム削減に効果があるものと考えます。

<著者について>
T.M.Shanmathiは、ネットワークエンジニアとして2年以上の実績があります。エクストリームーD入社後は、システムエンジニアとして5か月以上勤務しており、ネットワークやクラウドベースのプロジェクトに携わっています。また、フルスタックウェブ開発やハイパフォーマンスコンピューティングなどさまざまなプロジェクトにも従事しています。