\documentclass{beamer}

%\usetheme{Warsaw}                                                                       
%\usetheme{Dresden}                                                                      
\usetheme{Berlin}
\usepackage[russian]{babel}
\usepackage[utf8]{inputenc}

\usepackage{url}
\usepackage{amssymb}

%\setbeamercovered{transparent}                                                          

\title{Система мониторинга состояния работоспособности сложных систем:
  перспективы развития}
\author{Шрамов П.А.}
\institute{
 Московский Государственный Университет им.~М.В.~Ломоносова,\\
 Институт Механики МГУ}


\begin{document}


\frame{
 \titlepage
}

\section{Текущее положение}
\begin{frame}
  \frametitle{Текущее положение}
  \begin{block}{Недостатки существующих систем}
    \vskip -.5em
    \begin{itemize}
      \item Сильно привязаны к какой-то предметной области.
      \item В большинстве своем тяжеловесны.
      \item Имеют свою реализацию коллектора.
      \item Ограниченные возможности обработки зависимостей.
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Пожелания к новой}
    \vskip -.5em
    \begin{itemize}
      \item Обобщенная предметная область.
      \item Легковесность.
      \item Работа с разными коллекторными системами.
      \item Иерархическая или распределенная установки.
    \end{itemize}
  \end{block}
\end{frame}

\section{Пути развития}
\begin{frame}
  \frametitle{Коллекторные системы}
  \begin{block}{Что это такое?}
    \vskip -.5em
  \end{block}
  \begin{block}{Дублирование}
    \vskip -.5em
    \begin{itemize}
      \item утяжеление системы
      \item лишняя работа в налаженых структурах
      \item сложность интеграции с имеющимеся системами
    \end{itemize}
  \end{block}
  \medskip
  \begin{block}{Поставщики информации}
    \vskip -.5em
    \begin{itemize}
      \item кластерные системы: \texttt{Ganglia}, \texttt{MDS}, \ldots
      \item системы общего назначения: \texttt{collectd}, \texttt{cacti}, \ldots
      \item специальные системы, созданные под конкретную задачу
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Ограниченая предметная область}
  \begin{block}{Сетевой мониторинг}
    \begin{itemize}
    \item устоявшийся набор понятий --- сервисы, узлы, порты, \ldots
    \item сложность расширения
    \end{itemize}
  \end{block}
  \medskip
  \begin{block}{Абстрактные понятия}
    \begin{itemize}
      \item оперировать лишь абстрактными понятиями: <<работает>>, <<не
        работает>>, <<недоступно>>, \ldots
      \item возможность задавать функции преобразования
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Децентрализованные структуры}
  \begin{block}{Иерархический мониторинг}
    Уровни детализации:
    \begin{itemize}
    \item уровень узла --- диск, температура, \ldots;
    \item уровень сети --- отдельные узлы, сетевое оборудование;
    \item верхний уровень --- подс\'{е}ти, логические компоненты.
    \end{itemize}
  \end{block}
  \begin{block}{Мета-планирование}
    Сбор и обработка информации:
    \begin{itemize}
    \item от удаленного кластера;
    \item о работоспособности каналов связи;
    \item из профиля системы.
    \end{itemize}
  \end{block}
\end{frame}

\section{Гипотезы}
\begin{frame}
  \frametitle{Гипотезы}
  \begin{block}{Человек + Система мониторинга}
    \begin{itemize}
    \item система может сообщить о случившемся сбое;
    \item оператор может предположить, что стало его причиной;
    \item гипотезы выдвинутые оператором могут быть проверены системой или вручную;
    \end{itemize}
  \end{block}
  \begin{block}{Гипотезы}
    Задача системы мониторинга --- заменить оператора и самостоятельно
    выдвигать какие-то гипотезы.
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Гипотезы}
  \begin{block}{Формализация}
    \begin{itemize}
    \item Рассматривается ориентированный граф без циклов.
    \item Вершина --- объект мониторинга.
    \item Ребро --- зависимость между узлами.
    \item Гипотеза --- пара (<<список вершин>>, <<вероятность>>), предположение о том,
    что все вершины из списка вышли из строя.
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Гипотезы}
  \begin{block}{Древовидные структуры}
    В дереве $T$ с корневой вершиной $A_0$ и поддеревьями $T_1,\ldots,T_k$
    множество гипотез 
    $$
    H(T) = A^?_0 + (1 - p(A^?_0)) \cdot (H(T_1) \times \ldots \times H(T_k)),
    $$
    где
    $
    a \cdot A_{i,\ldots,k}^? = a \cdot (\{A_1,\ldots,A_k\}, p) = (\{A_1, \ldots, A_k\}, a
    \cdot p)
    $
  \end{block}
  \begin{block}{Графы}
    \begin{itemize}
    \item компоненты $\mbox{И}_n$ и $\mbox{ИЛИ}_n$
    \item декомпозиция до простых компонент
    \end{itemize}
  \end{block}
\end{frame}

\section{Реализация}
\begin{frame}
  \frametitle{Реализация}
  \begin{block}{Модельная реализация на языке Haskell}
  \begin{itemize}
    \item поставщики информации --- система \texttt{collectd} и система опроса
      доступности узлов;
    \item внешний язык описания зависимостей --- диалект \texttt{lisp};
  \end{itemize}
  \end{block}
  \begin{block}{Тестовая установка}
  \begin{itemize}
    \item обрабатывает данные о внутренней сети НИИ Механики и о
      Grid--полигоне;
    \item получает информацию от трех видов коллекторов;
  \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Язык описания взаимодействия}
  Было рассмотрено несколько вариантов из которых выбран \texttt{lisp}: 
  \begin{block}{Достоинства и недостатки}
  \begin{itemize}
    \item \texttt{haskell} --- родной язык реализации, но нет легковесного
      динамического исполнения;
    \item \texttt{lisp} --- простой, известный, чистая функциональная интеграция, но многие не
      любят из-за синтаксиса;
    \item \texttt{lua} --- известный, императивный, но невозможно <<чистое>> исполнение;
    \item самодельный --- простая реализация, но большая вероятность ошибки.
  \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Примеры функций}
  \begin{block}{Определение состояния по ping latency}
    \input{show-ping-latency.tex}
  \end{block}
\end{frame}
\begin{frame}
  \frametitle{Примеры функций}
  \begin{block}{Комбинирование функций}
    \input{show-default-ping.tex}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Графы}
  \begin{block}{$H(\mbox{ИЛИ}_n)$}
    \vskip -2em
    $$
    A^?_0,\ (1 - p(A^?_0))\cdot \bigwedge_{i = 1}^{n - 1} A^?_i,\ 
    (1 - p(A^?_0))(1 - \prod_{i = 1}^{n - 1} p(A^?_i)) \cdot A^?_n,
    $$
    где $A^?_i \wedge A^?_j = \left(\{A_i \wedge A_j\}, p(A^?_i) \cdot p(A^?_j)\right)$.
  \end{block}
  \begin{block}{$H(\mbox{И}_n)$}
    \vskip -2em
    $$
    A^?_0,\ (1 - p(A^?_0))\cdot \bigvee_{i = 1}^{n - 1} A^?_i,\ 
    (1 - p(A^?_0))\prod_{i = 1}^{n - 1}(1 - p(A^?_i)) \cdot A^?_n,
    $$
    где $A^?_i \vee A^?_j = \left(\{A_i \vee A_j\}, 1 - (1 - p(A^?_i)) \cdot (1 - p(A^?_j))\right)$.
  \end{block}
\end{frame}

\end{document}
