Ao executar funções Java no Function Compute, você precisa de visibilidade sobre o desempenho da aplicação, rastreamentos distribuídos e a integridade da JVM. O Application Real-Time Monitoring Service (ARMS) integra-se ao Function Compute como uma extensão interna e oferece:
Observabilidade no nível da instância
Rastreamento distribuído
Métricas da Java Virtual Machine (JVM)
Perfilamento no nível de código
Insights de segurança da aplicação
As etapas a seguir mostram como adicionar o agente ARMS a uma função com runtime personalizado.
O agente ARMS consome aproximadamente 300 MB de memória durante a execução. Certifique-se de que sua função tenha pelo menos 512 MB de memória alocada. A janela de congelamento pós-invocação de 10 segundos, necessária para o relatório de dados, é cobrada à taxa padrão de invocação. Para obter detalhes, consulte Faturamento do Function Compute.
Runtimes compatíveis e requisitos
|
Requisito |
Detalhes |
|
Runtime |
Runtime personalizado com Java 8, Java 11 ou Java 17. O runtime integrado Java 8 também é compatível. |
|
Versão do JDK |
Deve ser compatível com o ARMS Application Monitoring. Consulte Componentes e frameworks Java compatíveis com o ARMS. |
|
Memória heap |
Superior a 256 MB |
|
Memória da função |
Mínimo de 512 MB (o ARMS consome ~300 MB) |
|
Região |
O ARMS e o Function Compute devem estar na mesma região. Não há suporte para monitoramento entre regiões. |
Para criar uma função com runtime personalizado, consulte Criar uma função.
Etapa 1: Obter uma chave de licença
Chame a operação de API DescribeTraceLicenseKey no OpenAPI Explorer para recuperar sua chave de licença do ARMS. Salve essa chave para usá-la na Etapa 3.
Etapa 2: Adicionar a camada do agente ARMS
O Function Compute fornece camadas comuns oficiais que incluem o agente ARMS para cada versão compatível do Java.
|
Versão do Java |
Runtime compatível |
ARN da camada comum |
|
Java 8 / Java 11 |
Runtimes personalizados |
|
|
Java 17 |
Runtimes personalizados |
|
Substitua {region} pelo ID da região da sua função, como cn-hangzhou.
Para adicionar a camada no console do Function Compute:
Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.
Na barra de navegação superior, selecione uma região. Na página Functions, clique na função desejada.
Na página de detalhes da função, clique na aba Configurations.
No painel de navegação à esquerda, clique em Layers e depois em Modify.
No painel Layers, escolha + Add Layer > Add Official Common Layer e selecione a camada do agente ARMS correspondente à sua versão do Java.
Etapa 3: Configurar variáveis de ambiente
Defina as seguintes variáveis de ambiente para sua função:
|
Variável |
Valor |
Descrição |
|
|
|
Ativa a extensão ARMS no Function Compute. |
|
|
Sua chave de licença do ARMS |
Autentica o agente ARMS. Obtenha essa chave na Etapa 1. |
A definição de FC_EXTENSION_ARMS=true faz com que a instância da função congele por 10 segundos após a conclusão de cada invocação. Isso concede tempo ao agente ARMS para relatar os dados coletados. O faturamento continua à taxa padrão durante essa janela de 10 segundos. Para obter detalhes, consulte Faturamento do Function Compute.
Para definir essas variáveis no console do Function Compute:
Na página de detalhes da função, clique na aba Configurations.
No painel de navegação à esquerda, clique em Environment Variables e depois em Modify.
Adicione
FC_EXTENSION_ARMS=trueeFC_EXTENSIONS_ARMS_LICENSE_KEY=<your-license-key>.
Para obter mais detalhes, consulte Configurar variáveis de ambiente.
Etapa 4: Criar um script bootstrap
O agente ARMS anexa-se ao processo Java por meio de parâmetros de inicialização da JVM. Crie um arquivo bootstrap para passar esses parâmetros quando a função for iniciada.
A tabela a seguir descreve os parâmetros necessários da JVM:
|
Parâmetro |
Descrição |
|
|
Caminho para o JAR do agente ARMS fornecido pela camada comum. |
|
|
Chave de licença do ARMS, lida da variável de ambiente definida na Etapa 3. |
|
|
Nome da aplicação conforme exibido no console do ARMS. O padrão é |
|
|
Identificador exclusivo da instância da função. |
Exemplo de script bootstrap:
#!/bin/bash
set -eo pipefail
# Set the ARMS application name.
# Defaults to FC:{FunctionName} if the FC_FUNCTION_NAME variable exists.
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
# Build the ARMS JVM parameters.
if [[ -n "${FC_EXTENSIONS_ARMS_LICENSE_KEY}" ]]; then
echo "FC_EXTENSIONS_ARMS_LICENSE_KEY: ${FC_EXTENSIONS_ARMS_LICENSE_KEY}"
params+="-Dfc.instanceId=$HOSTNAME@`hostname -i` "
params+="-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar "
params+="-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} "
params+="-Darms.appName=${appName} "
else
echo "The environment FC_EXTENSIONS_ARMS_LICENSE_KEY does not exist, please set the FC_EXTENSIONS_ARMS_LICENSE_KEY environment!"
exit 1
fi
# Launch the application. Replace the JAR path with your own.
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jar
Substitua /code/target/demo-0.0.1-SNAPSHOT.jar pelo caminho do arquivo JAR da sua aplicação.
Implantar o arquivo bootstrap
No WebIDE, na página de código da função, crie um arquivo chamado
bootstrapcom o conteúdo acima.Abra o terminal no WebIDE e execute
chmod +x bootstrappara tornar o arquivo executável.Clique em Deploy.
Para obter mais detalhes, consulte Usar um script bootstrap como comandos de inicialização.
Etapa 5: Verificar a integração
Após a implantação, invoque a função pelo menos uma vez para acionar a coleta de dados e confirme se o ARMS está recebendo as informações:
Faça login no console do ARMS.
No painel de navegação à esquerda, escolha Application Monitoring > Applications.
Localize a aplicação cujo nome corresponde ao valor
appNamedo seu script bootstrap. O padrão éFC:{FunctionName}.Clique no nome da aplicação para visualizar rastreamentos, métricas da JVM e outros dados de monitoramento.
Para obter detalhes sobre o painel de monitoramento, consulte Visão geral da aplicação.
Faturamento
A integração do ARMS com o Function Compute gera cobranças de dois serviços:
|
Serviço |
Cobrança |
Detalhes |
|
ARMS |
Taxas de monitoramento de aplicações |
|
|
Function Compute |
Janela de congelamento pós-invocação de 10 segundos, cobrada à taxa padrão de invocação |