Download - Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Transcript
Page 1: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

JAWS-UG山形 芦野 光

トラック:[Aceに聞け]

Page 2: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

自己紹介

芦野 光 宮城県仙台市在住

専門学生

JAWS-UG山形、仙台

AWS歴:6ヶ月

専門学校 東北電子専門学校 高度ITエンジニア科 所属(4年課程)

株式会社エスツー サーバーエンジニア(アルバイト勤務)

最近のできごと AWS麻雀はじめました

Page 3: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

アジェンダ

AWSを知ったきっかけ と AWSを使ったきっかけ

Amazon Cognito

Amazon SNS

アプリの紹介とデモ

Page 4: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWSを知ったきっかけ

Page 5: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWSってなに? クラウド?

VPS?

IaaS?

参加する前

通販のAmazonがサーバ屋さん?

PaaS?

Page 6: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

参加してみた

Page 7: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWS便利!!

参加した後

Page 8: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWSを使ったきっかけ

きっかけは、学校の授業の課題

Androidのアプリ開発の授業。

課題は「電話帳アプリ」の作成。

Page 9: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWSを使ったきっかけ

課題の開発自体は順調でしたが・・・

追加の仕様変更が。。

クラウドと複数端末との同期機能?知らない。。

あれ、でも。

Page 10: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

これ、AWSでもしかしたらできそう!?

Page 11: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

探してみた

Page 12: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWSを使ったきっかけ

これ、AWSでもしかしたらできそう!?

探してみる。

できそうな予感。

Page 13: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

実装してみる

Page 14: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

AWSを使ったきっかけ

できた!

Amazon Cognito

mobile client mobile client

Sync

Identity

Page 15: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognito

Page 16: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Amazon Cognito

AWSのモバイルサービス、2014年7月にリリース

提供している内容は大きく2つ

Sync

クラウド上にモバイルと同期できるデータストアを提供。

Identity Broker

モバイルからAWS上へのリソースのアクセス認証と制御。

提供しているリージョン

US East (N. Virginia)

EU (Ireland)

AWS Mobile SDKサポート

Page 17: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Sync

クラウド上にモバイルと同期できるデータストアを提供。

DatasetというテーブルにKey/Value形式でのデータの保存。

オフラインでもローカルのデータが利用可能。

同期時にコンフリクトの検知と発生時の処理実装が可能。

複数デバイスをまたいだ同期が可能。

Page 18: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Sync

Identitypool

Identity IdentityIdentity

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Dataset…

key value

1 Blue

2 Red

3 White

Page 19: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは Sync –用語

Identitypool アプリケーションのユーザアイデンティティを整理するコンテナ。

AWSアカウント1つにつき60個作成可能。

Identity ユーザアイデンティティ

複数のデバイスで共有可能。

複数のDatasetを持つ。

Dataset(Key/Valueのテーブル,同期ストア) Dataset1つあたり、1MBまでのデータが保存可能

Key/Value形式、Keyの数は最大1024個

保存できるデータ

英数字の文字列

バイナリデータはBase64でエンコードすることで保存可能。

1ユーザーあたり、Datasetの合計サイズの上限は20MB

Page 20: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Sync

Identity Pool…(App)

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

Identity…(Device)

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

AppPull

Push

synchronize

Page 21: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Sync

Identity Pool…(App)

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

Identity…(Device)

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

App

Dataset…

key value

1 Apple

2 Watermelon

3 Strawberry

Put

Get

Page 22: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Sync

Identity Pool…(App)

Identity…(Device)

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

AppPull

Push

synchronize

Dataset…

key value

1 Apple

2 Watermelon

3 StrawberryConflict

Dataset…

key value

1 Apple

2 Watermelon

3 Strawberry

Page 23: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Syncのユースケース

ゲームのセーブデータ。

アプリの設定情報。

電話帳の複数端末での同期。

Page 24: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Identity Broker

モバイルからAWS上のリソースへのアクセス認証と制御。

AWS上のリソースをモバイルから直接利用できる。(2 tier architecture)EC2なし構成ができる!

アクセス認証

OpenID Connect対応アイデンティティプロバイダーが利用可能

Facebook,Googleなどのアカウントを用いて認証可能

自前の認証基盤を利用することも可能

Developer Authenticated Identities

アクセス制御

認証あり、認証なし(ゲスト)ユーザにそれぞれのアクセス制御をIAMのRoleで割り当てができる。

Page 25: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

活用事例

株式会社ガリバー 様

クルマとの双方向コミュニケーションサービス「DRIVE+」にてCognitoを認証基盤として採用。

Concrete Software,Inc

NHLホッケーターゲットスマッシュ(スマホアプリ)にて、ゲームデータの保存と認証に採用。

Page 26: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon Cognitoとは

Cognitoの便利な機能

Cognitoストリーム(Kinessis連携)

同期ストアの同期、更新情報をKinessisで取り扱うことが可能に。

Push synchronization(SNS連携)

複数デバイスで使っている同期ストアが更新されるとAmazonSNSからサイレントプッシュ通知され、複数デバイスがクラウド上の同期ストアと同期を行う。

Page 27: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

Dataset…

key value

1 Apple

2 Watermelon

3 Strawberry

Amazon Cognito

new!

Amazon SNS

Dataset…

key value

1 Apple

2 Watermelon

3 Orange

PullPush

synchronizesynchronize

Push synchronizationMobile Push

Dataset…

key value

1 Apple

2 Watermelon

3 Strawberry

Dataset…

key value

1 Apple

2 Watermelon

3 Strawberry

