セットアップ

手動計装されていないLambdaアプリケーション 手動計装されていないLambdaアプリケーション

前提条件

Observability ワークショップインスタンス

Observability ワークショップは、多くの場合、Splunk が提供する事前設定済みの Ubuntu EC2 インスタンス上で実施されます。

ワークショップのインストラクターから、割り当てられたワークショップインスタンスの認証情報が提供されます。

インスタンスには以下の環境変数が既に設定されているはずです:

  • ACCESS_TOKEN
  • REALM
    • これらはワークショップ用の Splunk Observability Cloud の Access TokenRealm です。
    • これらは OpenTelemetry Collector によって、データを正しい Splunk Observability Cloud 組織に転送するために使用されます。

また、Multipass を使用してローカルの Observability ワークショップインスタンスをデプロイすることもできます。

AWS Command Line Interface (awscli)

AWS Command Line Interface、またはawscliは、AWS リソースと対話するために使用される API です。このワークショップでは、特定のスクリプトがデプロイするリソースと対話するために使用されます。

Splunk が提供するワークショップインスタンスには、既に awscli がインストールされているはずです。

  • インスタンスに aws コマンドがインストールされているか、次のコマンドで確認します:

    which aws
    • 予想される出力は /usr/local/bin/aws です
  • インスタンスに aws コマンドがインストールされていない場合は、次のコマンドを実行します:

    sudo apt install awscli

Terraform

Terraform は、リソースを構成ファイルで定義することで、デプロイ、管理、破棄するための Infrastructure as Code(IaC)プラットフォームです。Terraform は HCL を使用してこれらのリソースを定義し、さまざまなプラットフォームやテクノロジのための複数のプロバイダーをサポートしています。

このワークショップでは、コマンドラインで Terraform を使用して、以下のリソースをデプロイします:

  1. AWS API Gateway
  2. Lambda 関数
  3. Kinesis Stream
  4. CloudWatch ロググループ
  5. S3 バケット
    • およびその他のサポートリソース

Splunk が提供するワークショップインスタンスには、既に terraform がインストールされているはずです。

  • インスタンスに terraform コマンドがインストールされているか確認します:

    which terraform
    • 予想される出力は /usr/local/bin/terraform です
  • インスタンスに terraform コマンドがインストールされていない場合は、以下の Terraform が推奨するインストールコマンドを実行してください:

    wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    
    echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    
    sudo apt update && sudo apt install terraform

ワークショップディレクトリ (o11y-lambda-workshop)

ワークショップディレクトリ o11y-lambda-workshop は、今日使用する例の Lambda ベースのアプリケーションの自動計装と手動計装の両方を完了するための、すべての設定ファイルとスクリプトを含むリポジトリです。

  • ホームディレクトリにワークショップディレクトリがあることを確認します:

    cd && ls
    • 予想される出力には o11y-lambda-workshop が含まれるはずです
  • o11y-lambda-workshop ディレクトリがホームディレクトリにない場合は、次のコマンドでクローンします:

git clone https://github.com/gkono-splunk/o11y-lambda-workshop.git

AWS & Terraform 変数

AWS

AWS の CLI では、サービスによってデプロイされたリソースにアクセスし管理するための認証情報が必要です。このワークショップでは、Terraform と Python スクリプトの両方がタスクを実行するためにこれらの変数を必要とします。

  • このワークショップのために awscliaccess key IDsecret access key および region で構成します:

    aws configure
    • このコマンドは以下のようなプロンプトを表示するはずです:

      AWS Access Key ID [None]: XXXXXXXXXXXXXXXX
      AWS Secret Acces Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      Default region name [None]: us-east-1
      Default outoput format [None]:
  • インスタンスで awscli が設定されていない場合は、次のコマンドを実行し、インストラクターから提供される値を入力してください。

    aws configure

Terraform

Terraform では、機密情報や動的データを.tf 設定ファイルにハードコーディングさせない、またはそれらの値をリソース定義全体で再利用できるようにするため、変数の受け渡しをサポートしています。

このワークショップでは、OpenTelemetry Lambda layer の適切な値で Lambda 関数をデプロイするため、Splunk Observability Cloud の取り込み値のため、そして環境とリソースを独自で即座に認識できるようにするための変数を Terraform で必要とします。

Terraform 変数(variable)は以下の方法で定義されます:

  • 変数を main.tf ファイルまたは variables.tf に定義する
  • 以下のいずれかの方法で変数の値を設定する:
    • ホストレベルで環境変数を設定し、その定義と同じ変数名を使用して、接頭辞として TF_VAR をつける
    • terraform.tfvars ファイルに変数の値を設定する
    • terraform apply 実行時に引数として値を渡す

このワークショップでは、variables.tfterraform.tfvars ファイルの組み合わせを使用して変数を設定します。

  • vi または nano のいずれかを使用して、auto または manual ディレクトリにある terraform.tfvars ファイルを開きます

    vi ~/o11y-lambda-workshop/auto/terraform.tfvars
  • 変数に値を設定します。CHANGEME プレースホルダーをインストラクターから提供された値に置き換えてください。

    o11y_access_token = "CHANGEME"
    o11y_realm        = "CHANGEME"
    otel_lambda_layer = ["CHANGEME"]
    prefix            = "CHANGEME"
    • 引用符(")や括弧 ( [ ] ) はそのまま残し、プレースホルダーCHANGEMEのみを変更してください。
    • prefix は、他の参加者のリソースと区別するため、任意の文字列で設定する固有の識別子です。氏名やメールアドレスのエイリアスを使用することをお勧めします。
    • prefix には小文字のみを使用してください。S3 のような特定の AWS リソースでは、大文字を使用するとエラーが発生します。
  • ファイルを保存してエディタを終了します。

  • 最後に、編集した terraform.tfvars ファイルを他のディレクトリにコピーします。

    cp ~/o11y-lambda-workshop/auto/terraform.tfvars ~/o11y-lambda-workshop/manual
    • これは、自動計装と手動計装の両方の部分で同じ値を使用するためです

ファイル権限

他のすべてのファイルはそのままでよいですが、automanualの両方にあるsend_message.pyスクリプトは、ワークショップの一部として実行する必要があります。そのため、期待通りに実行するには、適切な権限が必要です。以下の手順に従って設定してください。

  • まず、o11y-lambda-workshopディレクトリにいることを確認します:

    cd ~/o11y-lambda-workshop
  • 次に、以下のコマンドを実行してsend_message.pyスクリプトに実行権限を設定します:

    sudo chmod 755 auto/send_message.py manual/send_message.py

これで前提条件が整いましたので、ワークショップを始めることができます!