Google Cloud FunctionによるCloud MonitoringからMattermostへの通知送信
はじめに
Serverlessは最近のソフトウェア開発コミュニティで最もホットなキーワードの1つです。Serverlessとは何でしょうか。その名称の通りにアプリを開発する際に、サーバーが必要ないことです。実は、ここの「必要ないこと」とは「気にしなくてもいい」という意味で、開発者がサーバーとデプロイプロセス等を調査、設計、設定せずに、コードをプッシュするだけでいいのです。その他はクラウドプロバイダーのServerlessサービスが対応します。現在、「AWS」、「Azure」、「Google Cloud」はServerlessサービスを提供しています。今日の記事では、Cloud Functionの概要を紹介し、このサービスで簡単なアプリケーションの作成を説明します。Google Cloud Function
現在、GoogleはGoogle Cloud Run、App Engine、Cloud Functionの3つのServerlessサービスを提供しています。これら3つのサービスの違いについては以下の図(Googleによる提供)をご参照ください。



情報の送受信用のGoogle Cloud Function の使用
すでにGoogle Cloudを使用している場合は、Googleのシステム監視サービスであるCloud Monitoringを必ず使用する必要があります。このサービスは、システムステータスを監視し、CPU、メモリの合計使用量が特定のしきい値を超える時などに通知を作成します。ただし、現在、通知チャネルリンクはMattermostのWebhook(当社がホストして使う無料のスーパーチャットプログラム)はサポートしておらず、特定のチャネルのみをサポートしています。それで、Google Cloudを使っているWebhookを作成して、このWebhookでMattermostに投稿することにしました。
まず、MattermostでIncomming Webhookを作成します。

Cloud Monitoringへのリクエスト解析
Cloud MonitoringからWebhookに送信するリクエストの形式は以下の通りです。



Mattermostへのデータ送信
MattermostのWebhookにデータを送信するのも簡単です。 以下の形式のjsonデータでリクエストを送信すると、Mattermostは、このWebhook用に設定されたアカウントと設定に従ってメッセージを投稿します。




Cloud Monitoringでの設定と結果
Google Cloudの管理画面から、 Monitoring → Alert → Edit Notification Channel(https://console.cloud.google.com/monitoring/alerting/notifications)にアクセスし、デプロイした関数を使ってWebhook Notification Channelを作成できます。

まとめ
GoogleCloud Functionを使用して、データ送受信用のWebhookを簡単に作成できます。シンプルでステートレスなイベント処理の場合、Google Cloud Functionは合理的なソリューションであり、従来のデプロイオプションに比べて多くの利点があります。より複雑な処理の場合は、Google Cloud RunとApp Engineがより適切なServerlessオプションになります。IoT Solutions