Soracom

Users

ドキュメント

インスペクション機能を使用して VPG を通過するパケットの統計情報を可視化する

当ガイドでは、SORACOM Junction (以下、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

なお、Lambda ファンクションは、サンプルのスクリプトを提供いたします。Kibana で使用する Dashboard および Visualization は、Elastic 社様からサンプルを提供いただきましたので、これを使用します。

ステップ 1: Elastic Cloud を設定する

Elastic Cloud とは、Elastic 社が提供する Elasticsearch と Kibana のマネージドサービスです。

アカウントをお持ちでなければ、こちら から Elastic Cloud のアカウントを作成します。(14 日間の無料トライアルが利用できます。)

ElasticCloud に関するお問い合わせは当社では承っておりません。

クラスタの作成

ユーザー登録後、ログインして、「Create Cluster」をクリックします。 クラスタ作成の画面に遷移するので、「Tokyo Region」を選択し、残りはデフォルトで作成してください。

Elastic Cloud Elastic Cloud

完了すると、最初にクラスタを操作するための「elastic」ユーザーのパスワードが表示されます。後ほど使用しますので、メモしておいてください。

次に、メニューの「Configuration」から、Kibana を「enable」にしてください。

「Please wait until the current plan is finished before enabling Kibana.」 が表示される場合は、しばらくお待ちください。

Elastic Cloud Elastic Cloud

アクセスの確認

  • 次に、Elasticsearch と Kibana にそれぞれアクセスできることを確認をします。
  • クラスタの「Overview」ページにある「Endpoints」の「HTTPS」のリンクをクリックします。(こちらが Elasticsearch の Endpoint となります。)
  • 基本認証のダイアログが表示されるので、ユーザー「elastic」、さきほどメモしたパスワードを入力します。
  • 以下のような JSON の内容がブラウザに表示されたら、接続成功です。

Elastic Cloud Elastic Cloud

  • 同様に、Kibana にもアクセスしてください。ユーザー「elastic」でアクセスできれば成功です。

Elastic Cloud Elastic Cloud

インデックスの作成とドキュメントの登録

データを投入する前に、インデックスのテンプレートを登録します。

  • こちら から、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 Stream の作成 Kinesis Stream の作成

  • Kinesis ストリームを作成します。

Kinesis Stream の作成 Kinesis Stream の作成

  • Kinesis ストリーム名は、ここでは「junction-inspection-escloud」として、Kinesis ストリームを作成してください。

Kinesis Stream の作成 Kinesis Stream の作成

  • 以下のように表示されます。しばらく待つと完了します。

Kinesis Stream の作成 Kinesis Stream の作成

Kinesis ストリームの作成は以上です。

ステップ 3: AWS IAM を作成する

ここでは、IAM ユーザーとロールを作成します。 作成する IAM ユーザーは、Kinesis ストリームへのインプットを行います。このユーザーのクレデンシャルを SORACOM Junction の設定で使用します。

ロールは、このあと作成する Lambda ファンクションを実行するロールとして使用します。

ユーザーの作成

AWS コンソールの「IAM」からユーザーを選択して、「ユーザーを追加」をクリックします。

ユーザーの作成 ユーザーの作成

ユーザー名は「kinesis」とします。

ユーザーの作成 ユーザーの作成

「プログラムによるアクセス」を選択します。

ユーザーの作成 ユーザーの作成

ポリシーでは、「既存のポリシーを直接アタッチ」を選択して、「AmazonKinesisFullAccess」を選択します。

ユーザーの作成 ユーザーの作成

内容を確認して、「ユーザーの作成」をクリックします。

ユーザーの作成 ユーザーの作成

以下の画面がでると成功です。 のちほど、Junction のインスペクション機能で使用するため、アクセスキー ID とシークレットアクセスキーをメモしておいてください。

ユーザーの作成 ユーザーの作成

ロールの作成

AWS コンソールの「IAM」からロールを選択して、「新しいロールの作成」をクリックします。

Role の作成 Role の作成

ロールタイプでは、「AWS Lambda」を選択します。

Role の作成 Role の作成

ポリシーでは、「AWSLambdaKinesisExecutionRole」をアタッチします。

Role の作成 Role の作成

ロール名に、ここでは「 lambda_kinesis_execution 」として、ロールを作成します。

Role の作成 Role の作成

以上で、ユーザーとロールの作成は完了です。

ステップ 4: AWS Lambda を作成する

次に Lambda を作成します。

概要 概要

AWS コンソールから AWS Lambda の管理画面にアクセスします。 「Lambda 関数の作成」をクリックします。

Lambda の作成 Lambda の作成

「Blank Function」をクリックします。

Lambda の作成 Lambda の作成

トリガーの設定では、「Kinesis」を選択して、Kinesis ストリームでは、さきほど作成した「junction-inspection-escloud」を選択します。「トリガーの有効化」にチェックをつけてください。

Lambda の作成 Lambda の作成

Lambda 関数は、こちら からダウンロードしたスクリプトをコピー&ペーストしてください。 ランタイムでは、「Python 3.6」を選択します。

Lambda の作成 Lambda の作成

次に、環境変数を入力します。 以下のように、5 つの環境変数を入力してください。

環境変数名
ES_BASE_URLElasticsearch の Endpoint になります。Elactic Cloud のクラスタのトップページにある「Endpoints」の「HTTPS」のリンクです。URL の最後の / は削除してください。
ES_USERNAMEElastic Cloud のユーザー ID です。当ガイドでは「elastic」となります。
ES_PASSWORDユーザー「elastic」のパスワードです。
ES_INDEXインデックス名です。ここでは、「soracom」としてください。(Lambda ファンクションが soracom-YYYY.MM.DD としてデータを送信します。)
ES_TYPE「stats」とします。

ロールでは、さきほど作成した「 lamdba_kinesis_execution 」を選択します。

Lambda の作成 Lambda の作成

タイムアウトを 1 分にします。

Lambda の作成 Lambda の作成

設定内容を確認して「関数の作成」をクリックします。

Lambda の作成 Lambda の作成

以下の画面が表示されれば作成完了です。

Lambda の作成 Lambda の作成

ステップ 5: インスペクションを設定する

次に、Junction のインスペクション機能を設定します。 以下のような流れとなります。

  1. VPG を作成 します。
  2. IoT SIM が利用する VPG を切り替え ます。
  3. クレデンシャルを登録 します。
  4. インスペクション機能を設定 します。

VPG を作成する

VPG Type-F (閉域網接続可能) を作成 します。

既存の VPG Type-C/D でも、SORACOM Junction のインスペクション機能を利用できます。

IoT SIM が利用する VPG を切り替える

IoT SIM が、VPG を作成する で作成した VPG を利用するように設定し、セッションを再確立します。詳しくは、IoT SIM が利用する VPG を切り替える を参照してください。

クレデンシャルを登録する

次に、統計情報の送信先となるクラウドサービスへのアクセスに必要な認証情報を登録します。ここでは、Kinesis Stream のクレデンシャルを登録します。

ソラコムのユーザーコンソールから「セキュリティ」->「認証情報ストア」を選択します。

クレデンシャルの作成 クレデンシャルの作成

以下のように、先ほど、AWS の IAM から作成したユーザーのクレデンシャルを登録します。 アクセスキー ID とシークレットアクセスキー登録します。 ここでは、「kinesis」という認証情報 ID で登録します。

クレデンシャルの作成 クレデンシャルの作成

インスペクション機能を設定する

  1. VPG を作成する で作成した VPG の VPG 設定画面で、[JUNCTION 設定] をクリックします。

    VPG 設定画面を表示する操作について詳しくは、VPG の設定を変更する を参照してください。

  2. [SORACOM Junction: インスペクション設定] の各項目を設定します。

    項目説明
    スイッチON にします。インスペクション機能を無効にする場合は、OFF にします。
    [転送先サービス]VPG を通過するパケットの転送先となるクラウドサービスを選択します。ここでは、「Amazon Kinesis Stream」を選択します。
    [転送先 URL]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

    インスペクションの設定 インスペクションの設定

  3. [保存] をクリックします。

SORACOM 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 Elastic Cloud

統計情報を可視化する

Elastic Cloud の Kibana にアクセスします。「Dashboard」->「Soracom」をクリックします。

Kibana dashboard Kibana dashboard

以下のように、通信先のプロトコルやアプリケーション、データ通信量やパケット数などを確認できます。インスペクション機能によるパケットの統計情報を可視化しています。

Kibana dashboard Kibana dashboard

送信される統計情報のサンプルは リファレンス: インスペクションで送られるパケットの統計情報 を参照してください。

「VPG を通過するパケットの統計情報を可視化する」は以上となります。