Soracom

Users

ドキュメント
Home ドキュメント SORACOM Junction Getting Started

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

Junction のインスペクション機能で出力される統計情報をもとに、VPG を通過するパケットを可視化します。

インスペクション機能で出力されるパケットの統計情報を Amazon Kinesis Stream (Kinesis Stream) に送信します。さらに、Kinesis Stream をサブスクライブする AWS Lambda (Lambda) が Elastic Cloud にデータを送信します。Elastic Cloud の Elasticsearch、Kibana で統計情報を可視化します。

概要 概要

事前に以下を準備します。

Kibana で使用する Dashboard および Visualization は、Elastic 社様からサンプルを提供いただきましたので、これを使用します。

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

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

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

Elastic Cloud に関する内容は、SORACOM サポートのサポート対象外です。

クラスタの作成

ユーザー登録後、ログインして、「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 にそれぞれアクセスできることを確認をします。

  1. クラスタの「Overview」ページにある「Endpoints」の「HTTPS」のリンクをクリックします。

    この URL が Elasticsearch の Endpoint です。

    基本認証の画面が表示されます。

  2. ユーザー「elastic」、さきほどメモしたパスワードを入力します。

    以下のような JSON の内容がブラウザに表示されたら、接続成功です。

    Elastic Cloud Elastic Cloud

  3. 同様に、Kibana にもユーザー「elastic」でアクセスします。

    Elastic Cloud Elastic Cloud

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

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

  1. JSON ファイル をダウンロードします。

    上のリンクを右クリックして、保存してください。

  2. 以下のコマンドを実行して、インデックスを作成し、ドキュメントを登録します。

    https://xxxxxxxxxxxxxxxxxx.ap-northeast-1.aws.found.io:9243/_template/soracom-vpg は、Elaticssearch の Endpoint を指定します。

    /Users/xxx/elastic/soracom-realtime-vpg-metrics-template.json は手順 1 でダウンロードした JSON ファイルのパスを指定します。

    $ 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 ファンクションを実行するロールとして使用します。

ユーザーの作成

IAM コンソール にアクセスして、[ユーザー][ユーザーを追加] の順にクリックします。

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

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

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

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

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

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

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

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

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

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

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

ロールの作成

IAM コンソール にアクセスして、[ロール][新しいロールの作成] の順にクリックします。

Role の作成 Role の作成

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

Role の作成 Role の作成

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

Role の作成 Role の作成

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

Role の作成 Role の作成

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

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

次に Lambda を作成します。

概要 概要

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 を作成する手順について詳しくは、VPG を作成する を参照してください。

なお、「VPG を追加」画面では、以下の項目の設定に注意してください。それ以外の項目については、このページの説明には影響がありません。適宜設定を行ってください。

項目説明
[名前]VPG の名前 (任意) を入力します。例: Inspection-Test01
[VPG タイプを選択してください]「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 で登録します。

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

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

  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 を適用した SIM グループに含まれる IoT SIM で通信します。

インデックスパターンの作成

  • インデックスパターンを作成します。
  • Kibana にログインして、「Management」->「Index Pattern」をクリックします。
  • 以下のように、インデックスパターンに「 soracom-* 」を指定します。

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

インデックスパターンはデータの投入後に作成します。先にデータを投入してください。

Kibana のダッシュボードのインポート

Kibana のダッシュボードをインポートします。

  1. JSON ファイル をダウンロードします。

    上のリンクを右クリックして、保存してください。

  2. Kibana の管理画面で [Management][Saved Objects][import] の順にクリックして、手順 1 でダウンロードしたファイルをインポートします。

    Elastic Cloud Elastic Cloud

統計情報を可視化する

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

Kibana dashboard Kibana dashboard

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

Kibana dashboard Kibana dashboard

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