feat: telegraf sectin

This commit is contained in:
2025-03-19 21:10:47 +01:00
parent 4f44cf5c0f
commit a4d9689e2d
3 changed files with 62 additions and 7 deletions

View File

@@ -600,7 +600,7 @@ Per verificare le affermazioni degli sviluppatori di PeerTube, abbiamo deciso di
\item Analizzare i dati raccolti per valutare le prestazioni del sistema P2P di PeerTube
\end{itemize}
\subsection{Stack tecnologico per i test}
\section{Stack tecnologico per i test}
Per i nostri test abbiamo utilizzato una combinazione di tecnologie open source per creare un sistema di test automatizzato che sfrutta le seguenti tecnologie:
@@ -655,7 +655,39 @@ Approfondendo il discordo del `networking', Docker mette a disposizione varti ti
\end{figure}
\cite{AzureFunctions} \cite{geeksforgeeksContainerizationUsing} \cite{geeksforgeeksDockerNetworking}
\subsection{Architettura del sistema di test}
\subsection{Telegraf}
Telegraf è un agente di raccolta di metriche open source sviluppato da InfluxData. È progettato per raccogliere, elaborare e inviare metriche da una varietà di sorgenti, tra cui sistemi operativi, database, applicazioni e dispositivi di rete.
\begin{figure}[H]
\centering
\includegraphics[width=300pt]{images/telegraf-architecture-diagram.png}
\caption{Architettura Telegraf.}
\end{figure}
Scritto in `Go', Telegraf è dodato di oltre 300 plugin di input, trasformazione e output di dati, che consentono di raccogliere metriche da una vasta gamma di sorgenti. Per sua natura, funziona come un pipeline di dati che può essere instradata attraverso diversi plugin per elaborare e aggregare le informazioni prima di raggiungere l'output finale.
Alcuni componenti principali di Telegraf includono:
\begin{itemize}
\item \textbf{Agent}: Il core del sistema, responsabile della raccolta e dell'elaborazione delle metriche dai plugin di input definiti e le invia ai plugin di output specificati, in base alla configurazione fornita.
\item \textbf{Input Plugins}: Raccolgono metriche da sorgenti come sistemi operativi, database, applicazioni e dispositivi di rete.
\item \textbf{Processor Plugins}: Elaborano e trasformano le metriche raccolte prima di inviarle all'output.
\item \textbf{Output Plugins}: Inoltrano le metriche elaborate a un sistema di monitoraggio o di archiviazione.
\item \textbf{Aggregator Plugins}: Aggregano le metriche raccolte per ridurre il volume dei dati.
\end{itemize}
La configurazione di Telegraf è definita da un file di configurazione `TOML' che definisce i plugin di input, processore e output da utilizzare, insieme a eventuali parametri aggiuntivi necessari per la raccolta e l'elaborazione delle metriche.
Viene spesso utilizzato affianco ad un database di tipo `time-series' come InfluxDB per l'archiviazione e la visualizzazione delle metriche raccolte, ma può essere integrato con una vasta gamma di sistemi di monitoraggio e analisi dei dati.\\
Una metrica `time-series' è una serie di dati indicizzati in sequenza rispetto al tempo. Un esempio è una sequenza di osservazioni o rilevazioni registrate allo scorrere del tempo. Vi sono due macrocategorie di time series:
\begin{itemize}
\item \textbf{univariate time series}: le osservazioni sono monodimensionali, ovvero: viene registrato un solo valore numerico allo scorrere del tempo.
\item \textbf{multivariate time series}: le osservazioni sono multidimensionali, ovvero, si registrano più valori numerici per un singolo istante di tempo.
\end{itemize}
Tipicamente, un `time-series' viene rappresentato con una struttura dati che registri un timestamp, che può essere di qualche tipo specifico per date, oppure un interocontenente uno `Unix timestamp'; oltre a questo contiene dati addizionali, che nella versione più semplice possono essere un unico valore numerico, ovvero losservazione registrata allo scorrere del tempo.
\cite{githubGitHubInfluxdatatelegraf} \cite{noauthor_telegraf_nodate} \cite{aiknowTimeSeries}
\section{Architettura del sistema di test}
Il nostro sistema di test è composto da:
@@ -666,15 +698,15 @@ Il nostro sistema di test è composto da:
\item Un database centralizzato per la raccolta e l'analisi dei dati
\end{itemize}
\section{Difficoltà incontrate e soluzioni}
\subsection{Difficoltà incontrate e soluzioni}
Durante lo sviluppo del sistema di test abbiamo affrontato diverse sfide:
\begin{itemize}
\item \textbf{Accesso alle metriche WebRTC}: Risolto sviluppando un'estensione Chrome personalizzata
\item \textbf{Sincronizzazione dei test}: Implementato un sistema di coordinamento basato su messaggi
\item \textbf{Limitazioni delle API di WebRTC}: Superato utilizzando tecniche di scraping avanzate
\item \textbf{Limitazioni delle API di Peertube}: Superato utilizzando tecniche di scraping con Selenium e Python
\item \textbf{Gestione delle variabili d'ambiente nell'estensione Chrome}: Risolto attraverso webpack e sostituzione dinamica
\item \textbf{Raccolta dei dati dei test su macchine virtuali distribuite}: Risolto utilizzando Telegraf e MongoDB
\end{itemize}
\section{Casi d'uso e scenari di test riprodotti}