Observação:

Monitorar o Oracle Cloud Infrastructure com o Datadog

Introdução

A plataforma de observabilidade e gerenciabilidade do Oracle Cloud visa atender nossos clientes onde eles estão. Entendemos que eles padronizaram suas posturas operacionais com ferramentas populares de Observabilidade da 3a parte e queremos ser interoperáveis com essas ferramentas para que nossos clientes possam continuar usando as ferramentas nas quais investiram com o Oracle Cloud Infrastructure.

Neste tutorial, vamos explicar como você pode mover logs do Oracle Cloud Infrastructure para o Datadog. O Datadog é uma ferramenta popular de Observabilidade que fornece serviços de monitoramento e segurança que oferecem visibilidade total aos seus aplicativos.

Criar uma chave de API do Datadog

  1. Na sua conta Datadog, selecione Integrações e, em APIs, clique em criar chave de API. Isso gerará sua chave de API.

    menu datadog

    chave datadog

Configure os logs que você deseja capturar

  1. Na console do Oracle Cloud Infrastructure, clique no menu Navegação e selecione Grupos de Logs no menu Log.
     

  2. Para criar um grupo de logs, clique em Criar Grupo de Logs.

    criar grupo de logs
     

  3. Selecione seu compartimento, adicione um nome data_log_group e uma descrição.

    novo grupo de logs
     

  4. Depois de criar o Grupo de Logs, selecione Logs no menu esquerdo.
     

  5. Clique em Habilitar Log de Serviço, preencha nossa caixa de diálogo e clique em Habilitar Log. Selecione Categoria de Log no Serviço.

    • Recurso: Informe o log que você usará como recurso.
    • Nome do log: Digite um nome para seu log, por exemplo, datadog.

    Preencha os demais campos corretamente. Consulte este exemplo, no qual o Oracle Object Store com um nome de bucket datadog_logs é mostrado.

    log de serviços
     

Configurar o Oracle Function para ingerir logs no Datadog

  1. Clique no menu Navegação e selecione a seção Solução e Plataforma. Selecione Funções no menu Serviços do Desenvolvedor.
     

  2. Clique em Criar Aplicativo e digite um nome, por exemplo, datadog01.

    criar aplicativo 
     

  3. Depois de criar o Aplicativo, clique no nome do aplicativo e selecione Conceitos Básicos no menu esquerdo.

    função oracle  

  4. Inicie o Cloud Shell.  

  5. Use o contexto da sua região.

    fn list contextfn list context
    fn use context us-phoenix-1
    
  6. Atualize o contexto com o ID do compartimento da função.

    fn update context oracle.compartment-id <compartment-id>
    
  7. Atualize o contexto com o local do Registro que você deseja usar.

    fn update context registry phx.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
    

    Substitua phx pelo código de região de três dígitos.

  8. Clique em Gerar um Token de Autenticação.

    Acesse o Registro usando o Token de Autenticação como senha.

    docker login phx.ocir.io
    

    Substitua phx pelo código de região de três dígitos.

    Você será solicitado a especificar as seguintes informações:

    • Nome de usuário: <tenancyname>/<username>
    • Senha: Crie uma senha

    Observação: Se você estiver usando o Oracle Identity Cloud Service, seu nome de usuário será <tenancyname>/oracleidentitycloudservice/<username>.

  9. Gere uma função padrão.

    fn init --runtime python datadog
    

    O comando fn init gerará uma pasta chamada datadog com 3 arquivos internos; func.py, func.yaml e requirements.txt.

    Abra func.py e substitua o conteúdo do arquivo pelo seguinte código:

    1. Importe os módulos Python necessários, conforme mostrado no seguinte trecho de código:

      	  import io
      	  import oci
      	  import re
      	  import os
      	  import json
      	  import sys
      	  import requests
      	  import logging
      	  import time
      	  from fdk import response
      
      
    2. Defina uma função para fazer parsing dos dados de log e chame a API Datadog para ingerir os logs.

      def handler(ctx, data: io.BytesIO=None):
         try:
           logs = json.loads(data.getvalue())
      

      Para obter informações sobre o formato dos logs gerados pelo serviço Oracle Cloud Infrastructure Logging, consulte Visão Geral do Formato de Log.

    3. Obtenha a origem de log, o carimbo de data e os dados de cada entrada de log.

      	  if "data" in item:
      	    if type(item.get("data")) is dict:
      		   data = item.get("data", {})
      	    else:
      		   data = item.get("data")
      	  else:
      		data = ""
      
      	  if "source" in item:
      		source = item.get("source")
      	  else:
      		Source = ""
      
      	  if "time" in item:
      		time = item.get("time")
      	  else:
      		time = ""
      
      	  payload = {}
      	  payload.update({"source":source})
      	  payload.update({"time": time})
      	  payload.update({"data":data})
      
      
    4. Crie variáveis para armazenar o URL do ponto final da API do Datadog e o token de autenticação.

      	  datadoghost = os.environ['DATADOG_HOST']
      	  datadogtoken = os.environ['DATADOG_TOKEN']
      
      

      Observação: Defina os valores para DATADOG_HOST e DATADOG_TOKEN em func.yaml.

    5. Chame a API Datadog, com o payload necessário.

      	  headers = {'Content-type': 'application/json', 'DD-API-KEY': datadogtoken}
      	  x = requests.post(datadoghost, data = json.dumps(payload), headers=headers)
      	  logging.getLogger().info(x.text)
      
        except (Exception, ValueError) as ex:
      	  logging.getLogger().info(str(ex))
      	  return
      
      

    A parte de configuração contém o URL do ponto final do Datadog e a autenticação do form de token que você obteve na Etapa 1.
    O ponto final REST é https://http-intake.logs.datadoghq.com/v1/input e os detalhes podem ser encontrados na documentação do Datadog.

    func.yaml

    schema_version: 20180708
    name: datadogapp
    version: 0.0.1
    runtime: python
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 1024
    timeout: 120
    config:
    	DATADOG_HOST: https://http-intake.logs.datadoghq.com/v1/input
    	DATADOG_TOKEN: ZZZZZzzzzzzzzzz
    
    

    requirements.txt

    fdk
    datetime
    requests
    oci
    
  10. Crie seu aplicativo.

    fn create app datadog01 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaxxxxxxxxxxx"]'
    

    Altere subnetIDs para o OCID da sua sub-rede.

  11. Implante sua função.

    fn -v deploy --app datadog
    