Page 28: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

料金(2015年3月22日 現在)

同期と容量に対して課金

容量

同期ストアの容量 1 GB につき毎月 0.15ドル

同期

同期オペレーション 1 万回につき 0.15ドル

Page 29: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNS

Page 30: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSとは

Amazon Simple Notification Service

AWSのモバイルサービス

クラウド上からモバイルへのメッセージ配信サービス

特徴

マルチプロトコル対応

クロスプラットフォーム対応(プッシュ配信)

シンプル・スケーラブル

AWS Mobile SDKサポート

Page 31: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSとは

マルチプロトコル対応

プッシュ

Apple、Google、Fire OS、Windows デバイス対応

SMS, E-mail

テキストメッセージ

HTTP/s

任意の HTTP エンドポイントに配信

SQS(Amazon Simple Queue Service)

SNSからキューを登録

Page 32: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSとは

クロスプラットフォーム対応

異なるプラットフォームに対して、同じAPIで操作をサポート。

メッセージサイズはネィテブプラットフォームが上限

APNS(256B or 2KB)

GCM(4096B)

Page 33: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSとは

異なるプラットフォームのサポート ー 従来

APNS

GCM

WPNS

Hello

Hello

Hello

Hello

Hello

Hello

Page 34: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSとは

異なるプラットフォームのサポート ー Amazon SNS

APNS

GCM

WPNS

Hello

Hello

Hello

Hello

Amazon

SNS

Page 35: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる1

アプリケーションの登録

※事前にGoogle Cloud Messagingを許可する

プロジェクト(アプリ)のAPIキーの取得が必要

Page 36: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる2

アプリケーションに送信先デバイスを登録

GCMとの初期通信時に発行されるデバイストークン

(送信先のアドレスのようなもの)を登録

Page 37: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる2

アプリケーションに送信先デバイスを登録

GCMとの初期通信時に発行されるデバイストークン

(送信先のアドレスのようなもの)を登録

登録するとエンドポイントが生成されます。

Page 38: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる3

トピックの作成

(メッセージを複数デバイスに一括送信できるグループ)

Page 39: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる4

トピックにエンドポイントの追加( create subscription )

(一括送信するグループにデバイスを追加する)

Page 40: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる5

トピックにエンドポイントの追加( create subscription )

(一括送信するグループにデバイスを追加する)

Page 41: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる6

メッセージの送信

Page 42: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる6

メッセージの送信

APIでも可能です!

Page 43: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSを使ってみる7

App Topic

EndPoint

EndPoint

EndPoint

EndPoint

Subscription(PUSH)

Subscription(PUSH)

Subscription(mail)

Topic

Subscription(SMS)

Page 44: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSとは

SNSの便利な機能

メッセージの配信結果の確認(CloudWatch連携)

CloudWatch上で配信結果の確認が可能に

イベントの通知

登録したアプリケーションに、エンドポイントが追加、削除、更新された際にイベント通知。

Page 45: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

料金(2015年3月22日 現在)

Page 46: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

料金表

Page 47: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

アプリの紹介とデモ

Page 48: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

Amazon SNSでサーバー監視通知

Zabbixからのアラートをプッシュ通知にて受信。

ポップアップ表示、通知音、バイブレーションなどを用いてプッシュ通知をお知らせ。

プッシュ通知で受信したアラートを一覧表示。

プッシュ通知にはAmazon SNSを利用。

アラートの複数端末同期にAmazon Cognitoを利用。

※ 画像は開発中のサンプルです。

Page 49: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

デモ

Page 50: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

仕組み1

Amazon SNS

Amazon EC2

(Zabbix)

DeviceToken登録

Page 51: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

仕組み1

Amazon SNS

Amazon EC2

(Zabbix)

PublishMobile

Push

Page 52: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

仕組み2

Amazon SNS

Amazon EC2

(Zabbix)

Publish(対応開始)

Mobile

Push

#slack

Page 53: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

機能紹介

アラートの一覧表示機能

アラートの状況、ホスト名、トリガー名を表示。

プッシュ受信と共にリアルタイムで表示。

エスカレーション通知機能(少し実装)

※Zabbixのエスカレーション機能は使用しません。

エスカレーション発生時に、メンバーに通知、状況を共有。

Slackへの投稿(未実装)

エスカレーション発生状況を自動でSlackに投稿。

アラート状況をクラウドと複数端末間での同期(Cognito)

SNSでプッシュが受信できなかった時の対策として

定期的にクラウドの同期ストアと同期。

Page 54: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

仕組み3

Amazon EC2

(Zabbix)

Amazon Cognito

Sync

Page 55: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

参考サイト Cognito

http://techlife.cookpad.com/entry/2014/07/29/173726

http://dev.classmethod.jp/cloud/aws/

http://aws.amazon.com/jp/cognito/

http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-cognito-amazon-mobile-analytics

http://blog.takuros.net/entry/2015/01/20/070824

http://mobile.awsblog.com/

http://221616.com/gulliver/news/press/20140930-13992.html

http://media.amazonwebservices.com/jp/csd20140909/KEY-01-03.pdf

http://mobile.awsblog.com/post/Tx3LC2Y5I3MXF0K/Concrete-Software-uses-Amazon-Cognito-for-NHL-Hockey-Target-Smash

SNS

http://www.slideshare.net/AmazonWebServicesJapan/20130917-aws-meisterregenerateextrasnsmobilepushpublic?related=1

http://aws.amazon.com/jp/sns/

Page 56: Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた

ご清聴ありがとうございました