Metriche delle applicazioni da Application Cloud

Loggregator

Il Loggregator di Cloud Foundry è il sistema dietro le quinte responsabile della raccolta e dello streaming dei log e delle metriche delle applicazioni degli utenti. Raccoglie e trasmette anche le metriche degli stessi componenti di Cloud Foundry e i dati di stato delle altre macchine virtuali della piattaforma. Con Loggregator, puoi trasmettere questi log e queste metriche sia tramite la funzione Loggregator CF-CLI-Plugins(apre una nuova finestra) o tramite vari servizi e consumatori di terze parti, ad esempio il cloud controller (API), un Firehose Nozzle o un endpoint della cache dei log.

Loggregator utilizza un'architettura a microservizi che comprende componenti per la raccolta, l'archiviazione e l'inoltro di log e metriche:

Log-Cache

Di tutti i componenti che costituiscono il sistema Loggregator, la cache dei log è il più interessante per il nostro caso d'uso.

La cache dei log è un archivio in memoria che ti permette di visualizzare i log e le metriche di Loggregator in un termine. La cache dei registri include endpoint API e un CF-CLI-Plugin(apre una nuova finestra) per interrogare e filtrare i log e le metriche. Gli endpoint dell'API Log Cache sono disponibili per impostazione predefinita. Puoi trovare maggiori informazioni sull'utilizzo dell'API Log Cache direttamente su GitHub all'indirizzo Log-Cache(apre una nuova finestra).

Reverse Log Proxy

Il Reverse Log Proxy (RLP) di Cloud Foundry è utilizzato per raccogliere i log e le metriche dai doublers e inoltrarli alla cache dei log. Dispone anche di un gateway RLP che consente ai client esterni (cioè tu o la tua applicazione) di connettersi ad esso e di trasmettere buste di ingest (log e metriche) dall'API Loggregator.Questo endpoint API è solitamente disponibile sotto la voce "log-stream". disponibile.Per l'AppCloud di Swisscom, ad esempio, si tratta di "https://log-stream.lyra-836.appcloud.swisscom.com" (e "https://log-stream.scapp-console.swisscom.com" per l'AppCloud interno).

Prometheus?

Prometheus(apre una nuova finestra) è un sistema di monitoraggio degli eventi e di allerta. Registra metriche in tempo reale nel proprio database di serie temporali con query flessibili e avvisi in tempo reale, basati su un modello PULL in cui le metriche vengono interrogate da endpoint remoti "/metrics" disponibili. Viene spesso utilizzato come sistema di monitoraggio principale per le applicazioni cloud native.

Panoramica dell'architettura:

App metrics

Prometheus e Log-Cache sono fantastici, ma come faccio a farli lavorare insieme?

Prometheus-Exporter

Poiché Prometheus si basa su un modello PULL, devi in qualche modo fornire a Prometheus un endpoint "/metrics" che possa essere interrogato. È qui che si trova il file"paas-prometheus-exporter(apre una nuova finestra)" in gioco.

Si tratta di una semplice applicazione che puoi inviare a Cloud Foundry. Si connette quindi all'API per rilevare automaticamente tutte le tue app, raccoglie le loro metriche da Loggregator / Log-Cache e le fornisce a un endpoint "/metrics" compatibile con Prometheus.Se sei uno sviluppatore Golang, puoi usare il programma incluso go-loggregator-Bibliothek(apre una nuova finestra), con il quale puoi visualizzare i log e le metriche di Cloud Foundry (vedi Beispiele(apre una nuova finestra)) tramite il reverse log proxy, scrivi semplicemente la tua applicazione che lo fa.

Per prima cosa, devi creare un nuovo utente tecnico che verrà utilizzato tramite l'interfaccia utente del portale AppCloud. Puoi quindi assegnare i ruoli OrgAuditor e SpaceAuditor a questo nuovo utente per tutte le organizzazioni e/o gli spazi da cui vuoi che raccolga le metriche dell'app.

Una volta pubblicata, l'app esportatrice rileverà automaticamente tutte le altre app di queste organizzazioni/stanze e raccoglierà le loro informazioni sulle metriche dalla cache dei log per presentartele tramite il suo endpoint /metrics.Puoi quindi configurare Prometheus per recuperare le metriche da lì. Un esempio di manifest.yml e le istruzioni su come spingere/configurare l'app si trovano nel file readme. 

Le seguenti metriche vengono esportate per ogni istanza dell'applicazione:

Name Type Description
cpu gauge CPU utilisation in percent (0-100)
disk_bytes gauge Disk usage in bytes
disk_utilization gauge Disk utilisation in percent (0-100)
memory_bytes gauge Memory usage in bytes
memory_utilization gauge Memory utilisation in percent (0-100)
crash counter Increased by one if the application crashed for any reason
requests counter Number of requests processed broken down by status_range label
response_time histogram Timing of processed requests broken down by status_range label

Ora creiamo una configurazione di prova con Prometheus e Grafana nell'appCloud per vedere come può essere utilizzata.Per prima cosa, prepariamo un file di configurazione per Prometheus:

E poi eseguirlo localmente in un contenitore Docker:

Ora possiamo accedere all'interfaccia utente di Prometheus e verificare che il nostro obiettivo di scraping funzioni correttamente:

Per verificare che ora stiamo davvero effettuando lo scraping delle metriche delle nostre app e che stiamo ottenendo dati in tempo reale da Cloud Foundry, possiamo interrogare le metriche della CPU in Prometheus:

Success!??

Ora abbiamo una configurazione di Prometheus funzionante in cui la nostra app Prometheus Exporter è responsabile della raccolta delle metriche dell'applicazione e dell'invio a Prometheus tramite il suo endpoint /metrics; ora possiamo anche pensare di creare splendide dashboard con Grafana o di attivare gli avvisi con Prometheus Alert Manager.

Managed Prometheus/Grafana?

Se sei un cliente interno di AppCloud di Swisscom, ti consigliamo di utilizzare la piattaforma CoMo (Continuous Monitoring, Wiki-Link(apre una nuova finestra)) e da lì prendi il tuo Prometheus/Grafana gestito.

Fabio Berchtold

Fabio Berchtold

Senior Cloud Engineer

Altri articoli getIT

Pronti per Swisscom

Trova il posto di lavoro o il percorso di carriera che fa per te. Dove dare il tuo contributo e crescere professionalmente.

Ciò che tu fai, è ciò che siamo.

Vai ai percorsi di carriera

Vai alle posizioni vacanti cibersicurezza