Junction のインスペクション機能で出力される統計情報をもとに、VPG を通過するパケットを可視化します。
インスペクション機能で出力されるパケットの統計情報を Amazon Kinesis Stream (Kinesis Stream) に送信します。さらに、Kinesis Stream をサブスクライブする AWS Lambda (Lambda) が Elastic Cloud にデータを送信します。Elastic Cloud の Elasticsearch、Kibana で統計情報を可視化します。
事前に以下を準備します。
- Elastic Cloud (Elasticsearch、Kibana)
- Kinesis Stream
- Lambda (サンプルスクリプト)
Kibana で使用する Dashboard および Visualization は、Elastic 社様からサンプルを提供いただきましたので、これを使用します。
ステップ 1: Elastic Cloud を設定する
Elastic Cloud とは、Elastic 社が提供する Elasticsearch と Kibana のマネージドサービスです。
アカウントをお持ちでなければ、こちら から Elastic Cloud のアカウントを作成します。(14 日間の無料トライアルが利用できます。)
Elastic Cloud に関する内容は、SORACOM サポートのサポート対象外です。
クラスタの作成
ユーザー登録後、ログインして、「Create Cluster」をクリックします。 クラスタ作成の画面に遷移するので、「Tokyo Region」を選択し、残りはデフォルトで作成してください。
完了すると、最初にクラスタを操作するための「elastic」ユーザーのパスワードが表示されます。後ほど使用しますので、メモしておいてください。
次に、メニューの「Configuration」から、Kibana を「enable」にしてください。
「Please wait until the current plan is finished before enabling Kibana.」 が表示される場合は、しばらくお待ちください。
アクセスの確認
- 次に、Elasticsearch と Kibana にそれぞれアクセスできることを確認をします。
- クラスタの「Overview」ページにある「Endpoints」の「HTTPS」のリンクをクリックします。(こちらが Elasticsearch の Endpoint となります。)
- 基本認証のダイアログが表示されるので、ユーザー「elastic」、さきほどメモしたパスワードを入力します。
- 以下のような JSON の内容がブラウザに表示されたら、接続成功です。
- 同様に、Kibana にもアクセスしてください。ユーザー「elastic」でアクセスできれば成功です。
インデックスの作成とドキュメントの登録
データを投入する前に、インデックスのテンプレートを登録します。
- こちら から、JSON ファイルをダウンロードしてください。(右クリックして、保存してください。)
- 以下のコマンドを実行して、インデックスを作成し、ドキュメントを登録します。リクエスト先の URL は、Elaticssearch の Endpoint となります。(クラスタの「Overview」ページから確認できる URL です。)
$ curl --user elastic:ES_PASSWORD -H "Content-Type:application/json" -X PUT "https://xxxxxxxxxxxxxxxxxx.ap-northeast-1.aws.found.io:9243/_template/soracom-vpg" -d@/Users/xxx/elastic/soracom-realtime-vpg-metrics-template.json
{"acknowledged":true} とレスポンスがあれば成功です。
以上で、Elastic Cloud の設定は完了です。
ステップ 2: Kinesis Stream を作成する
インスペクションからのデータ送信先となる Kinesis Stream を作成します。
- AWS コンソール から、Amazon Kinesis の管理画面にアクセスしてください。「Stream コンソールに移動」をクリックします。
- Kinesis ストリームを作成します。
- Kinesis ストリーム名は、ここでは「junction-inspection-escloud」として、Kinesis ストリームを作成してください。
- 以下のように表示されます。しばらく待つと完了します。
Kinesis ストリームの作成は以上です。
ステップ 3: AWS IAM を作成する
ここでは、IAM ユーザーとロールを作成します。 作成する IAM ユーザーは、Kinesis ストリームへのインプットを行います。このユーザーのクレデンシャルを SORACOM Junction の設定で使用します。
ロールは、このあと作成する Lambda ファンクションを実行するロールとして使用します。
ユーザーの作成
AWS コンソールの「IAM」からユーザーを選択して、「ユーザーを追加」をクリックします。
ユーザー名は「kinesis」とします。
「プログラムによるアクセス」を選択します。
ポリシーでは、「既存のポリシーを直接アタッチ」を選択して、「AmazonKinesisFullAccess」を選択します。
内容を確認して、「ユーザーの作成」をクリックします。
以下の画面がでると成功です。 のちほど、Junction のインスペクション機能で使用するため、アクセスキー ID とシークレットアクセスキーをメモしておいてください。
ロールの作成
AWS コンソールの「IAM」からロールを選択して、「新しいロールの作成」をクリックします。
ロールタイプでは、「AWS Lambda」を選択します。
ポリシーでは、「AWSLambdaKinesisExecutionRole」をアタッチします。
ロール名に、ここでは「 lambda_kinesis_execution
」として、ロールを作成します。
以上で、ユーザーとロールの作成は完了です。
ステップ 4: AWS Lambda を作成する
次に Lambda を作成します。
AWS コンソールから AWS Lambda の管理画面にアクセスします。 「Lambda 関数の作成」をクリックします。
「Blank Function」をクリックします。
トリガーの設定では、「Kinesis」を選択して、Kinesis ストリームでは、さきほど作成した「junction-inspection-escloud」を選択します。「トリガーの有効化」にチェックをつけてください。
Lambda 関数は、こちら からダウンロードしたスクリプトをコピー&ペーストしてください。 ランタイムでは、「Python 3.6」を選択します。
次に、環境変数を入力します。 以下のように、5 つの環境変数を入力してください。
環境変数名 | 値 |
---|---|
ES_BASE_URL | Elasticsearch の Endpoint になります。Elactic Cloud のクラスタのトップページにある「Endpoints」の「HTTPS」のリンクです。URL の最後の / は削除してください。 |
ES_USERNAME | Elastic Cloud のユーザー ID です。例: elastic |
ES_PASSWORD | ユーザー「elastic」のパスワードです。 |
ES_INDEX | インデックス名です。ここでは、「soracom」としてください。(Lambda ファンクションが soracom-YYYY.MM.DD としてデータを送信します。) |
ES_TYPE | 「stats」とします。 |
ロールでは、さきほど作成した「 lamdba_kinesis_execution
」を選択します。
タイムアウトを 1 分にします。
設定内容を確認して「関数の作成」をクリックします。
以下の画面が表示されれば作成完了です。
ステップ 5: インスペクションを設定する
次に、Junction のインスペクション機能を設定します。 以下のような流れとなります。
- VPG を作成 します。
- IoT SIM が利用する VPG を切り替え ます。
- クレデンシャルを登録 します。
- インスペクション機能を設定 します。
VPG を作成する
インスペクション機能を利用するには、VPG Type-F を作成します。VPG を作成する手順について詳しくは、VPG を作成する を参照してください。
なお、「VPG を追加」画面では、以下の項目の設定に注意してください。それ以外の項目については、このページの説明には影響がありません。適宜設定を行ってください。
項目 | 説明 |
---|---|
VPG の名前 (任意) を入力します。例: Inspection-Test01 | |
「Type-F」を選択します。 |
既存の VPG Type-C/D でも、SORACOM Junction のインスペクション機能を利用できます。
IoT SIM が利用する VPG を切り替える
IoT SIM が、VPG を作成する で作成した VPG を利用するように設定し、セッションを再確立します。詳しくは、IoT SIM が利用する Virtual Private Gateway (VPG) を切り替える を参照してください。
クレデンシャルを登録する
次に、統計情報の送信先となるクラウドサービスへのアクセスに必要な認証情報を登録します。ここでは、Kinesis Stream のクレデンシャルを登録します。
ソラコムのユーザーコンソールから「セキュリティ」->「認証情報ストア」を選択します。
以下のように、先ほど、AWS の IAM から作成したユーザーのクレデンシャルを登録します。 アクセスキー ID とシークレットアクセスキー登録します。 ここでは、「kinesis」という認証情報 ID で登録します。
インスペクション機能を設定する
VPG を作成する で作成した VPG の VPG 設定画面で、 をクリックします。
VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。
の各項目を設定します。
項目 説明 スイッチ ON にします。インスペクション機能を無効にする場合は、OFF にします。 VPG を通過するパケットの転送先となるクラウドサービスを選択します。ここでは、「Amazon Kinesis Stream」を選択します。 https://kinesis.{region}.amazonaws.com/{delivery_stream_name}
のフォーマットで転送先のクラウドサービスの URL を入力します。{delivery_stream_name}
は、ステップ 2: Kinesis Stream を作成する で作成した Kinesis Stream の名前です。例:https://kinesis.ap-northeast-1.amazonaws.com/junction-inspection-escloud
クレデンシャルを登録する で登録した認証情報を選択します。例: kinesis
をクリックします。
SORACOM API の場合
- SORACOM API を利用するには、API キーと API トークンが必要です。詳しくは、API キーと API トークンの取り扱いについて を参照してください。
{vpg_id}
は、VirtualPrivateGateway:listVirtualPrivateGateways API
で取得できます。
VirtualPrivateGateway:setInspectionConfiguration API
を使用します。
$ curl -v -X POST https://api.soracom.io/v1/virtual_private_gateways/{vpg_id}/junction/set_inspection \
-H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \
-H "X-Soracom-Token: $X_SORACOM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"report": {
"credentialsId": "{認証情報のID}}",
"enabled": true,
"destination": {
"service": "(aws-iot|kinesis|firehose|eventhubs|pubsub|パートナーアダプタ名)",
"provider": "(aws|azure|google|パートナーアダプタ名)",
"resourceUrl": "{転送先URL}"
}
}
}'
ステップ 6: VPG を通過するパケットの統計情報を可視化する
では、作成した VPG を適用した IoT SIM グループに含まれる SIM で通信します。
インデックスパターンの作成
- インデックスパターンを作成します。
- Kibana にログインして、「Management」->「Index Pattern」をクリックします。
- 以下のように、インデックスパターンに「
soracom-*
」を指定します。
インデックスパターンはデータの投入後に作成します。先にデータを投入してください。
ダッシュボードのインポート
Kibana のダッシュボードをインポートします。
- こちら から、設定ファイルをダウンロードしてください。
- Kibana の管理画面から、「Management」->「Saved Objects」->「import」をクリックして、ダウンロードしたファイルをインポートします。
統計情報を可視化する
Elastic Cloud の Kibana にアクセスします。「Dashboard」->「Soracom」をクリックします。
以下のように、通信先のプロトコルやアプリケーション、データ通信量やパケット数などを確認できます。インスペクション機能によるパケットの統計情報を可視化しています。
送信される統計情報のサンプルは リファレンス: インスペクションで送られるパケットの統計情報 を参照してください。
「VPG を通過するパケットの統計情報を可視化する」は以上となります。