Ao executar funções Java no Function Compute, é essencial ter visibilidade sobre o desempenho da aplicação, rastreamentos distribuídos e a integridade da JVM. O Application Real-Time Monitoring Service (ARMS) se integra ao Function Compute como uma extensão interna, oferecendo:
Observabilidade em nível de instância
Rastreamento distribuído
Métricas da Java Virtual Machine (JVM)
Profiling em 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 customizado.
O agente ARMS consome aproximadamente 300 MB de memória em tempo de execução. Verifique se a função tem pelo menos 512 MB de memória alocada. A janela de congelamento de 10 segundos após cada invocação, necessária para o envio de dados, é cobrada pela taxa padrão de invocação. Para mais detalhes, consulte Faturamento do Function Compute.
Runtimes compatíveis e requisitos
|
Requisito |
Detalhes |
|
Runtime |
Runtime customizado com Java 8, Java 11 ou Java 17. O runtime Java 8 nativo também é compatível. |
|
Versão do JDK |
Deve ser compatível com o Application Monitoring do ARMS. 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. O monitoramento entre regiões não é compatível. |
Para crie uma função com runtime customizado, consulte Create a function.
Etapa 1: Obtenha uma chave de licença
Chame a operação de API DescribeTraceLicenseKey no OpenAPI Explorer para recuperar sua chave de licença do ARMS. Guarde essa chave para uso na Etapa 3.
Etapa 2: Adicione a layer do agente ARMS
O Function Compute disponibiliza layers comuns oficiais que incluem o agente ARMS para cada versão Java compatível.
|
Versão Java |
Runtime compatível |
ARN da layer comum |
|
Java 8 / Java 11 |
Runtimes customizados |
|
|
Java 17 |
Runtimes customizados |
|
Substitua {region} pelo ID da região da função, como cn-hangzhou.
Para adicionar a layer pelo 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, em seguida, em Modify.
No painel Layers, escolha + Add Layer > Add Official Common Layer e selecione a layer do agente ARMS correspondente à sua versão Java.
Etapa 3: Configure as 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. |
Definir FC_EXTENSION_ARMS=true faz com que a instância da função fique congelada por 10 segundos após a conclusão de cada invocação. Esse período permite que o agente ARMS envie os dados coletados. A cobrança continua pela taxa padrão durante essa janela de 10 segundos. Para mais detalhes, consulte Faturamento do Function Compute.
Para defina essas variáveis pelo 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, em seguida, em Modify.
Adicione
FC_EXTENSION_ARMS=trueeFC_EXTENSIONS_ARMS_LICENSE_KEY=<your-license-key>.
Para mais detalhes, consulte Configurar variáveis de ambiente.
Etapa 4: Crie um script bootstrap
O agente ARMS se conecta ao processo Java por meio dos 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 de JVM obrigatórios:
|
Parâmetro |
Descrição |
|
|
Caminho para o JAR do agente ARMS fornecido pela layer comum. |
|
|
Chave de licença do ARMS, lida a partir da variável de ambiente definida na Etapa 3. |
|
|
Nome da aplicação exibido no console do ARMS. O padrão é |
|
|
Identificador único 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.
Implante o arquivo bootstrap
No WebIDE da 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 mais detalhes, consulte Usar um script bootstrap como comandos de inicialização.
Etapa 5: Verifique a integração
Após a implantação, invoque a função pelo menos uma vez para acionar a coleta de dados e confirme que 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 de
appNamedefinido no script bootstrap. O padrão éFC:{FunctionName}.Clique no nome da aplicação para visualize traces, métricas de JVM e outros dados de monitoramento.
Para 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 em dois serviços:
|
Service |
Cobrança |
Detalhes |
|
ARMS |
Taxas de monitoramento de aplicações |
|
|
Function Compute |
Janela de congelamento de 10 segundos após cada invocação, cobrada pela taxa padrão de invocação |