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.
Integra gli avvisi OCI con l'API SMS Syniverse
Introduzione
In questa esercitazione verrà creato un avviso basato sull'utilizzo della CPU e verrà configurato Syniverse per inviare un avviso SMS quando raggiunge la soglia definita.
La soluzione fornita utilizza Oracle Notifications Service (ONS) per fornire notifiche di eventi e allarmi a una funzione in grado di chiamare Syniverse SMS API, per inviare il messaggio SMS. Costruiamo una soluzione pronta per la produzione in cui tutto è sottoposto a parametri e abbiamo anche incluso l'area di memorizzazione degli oggetti, in cui abbiamo memorizzato i numeri di telefono per inviare SMS e Oracle Vault per memorizzare le credenziali Syniverse API.
Verrà creato ONS con un argomento per ricevere l'avviso di notifica e una sottoscrizione a tale argomento per chiamare la funzione Oracle. Configurare l'allarme di monitoraggio. Ad esempio, ogni volta che l'utilizzo della CPU supera il 70%, una funzione Oracle attiva ONS per chiamare l'endpoint Syniverse all'invio dell'SMS.
Il diagramma riportato di seguito mostra come funziona.

Creare un account e una chiave API Syniverse
-
Passare a Syniverse Developer Community e creare un account.
-
Accedere all'account Syniverse, andare al menu Applicazioni e fare clic su Crea nuovo.
-
Immettere quanto riportato di seguito.
- Nome applicazione: oci
- Descrizione: SMS in tempo reale con registri OCI Alert o OCI
- Account: scegliere l'account iniziale
-
Dopo aver creato l'applicazione, fare clic sul nome dell'applicazione ed espandere Chiavi di autenticazione per visualizzare i dettagli dell'API. Queste informazioni vengono utilizzate nella funzione Oracle e nei vault.
Per ulteriori informazioni, fai clic qui.
Creare un compartimento OCI
-
Accedere alla console OCI come amministratore e dal menu nell'angolo in alto a sinistra, selezionare Identità, quindi selezionare Compartimenti.
-
Fare clic su Crea compartimento e utilizzare l'esempio riportato di seguito per creare il compartimento.
- Nome: syniverse_compartment
- Compartimento padre: selezionare un compartimento (se si desidera renderlo figlio di un compartimento esistente, selezionare il compartimento padre pertinente, altrimenti accettare il contenitore root predefinito)
Crea un vault Oracle
-
Nel menu nell'angolo in alto a sinistra, selezionare Sicurezza, quindi selezionare Vault.
-
Selezionare syniverse_compartment creato.
-
Fare clic su Create Vault e creare un vault con il nome syniverse_api_credentials.
-
Scegliere il vault, fare clic su Crea chiave e creare una chiave con il nome syniverse_token.
-
Fare clic sul collegamento Secrets in Risorse nel riquadro di navigazione a sinistra
-
Fare clic su Crea segreto e utilizzare l'esempio seguente:
- Nome: secret_token
- Chiave di cifratura: selezionare la syniverse_token creata in precedenza.
- Sommario segreto: qui è necessario aggiungere il token di accesso da Syniverse.
-
Fare clic sul segreto my-secret, copiare il valore segreto OCID e sostituire il valore nel file func.yaml
Creare un gruppo dinamico per Oracle Vault.
-
Nel menu nell'angolo in alto a sinistra, selezionare Identità, quindi Gruppi dinamici.
-
Fare clic su Crea gruppo dinamico e utilizzare l'esempio riportato di seguito.
- Nome: syniverse-secret-group
- Regola: qualsiasi {instance.compartment.id = '
'}
Creare un bucket e caricare un file nello storage degli oggetti
-
Creare un bucket.
-
Nel menu nell'angolo in alto a sinistra, selezionare Infrastruttura di base, quindi selezionare Storage degli oggetti.
-
Selezionare il compartimento syniverse_compartment creato.
-
Fare clic su Crea bucket e creare un bucket con il nome syniverse_phone_target_list
-
-
Creare e caricare un file con il numero di telefono. La funzione ha una dipendenza dell'area di memorizzazione degli oggetti perché legge il file con i telefoni destinatari per inviare l'SMS.
-
Creare un file locale denominato numbers.txt e aggiungere il numero di telefono che si desidera utilizzare per il caso. Il file deve essere delimitato da virgole senza spazi.
-
Nella schermata dei dettagli dello storage degli oggetti fare clic su Carica oggetti e selezionare il file numbers.txt da caricare, ad esempio, il file number.txt può contenere qualcosa di simile al seguente:
+3530871231234, +35308712312345Facoltativamente, è possibile aggiungere un criterio per limitare l'accesso a questo bucket o file ad alcune persone.
-
-
Crea un gruppo dinamico per lo storage degli oggetti di lettura delle funzioni Oracle.
-
Nel menu nell'angolo in alto a sinistra, selezionare Identità, quindi Gruppi dinamici.
-
Fare clic su Crea gruppo dinamico e utilizzare l'esempio riportato di seguito.
- Nome: fn-obj-store-group
- Regola: ALL {resource.type = 'fnfunc', resource.compartment.id = '
'}
-
-
Crea un criterio per questo gruppo dinamico.
-
Nel menu nell'angolo in alto a sinistra, selezionare Identità, quindi Criteri.
-
Fare clic su Crea criterio e utilizzare l'esempio riportato di seguito.
-
Nome: fn-obj-store-list-policy
-
Istruzioni: in Policy Builder fare clic su Cutmomize(avanzata)
allow dynamic-group fn-obj-store-list to manage all-resources in compartment my-compartment
-
-
Creare una rete VCN (Virtual Cloud Network)
-
Nel menu nell'angolo in alto a sinistra, selezionare Infrastruttura di base, Networking, quindi selezionare Reti cloud virtuali.
-
Selezionare il compartimento syniverse_compartment creato.
-
Fare clic su Start VCN Wizard e scegliere VCN con connettività Internet e fare clic su Avvia procedura guidata VCN.
-
Aggiungere un nome VCN e gestire tutti i valori predefiniti.
-
Fare clic su Avanti e conferma per creare la VCN.
Crea una funzione Oracle
-
Nel menu nell'angolo in alto a sinistra, selezionare Servizio sviluppatore, quindi selezionare Funzioni.
-
Selezionare il compartimento syniverse_compartment creato.
-
Fare clic su Crea applicazione e creare un'applicazione con il nome syniverse_notification. Seleziona il compartimento, la VCN e la subnet creata.
-
Avviare Cloud Shell.
-
Usare il contesto per la propria regione:
fn list contextfn list context fn use context us-phoenix-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 da utilizzare:
fn update context registry phx.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]Sostituire la phx con il codice area a tre cifre.
-
Fare clic su Genera token di autenticazione.
Accedere al registro utilizzando il token di autenticazione come password:
docker login phx.ocir.io <-- Replace phx with the three-digit region codeVerranno 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 è nome tenancy/oracleidentitycloudservice/username.
-
Generare una funzione di testo standard 'hello-world':
fn init --runtime python syniverseQuesta funzione creerà una cartella "syniverse" con un semplice esempio fn python.
Sostituire il contenuto dei file con il codice riportato di seguito.
-
Importare i moduli Python necessari, come mostrato nello snippet seguente:
import io import os import oci import json import requests import logging import datetime import base64 from fdk import response -
Definire una funzione per analizzare i dati allart e richiamare l'API Syniverse per inviare l'SMS.
if "body" in log: body = log.get("body") else: body = "" if "timestampEpochMillis" in log: time_in_millis = log.get("timestampEpochMillis") / 1000.0 dt = datetime.datetime.fromtimestamp(time_in_millis).strftime('%Y-%m-%d %H:%M') body = body + "\ntime " + dt else: body = body + "" -
Richiamare l'API Syniverse con il payload richiesto.
secret_token = os.environ['SYNIVERSE_TOKEN'] response_token = read_secret_value(secret_client, secret_token) response_host = os.environ['SYNIVERSE_HOST'] response_channel = os.environ['SYNIVERSE_CHANNEL'] syniversehost = response_host syniversetoken = "Bearer " + response_token syniversechannel = "channel:" + response_channel payload = {} payload.update({"from":syniversechannel}) payload.update({"to":phone}) payload.update({"body":body})La parte di configurazione contiene le configurazioni dell'area di memorizzazione degli oggetti, lo spazio dei nomi, il nome del bucket e il nome file insieme alle configurazioni Syniverse, all'URL dell'endpoint Syniverse e al token per l'autenticazione memorizzata nel vault nel passo 3.
func.yaml
schema_version: 20180708 name: syniverse version: 0.0.335 runtime: python entrypoint: /python/bin/fdk /function/func.py handler memory: 1024 timeout: 120 config: SYNIVERSE_TOKEN: <i><paste OCID secret_token here></i> SYNIVERSE_HOST: https://api.syniverse.com/scg-external-api/api/v1/messaging/message_requests SYNIVERSE_CHANNEL: <Syniverse API channel> SYNIVERSE_NAMESPACE: <OCI tenancy name> SYNIVERSE_BUCKET_NAME: synivese_phone SYNIVERSE_OBJECT_NAME: numbers.txtrequired.txt
fdk requests ocifile json di esempio di notifica
{"dedupeKey":"8303d9fb-e3b8-4d49-a888-64bef88f3dbd","title":"syniverse","body":"High CPU usage alert in \\"syniverse\\" instance","type":"OK_TO_FIRING","severity":"CRITICAL","timestampEpochMillis":1605622680000,"alarmMetaData":[{"id":"<i><paste OCID.alarm.oc1.phx.xxxxxxxxxxxxxxxxxxx></i>","status":"FIRING","severity":"CRITICAL","query":"CpuUtilization[1m]{resourceDisplayName = \\"instance-syniverse\\"}.max() > 70","totalMetricsFiring":1,"dimensions":[{"instancePoolId":"Default","resourceDisplayName":"instance-syniverse","faultDomain":"FAULT-DOMAIN-2","resourceId":"*<paste OCID here>*","availabilityDomain":"YVsm:PHX-AD-1","imageId":"<i><paste ocid1.image.oc1.phx.yyyyyyyyyyyyyyy></i>","region":"us-phoenix-1","shape":"VM.Standard.E3.Flex"}]}],"version":1.0}Ulteriori dettagli su Syniverse API sono disponibili qui.
-
-
Creare l'applicazione come indicato di seguito.
fn create app syniverse --annotation oracle.com/oci/subnetIds= '["ocid1.subnet.oc1.phx.aaaaxxxxxxxxxxx"]'Modificare il valore subnetIds per l'OCID della subnet.
-
Distribuire la funzione:
fn -v deploy --app syniverse -
Crea un criterio per la funzione Oracle.
-
Nel menu nell'angolo in alto a sinistra, selezionare Identità, quindi Criteri.
-
Fare clic su Crea criterio e utilizzare l'esempio riportato di seguito.
- Nome: oracle_funcgion_policy
- Istruzioni: in Policy Builder fare clic su Cutmomize(avanzata)
allow service FAAS to use virtual-network-family in tenancy allow service FAAS to read repos in tenancy
-
Creare un'istanza di calcolo
-
Nel menu nell'angolo in alto a sinistra, selezionare Computazione, quindi Istanze.
-
Fare clic su Crea istanza e utilizzare l'esempio seguente:
- Nome: istanza-syniverse
- Immagine: lascia il predefinito Oracle Linux 7.8 o selezionare Oracle Linux 6.10
- Modifica forma: selezionare la forma
- Configurazione della rete: selezionare la VCN, il compartimento della subnet e la subnet create
- Aggiungi chiavi SSH: aggiunge la chiave pubblica rsa ssh.
Crea un argomento e una sottoscrizione per Oracle Notification Service
-
Nel menu nell'angolo in alto a sinistra, selezionare Integrazione applicazioni, quindi Notifiche.
-
Fare clic su Crea argomento e creare un argomento con il nome Syniverse_SNS_Notification.
-
Scegliere l'argomento, fare clic su Crea sottoscrizione e utilizzare l'esempio riportato di seguito.
- Protocollo: funzione
- Compartimento delle funzioni: selezionare il compartimento syniverse_compartment creato.
- Applicazione funzioni: syniverse_notification
- Funzione: syniverse
Creazione di una definizione di allarme
-
Nel menu nell'angolo in alto a sinistra, selezionare Monitoraggio, quindi selezionare Definizioni di allarme.
-
Fare clic su Crea allarme e utilizzare l'esempio seguente:
- Nome allarme: utilizzo della CPU al 70%
- Data/ora allarme: critica
- Corpo di allarme: allarme OCI: syniverse. CpuUtilization: 70
-
In Descrizione metrica selezionare il compartimento syniverse_compartment, selezionare Spazio di nomi metrica come oci_computeagent, Nome metrica come CpuUtilization, Intervallo come 1m e Statistica come massimo
-
In Regola trigger selezionare Valore maggiore di 70
-
In Notifica selezionare Servizio di destinazione come servizio di notifica, selezionare il compartimento syniverse_compartment e selezionare Argomenti come Syniverse_SMS_Notification
Installare gli strumenti di stress per eseguire un test di stress nell'istanza di computazione.
-
SSH all'istanza di computazione:
ssh -i ~/path/for/ssh-key.key opc@your_machine_ip -
Installare stress:
sudo yum install stress -
Eseguire il comando per avviare lo stress: avvia il flusso demo end-to-end.
stress --cpu 20 --io 4 --vm 4 --vm-bytes 1024M --timeout 60s
Risoluzione dei problemi
In questa sezione viene illustrato come utilizzare un semplice avviso e-mail per monitorare lo stato della soluzione.
Funzione
Per ulteriori dettagli sulle funzioni, consulta la documentazione tecnica.
Crea un argomento e una sottoscrizione per il servizio di notifica
-
Nel menu 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: e-mail e aggiunta di una sottoscrizione al proprio indirizzo e-mail.
-
La sottoscrizione verrà creata con stato "In sospeso". Riceverai un'e-mail di conferma e dovrai fare clic sul link nell'e-mail per confermare il tuo indirizzo.
Controllare le metriche e creare una definizione di allarme dalle metriche
-
Dal menu nell'angolo in alto a sinistra, selezionare Servizi per sviluppatori, quindi selezionare Funzioni.
-
Scegliere l'applicazione e la funzione da monitorare
-
Dalla pagina Metriche, andare al grafico "Errori Funzioni", fare clic su Opzioni e creare un allarme su questa query
-
aggiungere un nome e in Notifica selezionare Servizio di destinazione come servizio di notifica, selezionare il compartimento your_compartment e selezionare Argomenti come my_function_status
Notifica
In questa sezione viene illustrato come utilizzare un semplice avviso e-mail per monitorare lo stato del servizio ONS (Oracle Notification Service).
Per ulteriori dettagli, consulta la documentazione tecnica.
Creare un argomento e una sottoscrizione per il servizio di notifica
-
Nel menu 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_ons_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". Riceverai un'e-mail di conferma e dovrai fare clic sul link nell'e-mail per confermare il tuo indirizzo.
Controllare le metriche e creare una definizione di allarme dalle metriche
-
Nel menu nell'angolo in alto a sinistra, selezionare Integrazione applicazioni, quindi selezionare Notifica.
-
Scegliere la notifica che si desidera monitorare e fare clic sul collegamento metriche in risorse nel riquadro di navigazione a sinistra
-
Dal grafico che si desidera aggiungere all'allarme, ad esempio "Conteggio messaggi non riusciti", fare clic su Opzioni e creare un allarme in questa query
-
aggiungere un nome e, in Notifica, selezionare Servizio di destinazione come servizio di notifica, selezionare il compartimento your_compartment e selezionare Argomenti come my_ons_status
Conclusione
Questa esercitazione descrive in che modo i clienti Oracle Cloud Infrastructure e Syniverse possono configurare una soluzione altamente scalabile con carichi di lavoro contenuti per creare e inviare SMS dagli avvisi di Oracle Cloud Infrastructure utilizzando Oracle Functions.
Riconoscimenti
Autore - Igor Aragao de Souza
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.
Integrate OCI alerts with Syniverse SMS API
F51373-01
December 2021
Copyright © 2021, Oracle and/or its affiliates.