|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Introdução ao AWS Lambda
Configurando o monitoramento para uma ou mais funções AWS Lambda:
-
A(s) função(ões) AWS Lambda monitorada(s) (instrumentada(s) usando Open Telemetry)
-
O coletor Open Telemetry
-
SUSE Observability ou SUSE Cloud Observability
O coletor Open Telemetry
|
Para uma configuração de produção, é fortemente recomendado instalar o coletor, pois ele permite que seu serviço descarregue dados rapidamente e o coletor pode cuidar de manuseios adicionais como tentativas, agrupamento, criptografia ou até mesmo filtragem de dados sensíveis. |
Instale o coletor OTel (Open Telemetry), neste exemplo usamos um cluster Kubernetes para executá-lo próximo às funções Lambda. Uma configuração semelhante pode ser feita usando um coletor instalado em uma máquina virtual. A configuração utilizada aqui atua apenas como um proxy seguro para descarregar dados rapidamente das funções Lambda e roda dentro de uma infraestrutura de rede confiável.
Criar um Token de Serviço
Há duas maneiras de criar um token de serviço:
-
SUSE Observability UI - abra o menu principal clicando no canto superior esquerdo da tela e vá para
StackPacks>Open Telemetry. Se você ainda não fez isso, clique no botãoINSTALL. Clique no botãoCREATE NEW SERVICE TOKENe copie o valor para a sua área de transferência. -
SUSE Observability CLI - veja Gerenciar tokens de serviço
O valor do token de serviço deve ser usado onde as instruções abaixo mencionam <SERVICE_TOKEN>.
Crie o namespace e um segredo para o token de serviço
Instale no namespace open-telemetry e use o token de serviço:
kubectl create namespace open-telemetry
kubectl create secret generic open-telemetry-collector \
--namespace open-telemetry \
--from-literal=API_KEY='<SERVICE_TOKEN>'
Configure e instale o coletor
Instalamos o coletor com um gráfico Helm fornecido pelo projeto Open Telemetry. Certifique-se de que você tenha o repositório de gráficos Helm do Open Telemetry configurado:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
Crie um arquivo de valores otel-collector.yaml para o gráfico Helm. Aqui está um bom ponto de partida para uso com SUSE Observability, substitua <otlp-suse-observability-endpoint:port> pelo seu endpoint OTLP (veja API OTLP para seu endpoint) e insira o nome do seu cluster Kubernetes em vez de <your-cluster-name>. Ao usar a configuração de ingress, também certifique-se de inserir seu próprio nome de domínio e o segredo do certificado TLS correspondente nos locais marcados.
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
Agora instale o coletor, usando o arquivo de configuração:
helm upgrade --install opentelemetry-collector open-telemetry/opentelemetry-collector \
--values otel-collector.yaml \
--namespace open-telemetry
Certifique-se de que o coletor proxy seja acessível pelas funções Lambda, tendo o ingress publicamente acessível ou tendo o IP do coletor na mesma VPC que as funções Lambda. É recomendável usar uma lista de permissões de intervalo de origem para filtrar dados de fontes não confiáveis e/ou desconhecidas (veja o comentário no yaml). Ao lado da configuração de ingress, também é possível expor o coletor para as funções Lambda via:
-
um serviço LoadBalancer que restringe o acesso limitando os intervalos de origem, veja "Alternativa 1".
-
um serviço NodePort para o coletor, veja "Alternativa 2".
O coletor oferece muito mais opções de configuração de receptores, processadores e exportadores; para mais detalhes, veja nossa página do coletor. Para uso em produção, frequentemente grandes quantidades de spans são geradas e você vai querer começar a configurar amostragem.
Instrumentar uma função Lambda
Open Telemetry suporta a instrumentação de funções Lambda em várias linguagens usando camadas Lambda. A configuração dessas camadas Lambda deve usar o endereço do coletor da etapa anterior para enviar os dados. Para instrumentar uma função Lambda Node.js, siga nossas instruções detalhadas aqui. Para instrumentar outras linguagens, aplique a mesma configuração que para Node.js, mas use uma das outras camadas Lambda do Open Telemetry.
Veja os resultados
Vá para o SUSE Observability e certifique-se de que o Stackpack Open Telemetry está instalado (via o menu principal -> Stackpacks).
Após um curto período e se suas funções Lambda estiverem recebendo algum tráfego, você deve conseguir encontrá-las sob seus nomes de serviço nas visões de Open Telemetry -> serviços e instâncias de serviço. Os rastreamentos aparecerão no explorador de rastreamentos e na perspectiva de rastreamentos para os componentes de serviço e instância de serviço. Métricas de span e métricas específicas de linguagem (se disponíveis) estarão disponíveis na perspectiva de métricas para os componentes.
Próximas etapas
Você pode adicionar novos gráficos aos componentes, por exemplo, o serviço ou a instância de serviço, para seu aplicativo, seguindo nosso guia. Também é possível criar novos monitores usando as métricas e configurar notificações para ser notificado quando seu aplicativo não estiver disponível ou tiver problemas de desempenho.