|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
AWS Lambdaの始め方
1つ以上のAWS Lambda関数の監視を行うには:
-
監視対象のAWS Lambda関数(Open Telemetryを使用して計測済み)
-
Open Telemetryコレクター
-
SUSE ObservabilityまたはSUSE Cloud Observability
Open Telemetryコレクター
|
本番環境のセットアップでは、コレクターをインストールすることを強く推奨します。これにより、サービスがデータを迅速にオフロードでき、コレクターが再試行、バッチ処理、暗号化、さらには機密データのフィルタリングなどの追加処理を行うことができます。 |
OTel(Open Telemetry)コレクターをインストールします。この例では、Kubernetesクラスターを使用してLambda関数の近くで実行します。仮想マシンにインストールされたコレクターを使用して、同様のセットアップを行うこともできます。ここで使用される構成は、Lambda関数からデータを迅速にオフロードするための安全なプロキシとして機能し、信頼されたネットワークインフラ内で実行されます。
サービストークンを作成する
サービストークンを作成するには、2つの方法があります:
-
SUSE Observability UI - 画面の左上をクリックしてメインメニューを開き、
StackPacks> `Open Telemetry`に移動します。 まだ行っていない場合は、`INSTALL`ボタンをクリックしてください。`CREATE NEW SERVICE TOKEN`ボタンをクリックし、値をクリップボードにコピーします。 -
SUSE Observability CLI - サービストークンの管理を参照してください。
サービストークンの値は、以下の指示で`<SERVICE_TOKEN>`と記載されている場所で使用する必要があります。
サービストークンのためのネームスペースとシークレットを作成する
`open-telemetry`ネームスペースにインストールし、サービストークンを使用します:
kubectl create namespace open-telemetry
kubectl create secret generic open-telemetry-collector \
--namespace open-telemetry \
--from-literal=API_KEY='<SERVICE_TOKEN>'
コレクターを設定してインストールします。
Open Telemetryプロジェクトが提供するHelmチャートを使用してコレクターをインストールします。Open TelemetryのHelmチャートリポジトリが設定されていることを確認してください:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
Helmチャート用の`otel-collector.yaml`値ファイルを作成します。SUSE Observabilityでの使用に適した出発点はここです。<otlp-suse-observability-endpoint:port>`をOTLPエンドポイントに置き換え(エンドポイントについてはOTLP APIを参照)、<your-cluster-name>`の代わりにKubernetesクラスターの名前を挿入してください。Ingress構成を使用する場合は、マークされた場所に自分のドメイン名と対応するTLS証明書のシークレットを挿入してください。
mode: deployment
presets:
kubernetesAttributes:
enabled: true
# You can also configure the preset to add all the associated pod's labels and annotations to you telemetry.
# The label/annotation name will become the resource attribute's key.
extractAllPodLabels: true
extraEnvsFrom:
- secretRef:
name: open-telemetry-collector
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
config:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
extensions:
# Use the API key from the env for authentication
bearertokenauth:
scheme: SUSEObservability
token: "${env:API_KEY}"
exporters:
otlp:
auth:
authenticator: bearertokenauth
# Put in your own otlp endpoint, for example otlp-suse-observability.my.company.com:443
endpoint: <otlp-suse-observability-endpoint:port>
service:
extensions: [health_check, bearertokenauth]
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [otlp]
logs:
receivers: [otlp]
processors: [batch]
exporters: [otlp]
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: ingress-traefik-external
traefik.ingress.kubernetes.io/ingress.class: ingress-traefik-external
traefik.ingress.kubernetes.io/backend-protocol: GRPC
# "12.34.56.78/32" IP address of NatGateway in the VPC where the otel data is originating from
# traefik.ingress.kubernetes.io/whitelist-source-range: "12.34.56.78/32"
hosts:
- host: "otlp-collector-proxy.<your-domain>"
paths:
- path: /
pathType: ImplementationSpecific
port: 4317
tls:
- secretName: <secret-for-tls-certificate>
hosts:
- "otlp-collector-proxy.<your-domain>"
# Instead of ingress:
# Alternative 1, load balancer service
#service:
# type: LoadBalancer
# loadBalancerSourceRanges: 12.34.56.78/32 # The IP address of NatGateway in the VPC for the lambda functions
# Alternative 2, node port service
#service:
# type: NodePort
#ports:
# otlp:
# nodePort: 30317
設定ファイルを使用してコレクターをインストールします。
helm upgrade --install opentelemetry-collector open-telemetry/opentelemetry-collector \
--values otel-collector.yaml \
--namespace open-telemetry
プロキシコレクターがLambda関数からアクセス可能であることを確認してください。Ingressを公開するか、コレクターのIPがLambda関数と同じVPC内にあるようにしてください。 信頼できないおよび/または不明なソースからのデータをフィルタリングするために、ソース範囲ホワイトリストを使用することをお勧めします(yamlのコメントを参照)。Ingressの設定に加えて、コレクターをLambda関数に公開することも可能です。
-
ソース範囲を制限するLoadBalancerサービスを使用します。「Alternative 1」を参照してください。
-
コレクター用のNodePortサービスを使用します。「Alternative 2」を参照してください。
Lambda関数を計測してください。
Open Telemetryは、Lambdaレイヤーを使用して複数の言語でLambda関数を計測することをサポートしています。これらのLambdaレイヤーの設定は、データ送信先として前のステップのコレクターのアドレスを使用する必要があります。Node.js Lambdaを計測するには、こちらの詳細な手順に従ってください。他の言語を計測する場合は、Node.jsと同じ設定を適用しますが、他のhttps://opentelemetry.io/docs/platforms/faas/lambda-auto-instrument/[Open Telemetry Lambdaレイヤー]のいずれかを利用してください。
結果を表示してください。
SUSE Observabilityに移動し、Open Telemetry Stackpackがインストールされていることを確認してください(メインメニュー → Stackpacks)。
しばらくしてLambda関数にトラフィックが発生すると、Open Telemetry → サービスおよびサービスインスタンスの概要で、サービス名の下に関数を見つけることができるはずです。トレースは、トレースエクスプローラーおよびトレースの視点でサービスおよびサービスインスタンスのコンポーネントに表示されます。スパンメトリクスおよび言語特有のメトリクス(利用可能な場合)は、コンポーネントのメトリクスの視点で表示されます。