|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
开始使用 AWS Lambda
为一个或多个 AWS Lambda 函数设置监控:
-
被监控的 AWS Lambda 函数(使用 Open Telemetry 进行埋点)
-
Open Telemetry 收集器
-
SUSE Observability 或 SUSE Cloud Observability
Open Telemetry 收集器
|
对于生产环境,强烈建议安装收集器,因为它可以快速卸载数据,并且收集器可以处理额外的操作,如重试、批处理、加密或甚至敏感数据过滤。 |
安装 OTel(Open Telemetry)收集器,在本示例中,我们使用 Kubernetes 集群将其运行在接近 Lambda 函数的位置。也可以使用安装在虚拟机上的收集器进行类似的设置。这里使用的配置仅作为安全代理,快速卸载 Lambda 函数中的数据,并在受信任的网络基础设施内运行。
创建服务令牌
有两种方法可以创建服务令牌:
-
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 获取您的端点),并将您的 Kubernetes 集群名称插入 <your-cluster-name> 位置。在使用入口配置时,还请确保在标记位置插入您自己的域名和相应的 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 函数访问,方法是使入口公开可访问,或确保收集器 IP 与 Lambda 函数在同一 VPC 中。 建议使用源范围白名单来过滤来自不受信任和/或未知来源的数据(请参见 yaml 中的注释)。除了入口配置外,还可以通过以下方式将收集器暴露给 Lambda 函数:
-
一个通过限制源范围来限制访问的 LoadBalancer 服务,参见 "替代方案 1"。
-
一个用于收集器的 NodePort 服务,参见 "替代方案 2"。
为 Lambda 函数进行埋点
Open Telemetry 支持使用 Lambda 层在多种语言中为 Lambda 函数进行埋点。这些 Lambda 层的配置应使用上一步中收集器的地址来传输数据。要为 Node.js Lambda 进行埋点,请参阅我们的 详细说明。要为其他语言进行埋点,请使用与 Node.js 相同的配置,但使用其他 Open Telemetry Lambda 层 之一。