Nota:
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, vedere Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del tuo ambiente cloud.
Sposta i log da Oracle Cloud Infrastructure a Sumo Logic
Introduzione
La piattaforma di osservabilità e gestibilità di Oracle Cloud mira a soddisfare i nostri clienti ovunque si trovino. Sappiamo di aver standardizzato i post di attività con i più diffusi strumenti di osservabilità di terze parti e vogliamo essere interoperabili con tali strumenti per consentire ai nostri clienti di continuare a utilizzare gli strumenti in cui hanno investito con Oracle Cloud Infrastructure (OCI).
In questa esercitazione ti spiegheremo come spostare i log da OCI in Sumo Logic. Sumo Logic è uno strumento di osservabilità popolare che fornisce servizi di monitoraggio e sicurezza che forniscono piena visibilità sulle tue applicazioni.
La nostra architettura di soluzioni ad alto livello è come mostrato di seguito:
Crea un Collector di origine HTTP personalizzato in Sumo Logic
Nell'account Sumo Logic, è necessario creare un'applicazione di raccolta personalizzata HTTP, come descritto nei passi riportati di seguito.
-
Fare clic su Impostazione guidata.
-
Fare clic su Avvia dati in streaming a Sumo Logic.
-
Fare clic su App personalizzata.
-
Fare clic su Origine HTTPS.
-
Configurare l'origine HTTP come mostrato di seguito.
Nota: l'origine HTTP è una tag di metadati, memorizzata con i log inclusi ed è utile durante la ricerca e il filtro dei log in un secondo momento in Sumo Logic. Ogni riga di log in fase di inclusione inizierà con un indicatore orario della relativa ricorrenza dell'evento, quindi selezionare l'opzione Usa fuso orario dal file di log.
Quando ci si sposta alla schermata successiva, viene fornito l'endpoint HTTPS che ci consente di caricare i log da OCI, mediante una chiamata HTTP POST. Prendi nota di questo endpoint poiché configureremo la nostra funzione per utilizzare questo endpoint per caricare i log in Sumo Logic.
Configurazione dei log da acquisire
È possibile impostare qualsiasi log come input per l'hub connettore servizio e quindi includere in Sumo Logic. Per semplificare questa esercitazione, acquisirà i log generati da Oracle Cloud Infrastructure (OCI) relativi agli eventi di scrittura in un bucket arbitrario di tua scelta.
-
Nella console di Oracle Cloud, fare clic sul menu di navigazione, selezionare Log, quindi selezionare Gruppi di log.
-
Per creare un gruppo di log, fare clic su Crea gruppo di log.
-
Selezionare il compartimento, aggiungere LogGroupForBucketActivity per il nome e aggiungere una descrizione. Fare clic su Crea.
-
Selezionare Log dal menu Logging. Verrà visualizzata una schermata simile a quella riportata di seguito.
-
Fare clic su Abilita log servizio e immettere le informazioni riportate di seguito.
- Servizio: selezionare Storage degli oggetti
- Risorsa: scegliere un bucket arbitrario (ad esempio, BucketForSumoLogic) da osservare con i log.
- Categoria di log: selezionare Scrivi eventi di accesso.
- Nome log: immettere un nome per il log, ad esempio
logForBucketActivity
. - Gruppo di log: selezionare il gruppo di log LogGroupForBucketActivity per il log appena creato nel passo precedente
-
Fare clic su Enable Log.
Ora, ogni volta che un oggetto viene caricato nel bucket BucketForSumoLogic, al log logForBucketActivity verrà aggiunta una voce di log.
Configurare Oracle Functions per l'inserimento dei log in Sumo Logic
-
Nella console di Oracle Cloud, fare clic sul menu di navigazione e selezionare Soluzione e piattaforma. Selezionare Funzioni nel menu Servizi per sviluppatori.
-
Fare clic su Crea applicazione e immettere un nome, ad esempio SumoLogicFnApp.
-
Dopo aver creato l'applicazione, fare clic sul nome dell'applicazione e selezionare Introduzione dal menu Risorse.
-
Avviare Cloud Shell.
-
Usare il contesto per la propria regione.
fn list context fn use context us-ashburn-1
-
Aggiornare il contesto con l'ID compartimento della funzione.
fn update context oracle.compartment-id <compartment-id>
-
Aggiornare il contesto con la posizione del registro che si desidera utilizzare.
fn update context registry iad.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
Sostituire
iad
con il codice area a tre cifre per l'area. -
Si supponga di aver già creato il token di autenticazione, eseguendo il login al registro utilizzando il token di autenticazione come password.
docker login iad.ocir.io
Sostituire
iad
con il codice area a tre cifre per l'area.Verranno richieste le informazioni riportate di seguito.
- Nome utente: <nome tenancy>/<nome utente>
- Password: crea una password
Nota: se si utilizza Oracle Identity Cloud Service, il nome utente è <tenancyname>/oracleidentitycloudservice/<username>.
Verificare l'impostazione elencando le applicazioni nel compartimento.
fn list apps
-
Generare una funzione di testo standard 'hello-world'.
fn init --runtime python sumologicfn
Il comando fn init genererà una cartella denominata SumoLogicfn con tre file all'interno: func.py, func.yaml, e requirements.txt.
Aprire func.py e sostituire il contenuto del file con il codice seguente.
-
Importare i moduli Python necessari, come mostrato nello snippet seguente.
import io import json import logging import os import requests from fdk import response
-
Definire una funzione per analizzare i dati di log e richiamare l'API Sumo Logic per includere i log.
# This method is the entrypoint for your Function invokation # aka the method invoked by the OCI Fn platform # it will receive the list of log entries from OCI as input in the form of bytestream # the method name will be defined in func.yml def handler(ctx, data: io.BytesIO = None): logger = logging.getLogger() logger.info("function start") # Sumologic endpoint URL to upload OCI logs to HTTP custom app. # this value will be defined defined in func.yaml sumologic_endpoint = os.environ['SUMOLOGIC_ENDPOINT']
Per informazioni sul formato dei log generati dal servizio Oracle Cloud Infrastructure Logging, vedere Panoramica del formato di log.
-
Recuperare le voci del log dall'hub connettore servizio ricevute dalla funzione sumologicfn come payload di richiamo. Eseguire il loop attraverso questi log-intries e log-lines uno per uno.
try: logentries = json.loads(data.getvalue()) # deserialize the bytesstream input as JSON array if not isinstance(logentries, list): logger.error('Invalid connector payload. No log queries detected') raise # Optional...log the input to the function as human readble JSON. # Not to be used in production logger.info("json input from SCH") logger.info(data.getvalue()) for logEntry in logentries: logger.info("Extracting/Parse log details from the log entry json") event_name = logEntry["data"]["requestResourcePath"] + '\t' time_of_event = logEntry["time"] + '\t' cmpt_name = logEntry["data"]["compartmentName"] + '\t' bucket_namespace = logEntry["data"]["namespaceName"] + '\t' bucket_name = logEntry["data"]["bucketName"] + '\t' request_action = logEntry["data"]["requestAction"] log_line = time_of_event + event_name + cmpt_name + \ bucket_namespace + bucket_name + request_action # Call the Sumologic with the payload and ingest the OCI logs headers = {'Content-type': 'text/plain'} response_from_sumologic = requests.post(sumologic_endpoint, data=log_line, headers=headers) logging.getLogger().info(response_from_sumologic.text) logger.info("function end") return except Exception as e: logger.error("Failure in the function: {}".format(str(e))) raise
-
-
Sostituire il contenuto di func.yml come indicato di seguito. Assicurati di inserire il valore per il tuo SumoLogic_ENDPOINT ottenuto nel passo precedente.
schema_version: 20180708 name: sumologicfn version: 0.0.1 runtime: python entrypoint: /python/bin/fdk /function/func.py handler memory: 1024 timeout: 120 config: SUMOLOGIC_ENDPOINT: [YOUR SUMOLOGIC API ENDPOINT URL HERE]
-
Sostituire il contenuto di requirements.txt come indicato di seguito.
fdk requests
-
Distribuire la funzione.
fn -v deploy --app sumologicFnApp --no-bump
-
Se si desidera, è possibile eseguire il test della funzione SumoLogicfn con l'input di esempio come indicato di seguito.
curl -O https://raw.githubusercontent.com/mayur-oci/sumologicfn/main/example.json fn invoke sumologicFnApp sumologicfn < example.json
Crea un connettore servizio per la lettura dei log da registrazione e attivazione della funzione
-
Nella console di Oracle Cloud, fare clic sul menu di navigazione e selezionare Soluzione e piattaforma. Selezionare Connettori servizio nel menu Log.
-
Fare clic su Crea connettore, quindi nell'elenco a discesa Origine selezionare Log e Funzioni selezionare Destinazione.
-
In Configure Source Connection selezionare il nome del compartimento, il gruppo di log LogGroupForBucketActivity e i log logForBucketActivity.
-
Se si desidera utilizzare i log di controllo, fare clic sul log +Another, scegliere il compartimento e aggiungere _Audit per il gruppo di log.
-
Se viene richiesto di creare un criterio per la scrittura in Funzioni, fare clic su Crea.
Il connettore servizio è ora impostato e attiverà la funzione per includere i log in Sumo Logic ogni volta che rileva i log nel servizio di log.
Visualizza i log di Oracle Cloud Infrastructure in Sumo Logic
-
In Sumo Logic selezionare il menu Origine - Applicazione personalizzata per visualizzare i log inclusi in Oracle Cloud Infrastructure (OCI) utilizzando la funzione SumoLogicfn.
Risoluzione dei problemi
In questa sezione viene illustrato come utilizzare un semplice avviso e-mail per monitorare lo stato della soluzione.
Per ulteriori informazioni, vedere Panoramica delle funzioni.
Crea un argomento e una sottoscrizione per il servizio di notifica
-
Nella console di Oracle Cloud, dal menu di navigazione nell'angolo in alto a sinistra, selezionare Integrazione applicazioni, quindi selezionare Notifiche.
-
Fare clic su Crea argomento e creare un argomento con il nome my_function_status.
-
Scegliere l'argomento, fare clic su Crea sottoscrizione e utilizzare l'esempio riportato di seguito.
- Protocollo: inviare un'e-mail e aggiungere un abbonamento al proprio indirizzo e-mail.
-
La sottoscrizione verrà creata con stato "In sospeso". Si riceverà un'e-mail di conferma e sarà necessario fare clic sul collegamento nell'e-mail per confermare l'indirizzo.
Controllare le metriche e creare una definizione di allarme dalle metriche
-
Nel menu di navigazione nell'angolo in alto a sinistra, selezionare Servizi sviluppatore, quindi selezionare Funzioni.
-
Scegliere l'applicazione e la funzione da monitorare.
-
Nella pagina Metriche, andare al grafico Errori Funzioni, fare clic su Opzioni, quindi fare clic su Crea un allarme in questa query.
-
Aggiungere un nome e in Notifica selezionare Servizio di destinazione come servizio di notifica, selezionare your_compartment, quindi selezionare Argomenti come my_function_status.
Monitorare l'hub connettore servizio di stato
In questa sezione viene illustrato come utilizzare un semplice avviso e-mail per monitorare lo stato dell'hub connettore servizio (SCH).
Per ulteriori informazioni, vedere Panoramica dell'hub connettore servizio.
Crea un argomento e una sottoscrizione per il servizio di notifica
-
Nel menu di navigazione nell'angolo in alto a sinistra, selezionare Integrazione applicazioni, quindi selezionare Notifiche.
-
Fare clic su Crea argomento e creare un argomento con il nome my_sch_status.
-
Scegliere l'argomento, fare clic su Crea sottoscrizione e utilizzare l'esempio riportato di seguito.
- Protocollo: e-mail e aggiunta di una sottoscrizione al proprio indirizzo e-mail.
-
La sottoscrizione verrà creata con stato "In sospeso". Si riceverà un'e-mail di conferma e sarà necessario fare clic sul collegamento nell'e-mail per confermare l'indirizzo.
Controllare le metriche e creare una definizione di allarme dalle metriche
-
Dal menu di navigazione nell'angolo in alto a sinistra, selezionare Log, quindi Connettori servizio.
-
Scegliere il connettore che si desidera monitorare e dall'elenco Risorse nel pannello di navigazione sinistro selezionare Metriche.
-
Nel grafico delle metriche a cui si desidera aggiungere l'allarme, ad esempio "Errori dell'hub connettore servizio", fare clic su Opzioni e su Crea un allarme in questa query.
-
Aggiungere un nome e in Notifica selezionare Servizio di destinazione come servizio di notifica, selezionare your_compartment, quindi selezionare Argomenti come my_sch_status.
Conclusione
Questa esercitazione ha mostrato in che modo i clienti di Oracle Cloud Infrastructure e Sumo Logic possono configurare una soluzione altamente scalabile con costi indiretti bassi per lo spostamento dei log da Oracle Cloud Infrastructure Logging a Sumo Logic mediante Service Connector Hub e Oracle Functions.
Riconoscimenti
- Autore - Mayur Raleraskar, Solutions Architect
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di apprendimento gratuito sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare il sito Oracle Help Center.
Move logs from Oracle Cloud Infrastructure into Sumo Logic
F50468-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.