Monitorar Backups do Oracle Cloud Infrastructure com Funções e Autonomous JSON
```
{
"eventType" : "com.oraclecloud.filestorage.createsnapshot",
"cloudEventsVersion" : "0.1",
"eventTypeVersion" : "2.0",
"source" : "FileStorage",
"eventTime" : "2022-11-23T21:30:20Z",
"contentType" : "application/json",
"data" : {
"compartmentId" : "ocid1.compartment.oc1..********************",
"compartmentName" : "ChristophePruvost",
"resourceName" : "Snapshot-20221123-2130-10",
"resourceId" : "ocid1.snapshot.oc1.********************",
"availabilityDomain" : "AD2",
"freeformTags" : { },
"definedTags" : {
"Mandatory_Tags" : {
"Owner" : "oracleidentitycloudservice/firstname.name@company.com",
"Schedule" : "OnDemand_UTC+1",
"CreatedOn" : "2022-11-23T21:30:11.405Z"
}
},
"additionalDetails" : {
"X-Real-Port" : 60458
}
},
"eventID" : "d520f88c-cd3d-4d1f-9a39-d935db5dcd8b",
"extensions" : {
"compartmentId" : "ocid1.compartment.oc1..*****************************"
}
}
```
Após inserir eventos no Autonomous JSON, você poderá criar facilmente um aplicativo APEX que monitorará todos os seus backups do OCI em um só lugar. Além disso, como administrador do OCI, você pode evitar um enorme número de notificações de e-mail e pode usar o APEX para criar relatórios de backup eficientes. Para ativar isso, você precisa desativar o componente Email Delivery mostrado no diagrama de arquitetura a seguir.
Arquitetura
O diagrama a seguir ilustra a arquitetura de referência desta solução.

Descrição da ilustração mon-bu-funs-auto-json-arch.png
mon-bu-funs-auto-json-arch-oracle.zip
Observação:
Snapshot de Armazenamento de Arquivos e Backup do DBCS são apenas dois exemplos desta implementação. Ela será executada de forma semelhante com todos os eventos de backup no OCI, incluindo Backup do Armazenamento em Blocos, Backup do Armazenamento de Inicialização, Backup ExaCS etc.A arquitetura tem os seguintes componentes:
- Região
Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominada domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou mesmo continentes).
- Rede virtual na nuvem (VCN) e sub-redes
Uma VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem total controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.
- File Storage
O serviço Oracle Cloud Infrastructure File Storage fornece um sistema de arquivos de rede durável, escalável, seguro e de nível empresarial. Você pode estabelecer conexão com um sistema de arquivos do serviço File Storage em qualquer instância bare metal, de máquina virtual ou de contêiner. Um Snapshot de Armazenamento de Arquivos é um backup do sistema de arquivos que você pode usar se quiser restaurá-lo fazendo um clone.
- Database Cloud Service (DBCS)
O DBCS é um serviço totalmente gerenciado do Oracle Database. Um Backup do DBCS é um backup dos dados que você pode usar para restaurar o banco de dados.
- Serviço de Eventos do OCI
O Oracle Cloud Infrastructure Events Service rastreia alterações de recursos usando eventos em conformidade com o padrão Cloud Events Foundation (CNCF) Cloud Native Computing Foundation. Os desenvolvedores podem responder a alterações em tempo real, acionando o código com o serviço Functions, gravando no Streaming ou enviando alertas usando o Notifications.
- Funções do OCI
O Oracle Cloud Infrastructure OCI Functions é um serviço sem servidor e orientado a eventos que permite aos desenvolvedores criar, executar e dimensionar aplicativos sem provisionar ou gerenciar qualquer infraestrutura. Você só paga pelos recursos usados quando a função está em execução. As funções se integram a outros serviços OCI e aplicativos Oracle Saar. Com base em um framework aberto, as Funções do OCI podem ser portadas para outras nuvens ou ambientes locais.
- JSON Autônomo
O Oracle Autonomous JSON Database é um serviço com escopo de recursos para armazenar e recuperar coleções de documentos JSON usando APIs SQL ou de Documentos.
- Entrega de E-mail
O serviço Oracle Cloud Infrastructure Email Delivery fornece uma solução gerenciada rápida e confiável para envio de e-mails seguros e de alto volume de marketing e transacionais.
Recomendações
Para implementar a função, a Oracle recomenda que você conclua algumas das LiveLabs disponíveis para compreender melhor o processo e preparar seu ambiente.
- Função do Oracle OCI
Primeiro, você precisa se familiarizar com a implementação do OCI Functions. Siga LiveLab, Configurando o Oracle Functions. Para agilizar o processo, copie e cole o código de amostra de oracle-functions-samples em GitHub.
- JSON Autônomo
Em seguida, para desenvolver familiaridade com o uso de JSON em bancos de dados Oracle, siga LiveLab, Desenvolvendo com JSON e SODA no Oracle Database. Em seguida, siga LiveLab, Oracle Functions Orientada a Eventos com o Autonomous Data Warehouse.
- Monitorando com o APEX
Por fim, saiba como monitorar processos no APEX, siga o LiveLabs Desenvolvimento de Baixo Código com o Autonomous Database.
Depois de finalizar o LiveLab, crie uma View SQL dos Eventos JSON e use a amostra de código a seguir para criar seu próprio Aplicativo APEX Monitoring. Observe que essa view é relativa à estrutura do exemplo de Evento JSON mostrado em "Saiba Mais Sobre o Monitoramento de Backups do Oracle Cloud Infrastructure com Funções e Autonomous JSON".CREATE OR REPLACE VIEW j_backup_detail_view AS SELECT ba.id, ba.created_on, ba.last_modified, ba.version, jt.* FROM backup ba, json_table(ba.json_document, '$' COLUMNS ( eventtype VARCHAR2(100) PATH '$.eventType', cloudeventsversion VARCHAR2(10) PATH '$.cloudEventsVersion', eventtypeversion VARCHAR2(10) PATH '$.eventTypeVersion', source VARCHAR2(50) PATH '$.source', compartmentid VARCHAR2(200) PATH '$.data.compartmentId', compartmentname VARCHAR2(100) PATH '$.data.compartmentName', resourcename VARCHAR2(200) PATH '$.data.resourceName', resourceid VARCHAR2(200) PATH '$.data.resourceId', availabilitydomain VARCHAR2(200) PATH '$.data.availabilityDomain' )) jt; create search index srchidx on backup (json_document) for json;Agora você está pronto para iniciar sua própria implementação.