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 Interface (Configuration)
\item Cross-game comparisons \item Cross-game comparisons
\end{itemize} \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 @@
With an administrative background, the first approach to log processing which comes to mind are the various log processing frameworks.
\section{Requirements} 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.
Wait, what did I want to do again? Based on the findings, an alternative approach is then outlined in \autoref{sec:alternative-design}.
\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}
\section{Evaluating log processing solutions} \section{Evaluating log processing solutions}\label{sec:logproc}
This chapter looks into the possibilities of existing log processing solutions. 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. 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}. 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}. 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. \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} \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. 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. 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}\label{sec:alternative-design}
\section{Architectural Design}
\subsection{Overview} \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: 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} \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. 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. 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. 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} \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=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} \lstinputlisting[language=bash,caption={Entrypoint for Biogames docker container},label=code:bd2e]{code/biogames/start.sh}
\subsection{Traefik reverse proxy}\label{app:traefik} \subsection{Traefik reverse proxy}\label{app:traefik}
\lstinputlisting[language=yaml,caption={Dockerfile for Traefik reverse proxy},label=code:bd2t]{code/traefik.yml} \lstinputlisting[language=yaml,caption={Docker-compose file 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={Traefik reverse proxy configuration (traefik.toml)},label=code:bd2toml]{code/traefik.toml}
\subsection{Geogame Log Analysis project setup}\label{app:dcs} \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} \chapter{forschungsstand}
\input{content/2-state-of-the-art} \input{content/2-state-of-the-art}
\chapter{lösungsansatz} \chapter{Solution approach}\label{sec:solution}
\input{content/3-solution} \input{content/3-solution}
\chapter{umsetzung} \chapter{Implementation}
\input{content/4-implementation} \input{content/4-implementation}
\chapter{evaluierung}\label{sec:eval} \chapter{evaluierung}\label{sec:eval}

View File

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

View File

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