Русский
Русский
English
Статистика
Реклама

IT Service Health Monitoring средствами R. Взгляд под иным углом

Казалось бы тема давно исхоженная, пик инновационности OSS систем давно позади. Однако иногда бывают локальные жаркие всплески и бурные споры на эту тему. Можно ходить по торной вендорской дороге, а можно попробовать погрызть эту задачку с другого угла.


Ключевые слова: cmdb, multi-agent sumulation, monte-carlo, ml.


Является продолжением серии предыдущих публикаций.


Постановка задачи


Постановку детально расписывать не будем, в интернете можно найти на любой вкус и кошелек. Реферативно выглядит следующим образом (изначально придумали ITSM консультанты):


  • есть CMDB (конфигурационная база элементов ИТ). Она содержит описание элементов и связей между ними (граф);
  • есть система мониторинга, которая как-то снимает показания физических воплощений CI элементов;
  • есть какой-то бизнес-сервис, который базируется на инфраструктурных элементах (сервера, приложения, API, тесты, ...);
  • связь между сервисом и элементами обычно описывается деревом и называется ресурсно-сервисной моделью (РСМ);
  • у инфраструктурных элементов есть свои параметры (KPI) по которым с учетом топологической связности надо посчитать здоровье бизнес-сервиса (health/KQI).

Типовую картинку РСМ возьмем с документации одного из апологетов этой темы (HP).


РСМ. Исходник был здесь:https://docs.microfocus.com/OMi/10.62/Content/OMi/images/ServiceHealth.png


Как делается обычно


Типовая процедура внедрения РСМ состоит из:


  • составления списка сервисов;
  • составления списка ресурсов;
  • составления топологической связи между ресурсами;
  • составления правил пропагандирования состояний и метрик.

Все делается консультантами вручную. Особо интересная работа подгонять весовые коэффициенты пропагандирования метрик (событий) с нижних уровней на верхнии. В случае сложных РСМ редко удается пронаблюдать получение удовлетворительного решения.


Технические ссылки:



Альтернативный план


Ручное исполнение задача в 2021 году выглядит уныло и тоскливо. Но у нас под руками есть компьютер. Можно попробовать применить его по назначению.


План


  • фаза multi-agent sumulation: рассматриваем ресурсы как самостоятельных агентов, обладающих свойствами (входные параметры) и коммуницирующих друг с другом (связи в дереве РСМ);
  • фаза itsm: прописываем любым удобным нам способом поведение на уровне отдельных агентов (функцию выхода от состояний входа);
  • фаза monte-carlo: генерим подходящее подмножество входных состояний всех объектов и проводим расчет отклика MAS структуры;
  • фаза ml: сворачиваем полученный data.frame ансамбль правил (rule fit, см Modern Rule-Based Models by Max Kuhn), объясняемый представителям от бизнеса;
  • фаза prod: полученные ml матрицы загоняем в кремний и получаем event propagation в режиме реального времени на одном смартфоне.

При чем тут R?


В целом, альтернативный план можно делать на чем угодно. Хоть на листочках с карандашом в руке. Но если хочется сэкономить силы и время, то на R можно сделать добрую половину задачи кодом в один экран. И поможет нам в этом Shiny. Да, Shiny, но без Shiny.


Писать multi-agent simulation нудно и есть масса мест для ошибок. С другой стороны у нас есть механизм реактивного программирования в Shiny, который обеспечивает коммуникацию между объектами. Воспользуемся им, см. подсказки в Reactive programming in R by Joe Cheng, DSC 2014


Пример идеи в коде, связка трех нод-агентов nodeA -> nodeB -> nodeC.


MAS на коленке
library(tidyverse)library(magrittr)library(shiny)library(foreach)library(iterators)options(shiny.suppressMissingContextError=TRUE)makeReactiveBinding("nodeA")nodeA$in_1 <- NULLnodeA$in_2 <- NULLnodeA$out <- reactive(nodeA %$% (in_1 + in_2))makeReactiveBinding("nodeB")nodeB$in_1 <- reactive(nodeA$out())nodeB$in_2 <- NULLnodeB$out <- reactive(nodeB %$% (in_1() + in_2))makeReactiveBinding("nodeC")nodeC$in_1 <- reactive(nodeB$out())nodeC$in_2 <- NULLnodeC$out <- reactive(nodeC %$% (in_1() * in_2))df <- tidyr::expand_grid(val1 = 0:5, val2 = 0:5, val3 = 0:5, val4 = 0:5) %>%  # результат прямого расчета для демо-сверки  mutate(direct_res = (val1 + val2 + val3) * val4)res <- foreach(it = iter(df, by = "row"), .combine = "c") %do%  {    nodeA$in_1 <- it$val1    nodeA$in_2 <- it$val2    nodeB$in_2 <- it$val3    nodeC$in_2 <- it$val4    shiny:::flushReact()    nodeC$out()  }df$mas_res <- res

Далее натянуть на data.frame ансамбль деревьев (или gbm или еще что...) и сделать прогноз можно двумя строчками. При этом формулу отклика для каждого агента можно писать любыми доступными средствами. В силу того, что состояния агентов в этой задаче ограничены, можно вместо формул создать конфигурационный excel (пример ниже), который понятен любому менеджеру и не требует никаких споров. Считаете, что в строчке #7 на выходе должно быть 'bad'? Пишем и даже не спорим.


Конфигурация агента для менеджеров


Собственно все, задача решена, кино кончилось.


Предыдущая публикация Немного о параллельных вычислениях в R.

Источник: habr.com
К списку статей
Опубликовано: 23.03.2021 00:21:32
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Программирование

It-инфраструктура

Big data

R

Data science

Monitoring

Itsm

Machine learning

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru