Armazenando e Exibindo Logs de Função
Descubra como armazenar e exibir logs de funções com o OCI Functions.
Quando uma função é chamada, normalmente você deseja acessar os logs da função para solução de problemas. O serviço Oracle Cloud Infrastructure Logging é a opção padrão e recomendada para acessar, pesquisar e armazenar logs de funções. Se você ativar o Oracle Cloud Infrastructure Logging para um aplicativo, os logs de chamada padrão serão criados sempre que as funções no aplicativo forem chamadas. Consulte Usando a Console para Ativar e Exibir Logs de Funções no Oracle Cloud Infrastructure Logging. Para obter mais informações sobre o conteúdo dos logs de funções, consulte Detalhes de Funções.
Como alternativa, pode haver ocasiões em que você deseja enviar logs de função para um destino de log externo como Papertrail. Para enviar logs a um destino de log externo em vez do serviço Oracle Cloud Infrastructure Logging, use a CLI do Fn Project para especificar um URL do syslog. Consulte Usando Comandos da CLI do Fn Project para Especificar um URL do syslog.
- Para node.js:
console.log('Entering Hello Node.js function');
- Para java:
System.err.println("Entering Java Hello World Function");
- Para ir:
fmt.Println("Entering Hello Go function")
Usando a Console para Ativar e Exibir Logs de Funções no Oracle Cloud Infrastructure Logging
Para ativar e exibir logs de função no serviço Logging do Oracle Cloud Infrastructure:
- Na página da lista Aplicativos, selecione o aplicativo com funções para as quais você deseja criar, ativar e exibir logs. Se precisar de ajuda para localizar a página de lista ou o aplicativo, consulte Listando Aplicativos.
- Selecione a guia Monitoramento e vá para a seção Logs.
- Para criar e ativar um novo log de função no serviço Logging do Oracle Cloud Infrastructure:
- No
- Compartimento: O compartimento no qual o novo log será criado. Por padrão, o compartimento atual.
- Grupo de Logs: O grupo de logs no qual o novo log será criado. Selecione um grupo existente de logs ou Criar novo grupo para criar um novo grupo com um nome e descrição fornecidos.
- Nome do Log: O nome do novo log. Por padrão, <application-name>_invoke .
- Retenção de Log: O tempo pelo qual os dados de log serão retidos.
- Tags: Se você tiver permissões para criar um recurso, também terá permissões para aplicar tags de formato livre a esse recurso. Para aplicar uma tag definida, você deve ter permissões para usar o namespace da tag. Para obter mais informações sobre tags, consulte Tags de Recursos. Se você não tiver certeza se deseja aplicar tags, ignore essa opção ou pergunte a um administrador. Você pode aplicar tags posteriormente.
da categoria Logs de Chamada da Função, selecione Ativar Log e especifique: - Selecione Ativar Log para criar o novo log (e o novo grupo de logs, se você tiver especificado um).
- No
- Para ativar um log de função existente que está inativo no momento, no menu Ações
da categoria Logs de Chamada de Função, selecione Ativar Log.
- Para exibir os dados em um log de funções existente, selecione o nome do grupo de logs que contém o log que você deseja exibir na coluna Grupo de Logs.
O log é aberto na página Detalhes do Log do grupo de logs, permitindo que você exiba os dados do log, além de classificar e filtrar os dados do log por hora.
- Selecione a seta para baixo ao lado de um evento de log para ver os dados de log desse evento.
- Selecione Explorar com Pesquisa de Log para pesquisar dados de log.
Dica
Ao pesquisar dados de log, você pode usar o campo data.opcRequestId
para filtrar logs por id de solicitação. Se uma implantação de API no Gateway de API chamar uma função em um back-end do OCI Functions, você poderá ver logs relacionados à solicitação do API Gateway e à solicitação do OCI Functions usando o mesmo campo data.opcRequestId
junto com um curinga, da seguinte forma:
- Na página Pesquisa de Log, selecione a seta para baixo ao lado de um evento de log para ver os dados de log desse evento.
- Selecione o campo
"data.opcRequestId"
no log de funções e selecione Correspondência de filtros no menu pop-up.Por exemplo, suponha que o log de função contenha o campo
"data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20"
. O campo"data.opcRequestId": "/01FJA5VCVM0000000000025M1Z/01FJA5VCVM0000000000025M20"
é copiado para a página Pesquisa de Log (Modo Básico) como um filtro. - Na página Pesquisa de Log (Modo Básico), selecione Mostrar Modo Avançado e substitua a segunda metade do valor do campo
"data.opcRequestId"
mostrado no campo Consulta pelo curinga * (asterisco).Por exemplo, para que ele leia
data.opcRequestId: '/01FJA5VCVM0000000000025M1Z/*'
- Selecione Pesquisar.
Usando Comandos da CLI do Fn Project para Especificar um URL do syslog
De tempos em tempos, novas versões da CLI do Fn Project são lançadas. Recomendamos que você verifique regularmente se a versão mais recente está instalada. Para obter mais informações, consulte Etapas para fazer upgrade da CLI do Fn Project.
O serviço Oracle Cloud Infrastructure Logging é a opção padrão e recomendada para acessar, pesquisar e armazenar logs de funções.
Como alternativa, você pode enviar logs de função para um destino de log externo, como Papertrail, usando a CLI do Fn Project para especificar um URL do syslog. Observe que para usar um destino de log externo, você deve ter configurado uma VCN com sub-redes públicas e um gateway de internet (consulte Criando a VCN e Sub-redes para Usar com o Serviço OCI Functions, se elas ainda não existem).
Para enviar logs de função para um destino de log externo definindo o URL do syslog:
- Acesse o ambiente de desenvolvimento como desenvolvedor de funções.
-
Para criar um novo aplicativo e especificar que todas as funções no aplicativo enviem seus logs para um destino de log externo, informe:
fn create app <app-name> --syslog-url <logging-service-url> --annotation oracle.com/oci/subnetIds='["<subnet-ocid>"]'
em que:
<app-name>
é o nome do novo aplicativo. Evite digitar informações confidenciais.<logging-service-url>
is the syslog URL to which to send logs.<subnet-ocid>
é o OCID da sub-rede pública (ou das sub-redes, até no máximo seis) em que as funções serão executadas. Se uma sub-rede regional tiver sido definida, a prática recomendada é selecionar essa sub-rede para tornar o failover entre os domínios de disponibilidade mais simples de implementação. Se uma sub-rede regional não tiver sido definida e você precisar atender aos requisitos de alta disponibilidade, selecione várias sub-redes (coloque cada OCID entre aspas duplas separados por vírgulas, no formato'["<subnet-ocid>","<subnet-ocid>"]'
. Recomendamos que as sub-redes públicas estejam na mesma região que o registro Docker especificado no contexto da CLI do Fn Project (consulte Criando um Contexto da CLI do Fn Project para Conexão com o Oracle Cloud Infrastructure).
Por exemplo:
fn create app acmeapp --syslog-url tcp://my.papertrail.com:4242 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaaaaacnh..."]'
Observe que, se você posteriormente configurar o Oracle Cloud Infrastructure Logging para armazenar logs, os detalhes do URL do syslog existente serão retidos. Portanto, se posteriormente você decidir retomar o envio de logs de função para o destino de log externo, basta desativar o Oracle Cloud Infrastructure Logging e os logs serão enviados ao URL do syslog novamente.
-
Para atualizar um aplicativo existente e especificar que todas as funções no aplicativo enviem seus logs para um destino de log externo, informe:
fn update app <app-name> --syslog-url <logging-service-url>
em que:
<app-name>
é o nome do aplicativo a ser atualizado<logging-service-url>
is the syslog URL to which to send logs
Por exemplo:
fn update app acmeapp --syslog-url tcp://my.papertrail.com:4242
-
Para atualizar um aplicativo existente e remover o destino de log externo especificado para o URL do syslog, informe:
fn update app <app-name> --syslog-url ''
em que:
<app-name>
é o nome do aplicativo a ser atualizado
Por exemplo:
fn update app acmeapp --syslog-url ''
Opções de Log Suportadas Anteriormente
Nas releases anteriores do OCI Functions (antes da release do serviço Oracle Cloud Infrastructure Logging), você poderia especificar onde o OCI Functions armazena os logs de uma função configurando uma 'política de log' para o aplicativo que contém a função. Anteriormente, você podia usar a Console para configurar uma política de log para:
-
Armazene logs como objetos em um bucket de armazenamento no Oracle Cloud Infrastructure Object Storage selecionando a opção OCI Logging.
Para exibir logs de função em um bucket de armazenamento, o grupo ao qual você pertence deve ter acesso às seguintes instruções de política de identidade:
Allow group <group-name> to manage object-family in compartment <compartment-name>
Allow group <group-name> to read objectstorage-namespaces in compartment <compartment-name>
(Geralmente criada ao configurar sua tenancy para desenvolvimento de função. Consulte Instruções de Política para Dar aos Usuários do OCI Functions Acesso aos Repositórios do Oracle Cloud Infrastructure Registry.)
- Armazene logs enviando-os para um destino de log externo como Papertrail selecionando a opção URL do Syslog.
Para um aplicativo existente no qual você já configurou anteriormente uma política de log, a funcionalidade acima ainda é suportada e a política de log existente é aplicada. No entanto, observe o seguinte:
- Não é possível usar a Console para configurar uma nova política de log ou editar uma política de log existente.
- Se a política de log existente especificar o armazenamento de logs de função como objetos em um bucket de armazenamento no Oracle Cloud Infrastructure Object Storage:
- A capacidade de armazenar logs no Object Storage passará por remoção gradual em uma release futura.
- Recomendamos que você mude para o armazenamento de logs usando o Oracle Cloud Infrastructure Logging.
- Se você mudar para o uso do Oracle Cloud Infrastructure Logging para armazenar logs, não poderá reverter essa ação para armazenar os logs no Object Storage.
- Os logs armazenados no Object Storage continuarão existindo (com cada nome de log, incluindo o OCID da função associada, como antes).
- Se a política de log existente tiver especificado um URL do syslog:
- Se você mudar para usar o Oracle Cloud Infrastructure Logging para armazenar logs, os detalhes de URL do syslog existentes serão retidos. Portanto, se posteriormente você decidir retomar o envio de logs de função para o destino de log externo, basta desativar o Oracle Cloud Infrastructure Logging e os logs serão enviados ao URL do syslog novamente.
- Para alterar o URL do syslog na política de log existente, use a CLI do Fn Project para alterá-lo.