Author: JirkaH Date: 2010-02-28 13:09:30 +0100 (Sun, 28 Feb 2010) New Revision: 1939 Added: others/dokumentace/technicalGuide/architecture/imgs/kiosk_munin.png Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex others/dokumentace/technicalGuide/architecture/2hardware.tex others/dokumentace/technicalGuide/architecture/3management.tex others/dokumentace/technicalGuide/architecture/6clientapp.tex others/dokumentace/technicalGuide/architecture/9tools.tex Log: architecture extended Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-28 12:08:05 UTC (rev 1938) +++ others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-28 12:09:30 UTC (rev 1939) @@ -27,7 +27,7 @@ %\renewcommand{\chaptermark}[1]{markboth{#1}{}} %\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} \fancyhf{} %delete the current section for header and footer - + \fancyhead[LE,RO]{\bfseries\thepage} \fancyhead[LO]{\bfseries\rightmark} \fancyhead[RE]{\bfseries\leftmark} Modified: others/dokumentace/technicalGuide/architecture/2hardware.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/2hardware.tex 2010-02-28 12:08:05 UTC (rev 1938) +++ others/dokumentace/technicalGuide/architecture/2hardware.tex 2010-02-28 12:09:30 UTC (rev 1939) @@ -11,8 +11,15 @@ \item \textbf{Cena} - jeden z nejdůležitějších faktorů. Na trhu existuje několik průmyslových PC splňující požadavky, jejich cena je však ve srovnaní s jinými řešeními až 5x vyšší. \end{itemize} -Z důvodu poměrně úzkého prostoru v kiosku pro počítač byl jako formát skříně zvolena racková skřín velikosti 1U s minimální hloubkou (TODO foto). To umožňuje jednoduchý přístup k celému PC a +Z důvodu poměrně úzkého prostoru v kiosku pro počítač byl jako formát skříně zvolena skřín velikosti 1U s minimální hloubkou (Obrázek \ref{kiosk_case}). To umožňuje jednoduchý přístup k celému PC a jeho rychlou případnou výměnu za jiný kus. + \begin{figure}[!h] + \label{kiosk_dbschema} + \begin{center} + \includegraphics[width=0.5\textwidth]{imgs/kiosk_case.png} + \caption{Počítačová skříň EMKO EM-161} + \end{center} + \end{figure} Vzhledem k výše uvedeným požadavkům se jako ideální formát základní desky ukázal formát Mini-ITX (rozměry 17x17cm). Tyto základní desky již umí nabídnout dostatečně výkonné integrované grafické karty s podporou akcelerace HDTV videa a s digitálnímy grafickými výstupy (i dvěma). Jistým problémem těchto základních desek je jejich dostupnost na trhu, zvláště v České @@ -24,22 +31,27 @@ \ref{cfengine}. V případě nutnosti lze však stále použít klasický pevný disk. Hlavně kvůli ceně bylo nakonec upuštěno od procesoru VIA, který je jinak ideálním procesorem pro toto použití. Místo něj byl použit klasický procesor Intel Celeron, který -v nečinosti není tepelně náročný. +v nečinosti není tepelně náročný. To umožňuje v budoucnu použít i např. procesory Core 2 Duo (mají stejnou patici), kdyby se ukázalo, že výkon zvoleného procesoru nestačí. Otázkou by pak +ale bylo chlazení tohoto procesoru. Dalším důležitým aspektem je také možnost ovládání ventilátorů. Zabrání se tak zbytečnému víření prachu v celé skříni. V zimním období jsou ventilátory dokonce kontraproduktivní, protože -víří ledový vzduch a počítač i obrazovku až příliš ochlazují. Z testů prototypu v mrazech -20$^\circ$ C byl rozdíl teploty uvnitř skříně mezi zapnutými a vypnutými větráky cca 10$^\circ$ C. +víří ledový vzduch a počítač i obrazovku až příliš ochlazují. Z testů prototypu v mrazech -20$^\circ$C byl rozdíl teploty uvnitř skříně mezi zapnutými a vypnutými větráky cca 10$^\circ$ C +(-5$^\circ$C respektive +5$^\circ$C). Bohužel se ukázalo, že zvolená základní deska v Linuxu nepodporuje ovládání ventilátorů pomocí utility \verb!lm_sensors!. Připojené ventilátory jsou +tedy ovládány jen pomocí BIOSu. Nakonec byla použita následující sestava: \begin{itemize} -\item \textbf{Základní deska} -\item \textbf{Procesor} -\item \textbf{Paměť} -\item \textbf{Pevný disk} -\item \textbf{Zdroj} +\item \textbf{Základní deska} - Intel Fly Creek DG45FC, chipset Intel G45, miniITX +\item \textbf{Grafická karta} - integrovaná Intel GMA X4500HD +\item \textbf{Procesor} - Intel Celeron 430 1,8GHz 800MHz +\item \textbf{Paměť} - 1GB RAM DDR2 800MHz +\item \textbf{Pevný disk} - USB Flash 4GB +\item \textbf{Zdroj} - Fortron FLEX 180W, 1U +\item \textbf{Skříň} - EMKO 1U EM-161 \end{itemize} -Sestava byla také vybrána z důvodu možného rozšíření kiosku na 2 obrazovky. K tomu ale zatím ještě nedošlo.\\ +Sestava byla také vybrána z důvodu možného rozšíření kiosku na 2 obrazovky pomocí digitálních výstupů. K tomu ale zatím ještě nedošlo.\\ Vývoj počítačů a hardwarů jde samožřejmě velmi rychle kupředu. Proto je téměř jisté, že se v další generaci kiosků hardware změní, nejspíše ve prospěch platformy Intel Atom s čipsetem nVidia ION. Modified: others/dokumentace/technicalGuide/architecture/3management.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/3management.tex 2010-02-28 12:08:05 UTC (rev 1938) +++ others/dokumentace/technicalGuide/architecture/3management.tex 2010-02-28 12:09:30 UTC (rev 1939) @@ -1,4 +1,4 @@ -\chapter{NEsoftware} +\chapter{Správa a monitorování} \section{Správa}\label{management} Jak vyplývá z požadavků uvedených v \textit{Analýze}, je správa potenciálně velkého množství kiosků velmi důležitým aspektem projektu. Bylo nutné vybrat @@ -19,7 +19,7 @@ \item \textbf{Cfengine} - je léty ověřený de-facto standard na poli nástrojů pro správu konfigurací serverů. Oproti Quattoru se jendá o jednodušší řešení. Jedntolivé konfigurace jsou ukládány v textových souborech, nevyžaduje na klientech (krom samotného klienta Cfenginu). Nevýhodou může být chybějící podpora různých oprávnění uživatelů, V rámci projektu \cite{lcg} je používán v největším vědeckém výpočetním - centru v České republice ve Fyzikálním ústavu Akademie Věd\cite{TODO}. Více informací je k dispozici na \cite{cfengine}. + centru v České republice ve Fyzikálním ústavu Akademie Věd. Více informací je k dispozici na \cite{cfengine}. \item \textbf{Puppet} - je svým zaměřením podobný nástroju Cfengine. Jeho výhodou je vyšší míra abstrakce popisovaných nastavení - lze např. říci ``přidej uživatele Alice'' a není nutno definovat, že je nutné jej zapsat do souboru /etc/passwd apod. Více informací je k dispozici na \cite{puppet}. \end{itemize} @@ -54,20 +54,31 @@ podpora tvorba grafů monitorovacích metrik v reálnem čase. Dále je možné vytvořit poměrně kompletní scénáře monitorování služeb, kdy jde např. opravdu ověřit, že se na dané adrese zobrazuje daná stránka a lze se například přihlásit do systému. - Nevýhodou je pak nepříliš velká uživatelská přívětivost jinak velmi komplexního webového rozhraní. Dále, dle zkušeností s pilotním provozem v rámci tohoto projektu, - také poměrně velké výpočetní nároky na server v poměru na počet monitorovaných metrik. + Nevýhodou je pak nepříliš velká uživatelská přívětivost jinak velmi komplexního webového rozhraní. \item \textbf{Cacti} - nástroj určen především k SNMP monitorování síťových zařízení, lze však použít i k monitorování serverů. Cacti využívá jako skladiště dat databázi RRD, z čehož těží při kreslení grafů jednotlivých metrik. Problémem jsou však malé možnosti konfigurace (např. změna monitorovacího intervalu) a špatná podpora systému varování při překročení nastavených prahů. \item \textbf{Nagios} - jedná se o známé standardní monitorovací řešení s dlouhou historií. Naprosto odpovídá všem požadavkům, navíc existuje velké množství rozšíření, které ještě vylepšují - jeho funkčnost. Nagios také v základní instalaci nekreslí grafy jednotlivých metrik - existuje však celá řada nástaveb, které tento problém řeší. + jeho funkčnost. Nagios v základní instalaci nekreslí grafy jednotlivých metrik - existuje však celá řada nástaveb, které tento problém řeší. \end{itemize} -Nejenom vzhledem ke zkušenostem autorů se systémem Nagios, se stal finálním řešením pro monitoring. V rámci projektu bylo nasazeno i monitorování pomocí Zabbixu, v praxi se však ukázalo jako -ménně použitelné. +V rámci projektu bylo nasazeno řešení využívající Zabbix. Ukázalo se, že až na neintuitivní uživatelské rozhraní a velké množství monitorovaných služeb v základní instalaci je toto +řešení funkční a použitelné.\\ -TODO : popsat jeste nejak co vse se pres nagios kontroluje + \begin{figure}[!h] + \label{kiosk_dbschema} + \begin{center} + \includegraphics[width=0.5\textwidth]{imgs/kiosk_munin.png} + \caption{Teplota uvnitř reálného kiosku. Kiosek byl na začátku února vypnut.} + \end{center} + \end{figure} + +V rámci první fáze projektu bylo nasazeno také monitorování pomocí programu Munin \cite{munin}. Jedná se o nástavbu nad utilitou RRDTool, která umožňuje velmi jednoduché psaní dalších +pluginů. Nástroj primárně neslouží k upozorňování na chyby, spíše ke grafickému zobrazení měřených metrik. +Takto jsou měřeny například reálné teploty uvnitř kiosků. Nevýhodou Muninu je nemožnost rozložení zátěže na více serverů - v praxi je možné z +jednoho serveru kontrolovat 200-300 stojů. Poté již bude nutné přepsat vlastní měření pomocí Zabbixu. + \section{\label{security}Bezpečnost} Dalším požadavkem na projekt byla bezpečnost komunikace mezi kioskem a serverem/ Také vzhledem k požadavku možnosti přímého připojení na daný uzel, který Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-28 12:08:05 UTC (rev 1938) +++ others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-28 12:09:30 UTC (rev 1939) @@ -12,16 +12,18 @@ OpenGL atd.), perfektní dokumentaci, počtu projektů postavených nad tímto frameworkem a možnosti placené podpory. V neposlední řadě je plusem také komerční vývoj tohoto produktu. \section{Podporované formáty} - Klientská aplikace podporuje zobrazování následujících typů dat, jednotlivým bodlm se pak věnují příslušné podkapitoly. + Klientská aplikace podporuje zobrazování následujících typů dat, jednotlivým bodům se pak věnují příslušné podkapitoly. \begin{itemize} \item \textbf{PDF dokumenty} + \item \textbf{PDF prezentace} \item \textbf{Video} \item \textbf{Statický text} \item \textbf{Dynamický text} \end{itemize} - Součástí zadaní a analýzy projektu bylo i zobrazování webových stránek. Jejich implementace se bohužel s časových důvodů nestihla. Byla ale alespoň rozmyšleno, jakým způsobem a jakou - knihovnou bude zobrazování webových stránek implementováno, o čemž pojednává kapitola \ref{kiosk_web}. + Součástí zadaní a analýzy projektu bylo i zobrazování webových stránek. Jejich zobrazovaní však byla věnována nejmenší priorita. I přestože se implementace bohužel z časových důvodů + nestihla, byla ale alespoň rozmyšleno, jakým způsobem a jakou knihovnou bude zobrazování webových stránek implementováno. O důvodech, proč bylo zobrazování webových stránek odsunuto pojednává +sekce \ref{kiosk_web} \subsection{PDF dokumenty \label{pdf_doc}} \subsubsection{Volba knihovny} @@ -96,7 +98,15 @@ \subsubsection{Volba knihovny} Jedním z požadavkům na knihovnu byla podpora co největšího počtu formátů videí. Vzhledem k použítí frameworku Qt byla volba knihovny pro tuto práci vcelku jednoduchá. Součástí frameworku je knihovna Phonon, která je určena právě pro přehrávání multimedií. Ta naprosto splňuje dané požadavky, navíc je také multiplatformní. Na linuxových systémech využívá knihovnu \verb!gstreamer! \cite{gstreamer} (s licencí LGPL) a - její pluginy. Po instalaci vhodných balíků tak lze přehrávat vpodstatě všechny formáty videí (v nastavení závislostí programu jsou tyto knihovny TODO\ref{TODO_ref}). + její pluginy. Po instalaci vhodných balíků tak lze přehrávat vpodstatě všechny formáty videí. V nastavení závislostí balíčku jsou tyto podporující knihovny: + \begin{verbatim} gstreamer0.10-ffmpeg + gstreamer0.10-pitfdll + gstreamer0.10-plugins-base + gstreamer0.10-plugins-good + gstreamer0.10-plugins-ugly + gstreamer0.10-x + libgstreamer-plugins-base0.10-0 + w32codecs\end{verbatim} Veškeré ovládání přehrávače je vzhledem k jeho vícevláknosti asynchronní. To na jednu stranu umožňuje zvýšit výkon a odezvu výsledné aplikace, na druhou stranu vyžaduje více pozornosti při implementaci. @@ -116,16 +126,33 @@ \ref{appendix_documentConfig}). To lze využít pro zobrazení daného snímku v náhledu, když se video nepřehrává. Dále lze nastavit maximální velikost zvětšeného přehrávače podobně jako u PDF dokumentů pomocí hlavičkového souboru. - \subsection{Webové stránky} - Ačkoliv funkcionalita zobrazování webových stránek nebyla naimplementována, uvádíme alespoň popis budoucího řešení. - \subsubsection{Online/Offline zobrazování} + \subsection{Webové stránky\label{kiosk_web}} + Ačkoliv funkcionalita zobrazování webových stránek nebyla naimplementována, uvádíme alespoň popis budoucího řešení. Důvody minimální priority podpory tohoto formáty byly následující. + \begin{itemize} + \item \textbf{Ovládání} - kiosek neobsahuje dotykovou obrazovku, jen 10 tlačítek. Navigovat se po stránce bez možnosti použít myš není příliš uživatelsky přívětivé. + \item \textbf{Připojení k internetu} - předpokládá se, že kiosky nebudou připojeny ke stabilnímu přípojení k internetu. Vzhledem k požadavku na fungování i bez dočasného připojení + by bylo nutné periodicky stránky ukládat na disk, což může být při použití USB flash disku představovat problém, viz detailnější rozbor problému níže. + \end{itemize} \subsubsection{Volba knihovny} - Vzhledem k použití frameworku Qt byla volba knihovny poměrně jednoznačná. Použita byla knihovna QtWebkit založena na knihovně \cite{webkit}, která je mimo jiné základem prohlížeče Chrome či - Konqueror a umožňuje zobrazování webových stránek včetně javascriptu a technologie flash. + Vzhledem k použití frameworku Qt byla volba knihovny poměrně jednoznačná. Použita byla knihovna QtWebKit založena na knihovně WebKit\cite{webkit}, která je mimo jiné základem prohlížeče Chrome či + Konqueror a umožňuje zobrazování webových stránek včetně javascriptu a technologie Flash. Knihovna umožňuje renderování obsahu stránky do obrázku, dále pak klasické interaktivní + zobrazování. + + \subsubsection{Online/Offline zobrazování} + Zobrazování všech typů dokumentů je navrženo tak, aby fungovalo i při výpadku internetu. V případě webových stránek to znamená periodické stahování stránek a jejich ukládání na disk. + V případě, že je internet dostupný, muhou být stránky zobrazeny přímo ze zdroje, v opačném případě pak stránku načíst z disku. V žádném případě by nemělo dojít k zobrazení chyby + nedostupnosti dané stránky. To se může stát jen pokud od naplánovaní dané stránky stránka opravdu nebyla dostupná. I tak ale bude zobrazeno vlastní upozornění, místo např. chyby 404. + \subsubsection{Zobrazení v náhledech a zvětšování} + Vzhledem k tomu, že na kiosku nebude možné následovat odkazy na stránkách, mohly by být stránky zobrazeny jako obrázky. Toho se bude využívat v náhledech, kdy bude stránka typicky + omezena šířkou pozice. V náhledu tedy bude zobrazen obrázek stránky, kde půjde vidět celá stránka na šířku, na délku však typicky nebude zobrazena celá. Po zvětšení se zobrazování + přepne do interaktivního režimu (pokud bude dostupné připojení k internetu), kde se již objeví vertikální posuvních a stránka bude zobrazena v interaktivním režimu, tj. budou + se například přehrávat reklamy apod. - \subsubsection{Možnosti nastavení \label{video_settings}} + \subsubsection{Možnosti nastavení} + Půjde nastavit jak často se má vyrenderovaná stránka ukládat na disk (např. každou hodinu), a jak často se má obnovovat (např. každých 5minut). + \section{Konfigurační soubory\label{kiosk_conf_files}} Klientská aplikace obsahuje několik konfiguračních souborů ve formátu XML (formáty dat všech souborů jsou ve formě XSD popsány v \ref{xsd}). Jednotlivé soubory jsou detailněji vysvětleny níže. Kromě jedné části @@ -137,7 +164,7 @@ \subsection{appConfig} Jde o konfigurační soubor aplikace, ve kterém je uvedeno ID kiosku a adresy a periody pro stažení dalších konfiguračních souborů. Je zřejmé, že pro správnou funkci aplikace musí být alespoň část udájů staticky uložena (jinak by program nevěděl, kde má poptávat další konfiguraci). Proto je tento soubor částečně duplikován. Soubor \verb!appconfig.xml.static! může obsahovat všechny - informace povolené v appConfigu, musí však minimálně obsahovat informaci o ID kiosku a adrese pro stažení kompletního AppConfigu. Do souboru \verb!appconfig.xml! se pak ukládá kompletní + informace povolené v \verb!appConfigu!, musí však minimálně obsahovat informaci o ID kiosku a adrese pro stažení kompletního \verb!appConfigu!. Do souboru \verb!appconfig.xml! se pak ukládá kompletní stažená konfigurace. \subsection{categoryConfig} Tento soubor obsahuje informace o počtu, názvu kategorií, jejím pořadí a definovaném počtu a rozložení pozic. Stahování probíhá do souboru \verb!category.xml!. @@ -159,7 +186,7 @@ \item zvětšení dokumentu a jeho zmenšení na původní rozměr (\verb!detail!) \end{itemize} - Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF dokument!, \verb!video! a \ref{TODO_warning}: další dokumenty. + Tyto události jsou zaznamenávány jen pro typy dokumentů \verb!PDF dokument!, \verb!PDF prezentace! a \verb!video!. \subsubsection{Uchovávání statistik} Z požadavků na robustnost uchovávání statistik na kiosku vyplynul požadavek statistiky nejprve @@ -239,6 +266,7 @@ \subsection{Stahování souborů} Stahování souborů probíhá do zvolené adresáře definovém v \textit{appconfigu}. Stahování probíhá nejdříve do dočasného souboru, který je po korektním stažení přejmenován. Ke stahování souboru může dojít dvěma způsoby. Dopředným stahováním a stahováním na výzvu při žádosti o zobrazení dokumentu, který není ještě stažen. + Při načítání souborů je kontrolován jejich kontrolní součet pomocí algoritmu MD5. Pokud je součet jiný, než tvrdí server, soubor je stažen znovu. \subsubsection{Dopředné stahování} Aplikace si dle nastavení v \textit{fileCacheConfigu} stáhne seznam všech souborů, které bude potřebovat zobrazit v následujících 24 hodinách. Tyto soubory pak postupně stahuje (respektive Modified: others/dokumentace/technicalGuide/architecture/9tools.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-28 12:08:05 UTC (rev 1938) +++ others/dokumentace/technicalGuide/architecture/9tools.tex 2010-02-28 12:09:30 UTC (rev 1939) @@ -33,6 +33,7 @@ \bibitem{puppet} \textbf{Puppet, configuration management tool} \url{http://reductivelabs.com/products/puppet/} \bibitem{cfengine} \textbf{Cfengine, configuration management tool} \url{http://www.cfengine.org/} \bibitem{quattor} \textbf{Quattor, configuration management tool} \url{http://sourceforge.net/apps/mediawiki/quattor/} + \bibitem{munin} \textbf{Munin} \url{http://munin.projects.linpro.no/} \bibitem{openvpn} \textbf{OpenVPN} \url{http://openvpn.net/} \bibitem{xpdf} \textbf{Xpdf} \url{http://www.foolabs.com/xpdf/} \bibitem{poppler} \textbf{Poppler} \url{http://poppler.freedesktop.org/} Added: others/dokumentace/technicalGuide/architecture/imgs/kiosk_munin.png =================================================================== (Binary files differ) Property changes on: others/dokumentace/technicalGuide/architecture/imgs/kiosk_munin.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream