Resolve #4 (wörk)

master
Clemens Klug 2018-06-02 13:08:41 +02:00
parent d34c9fc4bc
commit dc89b1e5fc
7 changed files with 48 additions and 74 deletions

View File

@ -27,3 +27,20 @@ New components
\item Interface (Configuration)
\item Cross-game comparisons
\end{itemize}
\section{Requirements}\label{sec:require} %TODO
Wait, what did I want to do again?
\begin{itemize}
\item Per-game importer (Web client, File loader, …)
\item Analyzer modules (number crunching)
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
\item Interface (Configuration)
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Cross-game comparisons
\item Integration of external data (questionnaire results)
\end{itemize}

View File

@ -1,21 +1,9 @@
\section{Requirements}
Wait, what did I want to do again?
\begin{itemize}
\item Per-game importer (Web client, File loader, …)
\item Analyzer modules (number crunching)
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
\item Interface (Configuration)
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Cross-game comparisons
\item Integration of external data (questionnaire results)
\end{itemize}
With an administrative background, the first approach to log processing which comes to mind are the various log processing frameworks.
The following chapter \autoref{sec:logproc} takes a dive into this world and evaluates the feasability of two such system for the scope of this thesis.
Based on the findings, an alternative approach is then outlined in \autoref{sec:alternative-design}.
\section{Evaluating log processing solutions}
\section{Evaluating log processing solutions}\label{sec:logproc}
This chapter looks into the possibilities of existing log processing solutions.
By example, Kibana with an Elastic Search backend and Grafana with an InfluxDB will be evaluated.
@ -41,10 +29,9 @@ Grafana is a solution to analyze, explore, and visualize various source of time
There exist plugins for nearly any storage and collection backend for metrics\furl{https://grafana.com/plugins?type=datasource}.
The different backends are available through a unified user interface shown in \autoref{img:grafana}.
Spatial resolution suffers under similar conditions compared to Kibana, with even lower spatial resolution as shown in \uatoref{img:grafana-spatial}.
Spatial resolution suffers under similar conditions compared to Kibana.
\autoref{img:kibana} shows by example the restrictions by the query language/query editing interfaces in the domain of weather stations.
\image{\textwidth}{grafana-spatial}{Spatial resolution in Grafana}{img:grafana-spatial}
\image{\textwidth}{grafana-metrics}{Configuring a graph in Grafana}{img:grafana}
@ -55,10 +42,11 @@ The privacy concerns vital in web monitoring prohibit detailed spatial analyzes,
Regarding the specified use cases, expecially the non-expert users benefit from a simple to use interface.
The default Kibana worchbench does not qualify for this, a custom interface could improve the situation.
Grafana does have support for shared dashboards with a fixed set of data, %TODO
Grafana does have support for shared dashboards with a fixed set of data, however precise spatial support is still lacking.
A third party plugin recently does provide such support\furl{https://github.com/CitiLogics/citilogics-geoloop-panel}, unfortunately it missed the timeframe during the evaluation of grafana for this thesis.
Such a plugin would still be a possibly fragile component given the fast pace of web development shown by these kind of projects.
\section{Architectural Design}
\section{Architectural Design}\label{sec:alternative-design}
\subsection{Overview}
While the development of a custom stack requires a lot of infrastructural work to get the project running, the learnings above give points to build a custom solution as a feasible alternative:
\begin{itemize}
@ -152,35 +140,3 @@ By acting like any normal client, the framework can avoid obstacles like CORS/XS
The independence to user interfaces, mainly the web interface, allows scalability through load-balancing with mulitple API workers.
Expert users with special requirements can embed the framework in projects without pulling in large amounts of dependencies for user interfaces or games/game servers.
\begin{comment}
\subsection{old}
Game independance:
\begin{itemize}
\item log importer/transformer necessary
\end{itemize}
\begin{itemize}
\item Based on map-reduce
\item Map: Analysis
\begin{itemize}
\item Iterate Log entries
\item Feed log entry through analyzer queue
\begin{itemize}
\item Augment entries
\item Filter entries
\item Sequential order
\end{itemize}
\end{itemize}
\item Reduce: Collect summaries from analyzers
\begin{itemize}
\item Rendering
\item Post-processing, Comparison, …
\end{itemize}
\item standalone (indep. of any game)
\item own client for game server (due to CORS/XSS prevention prohibiting shared use of game server assets in other host)
\item API for integration
\item allow load distribution
\end{itemize}
\end{comment}

View File

@ -228,19 +228,3 @@ When a scenario with high load occurs, this definition allows for simple scaling
To create more celery worker nodes, issuing the command \textit{docker-compose scale worker=8} suffices to create 8 worker containers running in parallel.
\image{\textwidth}{architecture.pdf}{Service composition overview}{img:arch}
\subsection{Examples} %TODO ?!?!
Configuration \& results
%\twofigures{0.5}{../../PresTeX/images/oeb-kml}{Analyzer configuration}{img:oebkml}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}{Example: Generate KML tracks (BioDiv2Go; Oberelsbach2016)}{fig:oeb2016}
ActivityMapper
\image{.7\textwidth}{../../PresTeX/images/track-fi}{Combined screen activity and spatial progress}{img:trackfi}
Graphs
\image{\textwidth}{../../PresTeX/images/speed}{Speed distribution}{img:speed}
\image{.9\textwidth}{../../PresTeX/images/time-rel}{Time distribution}{img:time}

View File

@ -15,8 +15,22 @@
\lstinputlisting[language=yaml,caption={Dockerfile for Biogames server},label=code:bd2d]{code/biogames/Dockerfile}
\lstinputlisting[language=bash,caption={Entrypoint for Biogames docker container},label=code:bd2e]{code/biogames/start.sh}
\subsection{Traefik reverse proxy}\label{app:traefik}
\lstinputlisting[language=yaml,caption={Dockerfile for Traefik reverse proxy},label=code:bd2t]{code/traefik.yml}
\lstinputlisting[language=toml,caption={Traefik reverse proxy configuration},label=code:bd2toml]{code/traefik.toml}
\lstinputlisting[language=yaml,caption={Docker-compose file for Traefik reverse proxy},label=code:bd2t]{code/traefik.yml}
\lstinputlisting[language=yaml,caption={Traefik reverse proxy configuration (traefik.toml)},label=code:bd2toml]{code/traefik.toml}
\subsection{Geogame Log Analysis project setup}\label{app:dcs}
\lstinputlisting[language=yaml,caption={Docker-compose file for Geogame Log Analysis project},label=code:gglap]{code/project.yml}
\lstinputlisting[language=yaml,caption={Docker-compose file for Geogame Log Analysis project},label=code:gglap]{code/project.yml}
\section{TODO}
\subsection{Examples} %TODO ?!?!
Configuration \& results
%\twofigures{0.5}{../../PresTeX/images/oeb-kml}{Analyzer configuration}{img:oebkml}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}{Example: Generate KML tracks (BioDiv2Go; Oberelsbach2016)}{fig:oeb2016}
ActivityMapper
\image{.7\textwidth}{../../PresTeX/images/track-fi}{Combined screen activity and spatial progress}{img:trackfi}
Graphs
\image{\textwidth}{../../PresTeX/images/speed}{Speed distribution}{img:speed}
\image{.9\textwidth}{../../PresTeX/images/time-rel}{Time distribution}{img:time}

View File

@ -7,10 +7,10 @@
\chapter{forschungsstand}
\input{content/2-state-of-the-art}
\chapter{lösungsansatz}
\chapter{Solution approach}\label{sec:solution}
\input{content/3-solution}
\chapter{umsetzung}
\chapter{Implementation}
\input{content/4-implementation}
\chapter{evaluierung}\label{sec:eval}

View File

@ -9,4 +9,5 @@ t [label="HTTP frontend\nTraefik"];
s -- db [];
c -- db [label="Internal network"];
t -- s [label=" External network,\nlabel"];
s -- c [label="Shared volume"];
}

View File

@ -50,6 +50,7 @@
\selectlanguage{english}
\setstretch{1.1}
%% Titelseite
\hypersetup{pageanchor=false}
\maketitle
%% Seitenlayout
@ -75,6 +76,7 @@
%\printnomenclature %TODO
\cleardoubleemptypage
\hypersetup{pageanchor=true}
\pagestyle{scrheadings}
\pagenumbering{arabic}
\setcounter{page}{1}