Criar um Conector de Serviço para ler logs do serviço Logging e acionar a Função

  1. Clique no menu Navegação e selecione a seção Solução e Plataforma. Selecione Conectores de Serviço no menu Log.
     

  2. Clique em Criar Conector e selecione a origem como Log e Destino como Funções.
     

  3. Em Configurar Conexão de Origem, selecione o nome do compartimento, o grupo de logs datadog_log_group e os logs datadog.
     

  4. Se você quiser usar logs de auditoria, clique no botão +Another log, escolha seu compartimento e adicione _Audit para Grupo de Logs.

    esquema

  5. Se for solicitado a criar uma política para gravar no serviço Functions, clique em Criar.

O Conector de Serviço agora está configurado e acionará a Função para ingerir logs no Datadog toda vez que ele encontrar logs no Serviço de Log.

Visualize logs de auditoria do OCI no Datadog

  1. No Datadog, clique no menu Logs para ver os logs ingeridos do OCI.

    painel de controle datadog

Solução de Problemas

Esta seção mostra como você pode usar um alerta de e-mail simples para monitorar o status da sua solução.

Função

Para obter mais detalhes, consulte a documentação técnica.

Criar um tópico e uma assinatura para o Notification Service

  1. No menu do canto superior esquerdo, selecione Integração de Aplicativos e, em seguida, selecione Notificações

  2. Clique em Criar Tópico e crie um tópico com o nome my_function_status

  3. Escolha seu tópico, clique em Criar Assinatura e use o seguinte exemplo:

    • Protocolo: Envie um e-mail e adicione uma inscrição com seu e-mail
  4. A assinatura será criada no status "Pendente". Você receberá um e-mail de confirmação e precisará clicar no link do e-mail para confirmar seu endereço de e-mail.

Verificar Métricas e criar uma definição de alarme com base em métricas

  1. No menu no canto superior esquerdo, selecione Serviços do Desenvolvedor e, em seguida, selecione Funções

  2. Escolha o aplicativo e a função que você deseja monitorar

  3. Na página Métricas, vá para o gráfico "Erros de Funções", clique em Opções e Crie um Alarme nesta Consulta

  4. adicione um nome e, em Notificação, selecione Serviço de destino como serviço de notificação, selecione o compartimento your_compartment e selecione Tópico como my_function_status

Service Connector Hub

Esta Seção mostra como você pode usar um alerta de e-mail simples para monitorar o status do SCH (Service Connector Hub).

Para obter mais detalhes, consulte a documentação técnica.

Criar um tópico e uma assinatura para o Notification Service

  1. No menu do canto superior esquerdo, selecione Integração de Aplicativos e, em seguida, selecione Notificações

  2. Clique em Criar Tópico e crie um tópico com o nome my_sch_status

  3. Escolha seu tópico, clique em Criar Assinatura e use o seguinte exemplo:

    • Protocolo: Envie um e-mail e adicione uma inscrição com seu e-mail
  4. A assinatura será criada no status "Pendente". Você receberá um e-mail de confirmação e precisará clicar no link do e-mail para confirmar seu endereço de e-mail.

Verificar Métricas e criar uma definição de alarme com base em métricas

  1. No menu no canto superior esquerdo, selecione Registro em Log e, em seguida, selecione Conectores de Serviço

  2. Escolha o conector que você deseja monitorar e clique no link métricas em recursos no painel de navegação esquerdo

  3. No gráfico de métricas que você deseja adicionar ao alarme e.g., "Erros do Service Connector Hub", clique em Opções e Crie um Alarme nesta Consulta

  4. adicione um nome e, em Notificação, selecione Serviço de destino como serviço de notificação, selecione o compartimento your_compartment e selecione Tópico como my_sch_status

Conclusão

Este tutorial mostrou como os clientes do Oracle Cloud Infrastructure e Datadog podem configurar uma solução de baixo custo e altamente escalável para mover logs do Oracle Cloud Infrastructure Logging para o Datadog usando o Service Connector Hub e Functions.

Agradecimentos

Autor - Igor Aragao de Souza (Consultor Principal de Big Data)

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.