{"id":53531,"date":"2019-12-04T00:00:00","date_gmt":"2019-12-03T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej"},"modified":"2020-02-18T14:01:26","modified_gmt":"2020-02-18T11:01:26","slug":"ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej","title":{"rendered":"Buscamos anomalias e prevemos falhas com o uso de redes neurais","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/476a74b4808c9991139bb0d3c02762c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O desenvolvimento industrial de sistemas de software exige grande aten\u00e7\u00e3o \u00e0 resist\u00eancia do produto final, bem como a uma resposta r\u00e1pida a falhas e interrup\u00e7\u00f5es, caso ocorram. A monitora\u00e7\u00e3o, claro, ajuda a reagir a falhas e interrup\u00e7\u00f5es de forma mais eficaz e r\u00e1pida, mas n\u00e3o \u00e9 suficiente. Primeiro, \u00e9 muito dif\u00edcil acompanhar um grande n\u00famero de servidores \u2013 \u00e9 necess\u00e1rio um grande n\u00famero de pessoas. Em segundo lugar, \u00e9 preciso entender bem como o aplicativo funciona para prever seu estado. Portanto, s\u00e3o necess\u00e1rias muitas pessoas que conhe\u00e7am bem os sistemas que desenvolvemos, suas m\u00e9tricas e caracter\u00edsticas. Suponha que, mesmo que encontremos um n\u00famero suficiente de pessoas dispostas a fazer isso, ainda requer muito tempo para trein\u00e1-las.<\/p>\n<p><\/p>\n<p>O que fazer? Aqui, a intelig\u00eancia artificial vem em nosso socorro. Este artigo abordar\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Predictive_maintenance\">manuten\u00e7\u00e3o preditiva<\/a><\/noindex> (predictive maintenance). Esta abordagem est\u00e1 se tornando cada vez mais popular. Muitos artigos foram escritos sobre isso, inclusive no Habr. Grandes empresas est\u00e3o utilizando essa abordagem para manter a funcionalidade de seus servidores. Ap\u00f3s estudar uma grande quantidade de artigos, decidimos tentar aplicar essa abordagem. O que resultou disso? <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Introdu\u00e7\u00e3o<\/h2>\n<p><\/p>\n<p>Um sistema de software desenvolvido, mais cedo ou mais tarde, entra em opera\u00e7\u00e3o. \u00c9 importante para o usu\u00e1rio que o sistema funcione sem interrup\u00e7\u00f5es. Se ocorrer uma situa\u00e7\u00e3o extraordin\u00e1ria, ela deve ser resolvida com o m\u00ednimo de atrasos. <\/p>\n<p><\/p>\n<p>Para simplificar o suporte t\u00e9cnico do sistema de software, especialmente se houver muitos servidores, geralmente s\u00e3o utilizados programas de monitora\u00e7\u00e3o que coletam m\u00e9tricas do sistema de software em funcionamento, possibilitam diagnosticar seu estado e ajudam a determinar o que causou a falha. Esse processo \u00e9 chamado de monitora\u00e7\u00e3o do sistema de software.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/545e45775f8fc72a26f387234484fffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Figura 1. Interface para monitoramento grafana<\/em><\/p>\n<p>M\u00e9tricas s\u00e3o diversos indicadores de um sistema de software, do ambiente em que ele opera ou da m\u00e1quina computacional f\u00edsica na qual o sistema foi executado, com uma marca temporal do momento em que as m\u00e9tricas foram obtidas. Na an\u00e1lise est\u00e1tica, os dados das m\u00e9tricas s\u00e3o chamados de s\u00e9ries temporais. Para monitorar o estado do sistema de software, as m\u00e9tricas s\u00e3o exibidas na forma de gr\u00e1ficos: no eixo X \u2013 tempo, e no eixo Y \u2013 valores (figura 1). Um sistema de software em funcionamento pode gerar milhares de m\u00e9tricas (de cada n\u00f3). Elas formam um espa\u00e7o de m\u00e9tricas (s\u00e9ries temporais multidimensionais). <\/p>\n<p><\/p>\n<p>Como em sistemas de software complexos s\u00e3o coletadas muitas m\u00e9tricas, a monitoriza\u00e7\u00e3o manual se torna uma tarefa dif\u00edcil. Para reduzir a quantidade de dados analisados pelo administrador, as ferramentas de monitoramento contam com recursos para detectar automaticamente poss\u00edveis problemas. Por exemplo, \u00e9 poss\u00edvel configurar um gatilho que dispara quando o espa\u00e7o em disco livre diminui at\u00e9 um limite especificado. Tamb\u00e9m \u00e9 poss\u00edvel diagnosticar automaticamente a parada do servidor ou uma desacelera\u00e7\u00e3o cr\u00edtica no desempenho. Na pr\u00e1tica, as ferramentas de monitoramento lidam bem com a detec\u00e7\u00e3o de falhas j\u00e1 ocorridas ou identifica\u00e7\u00e3o de sintomas simples de falhas futuras, mas, no geral, a previs\u00e3o de uma poss\u00edvel falha continua sendo um desafio. A previs\u00e3o manual atrav\u00e9s da an\u00e1lise de m\u00e9tricas requer a participa\u00e7\u00e3o de especialistas qualificados. \u00c9 pouco produtivo. A maioria das falhas em potencial pode passar despercebida.<\/p>\n<p><\/p>\n<p>Recentemente, entre grandes empresas de TI dedicadas ao desenvolvimento de software, a chamada manuten\u00e7\u00e3o preditiva de sistemas de software tem ganhado cada vez mais popularidade. A ess\u00eancia desse enfoque consiste em encontrar falhas que levam \u00e0 degrada\u00e7\u00e3o do sistema em est\u00e1gios iniciais, antes de sua falha, utilizando intelig\u00eancia artificial. Esse enfoque n\u00e3o \u0438\u0441\u043a\u043b\u044e\u0447a completamente a monitoriza\u00e7\u00e3o manual do sistema. Ele \u00e9 um suporte ao processo de monitoramento como um todo. <\/p>\n<p><\/p>\n<p>A principal ferramenta para a implementa\u00e7\u00e3o da manuten\u00e7\u00e3o preditiva \u00e9 a tarefa de busca de anomalias nas s\u00e9ries temporais, pois <strong>ao surgir uma anomalia<\/strong> nos dados, h\u00e1 uma alta probabilidade de que, ap\u00f3s algum tempo <strong>ocorrer\u00e1 uma falha ou interrup\u00e7\u00e3o<\/strong>. Uma anomalia \u00e9 um desvio nos indicadores de um sistema de software, como a identifica\u00e7\u00e3o de degrada\u00e7\u00e3o na velocidade de execu\u00e7\u00e3o de um tipo de solicita\u00e7\u00e3o ou a redu\u00e7\u00e3o do n\u00famero m\u00e9dio de atendimentos durante um n\u00edvel constante de sess\u00f5es de clientes.<\/p>\n<p><\/p>\n<p>A tarefa de detectar anomalias em sistemas de software tem suas especificidades. Na verdade, para cada sistema de software \u00e9 necess\u00e1rio desenvolver ou aprimorar os m\u00e9todos existentes, pois a detec\u00e7\u00e3o de anomalias depende muito dos dados nos quais \u00e9 realizada, e os dados dos sistemas de software variam bastante dependendo das ferramentas de implementa\u00e7\u00e3o do sistema, at\u00e9 mesmo do tipo de m\u00e1quina computacional em que est\u00e1 sendo executado.<\/p>\n<p><\/p>\n<h2>M\u00e9todos de detec\u00e7\u00e3o de anomalias na previs\u00e3o de falhas de sistemas de software<\/h2>\n<p><\/p>\n<p>Antes de mais nada, vale dizer que a ideia de prever falhas foi inspirada pelo artigo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/netcracker\/blog\/442620\/\">\u00abMachine Learning em Monitoramento de TI\u00bb<\/a><\/noindex>. Para verificar a efic\u00e1cia da abordagem de detec\u00e7\u00e3o autom\u00e1tica de anomalias, foi escolhida a sistema de software \"Web-Consolidation\", que \u00e9 um dos projetos da empresa NPO \"Krista\". Anteriormente, a monitoramento manual era feita com base nas m\u00e9tricas obtidas. Como o sistema \u00e9 bastante complexo, uma grande quantidade de m\u00e9tricas \u00e9 coletada: indicadores JVM (carga do coletor de lixo), indicadores do sistema operacional sob o qual o c\u00f3digo \u00e9 executado (mem\u00f3ria virtual, % de carga da CPU), indicadores de rede (carga da rede), do servidor em si (carga da CPU, mem\u00f3ria), m\u00e9tricas do wildfly e m\u00e9tricas pr\u00f3prias do aplicativo em todos os subsistemas cr\u00edticos. <\/p>\n<p><\/p>\n<p>Todas as m\u00e9tricas s\u00e3o extra\u00eddas do sistema utilizando graphite. Inicialmente, foi utilizado o banco whisper como solu\u00e7\u00e3o padr\u00e3o para grafana, mas com o crescimento da base de clientes, graphite n\u00e3o conseguiu mais atender, esgotando a capacidade de transfer\u00eancia da subsistema de armazenamento do DC. Ap\u00f3s isso, foi tomada a decis\u00e3o de buscar uma solu\u00e7\u00e3o mais eficiente. A escolha recaiu sobre <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/343928\/\">graphite+clickhouse<\/a><\/noindex>, o que permitiu reduzir significativamente a carga na subsistema de armazenamento e diminuir de cinco a seis vezes o espa\u00e7o em disco ocupado. Abaixo est\u00e1 apresentada a diagrama do mecanismo de coleta de m\u00e9tricas utilizando graphite+clickhouse (Figura 2).<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/9b57d61a3e1e5e87922832ca2fc18d6e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p><em>Figura 2. Diagrama da coleta de m\u00e9tricas<\/em><\/p>\n<p>O diagrama foi retirado da documenta\u00e7\u00e3o interna. Nele est\u00e1 mostrado o interc\u00e2mbio de dados entre o grafana (a interface de usu\u00e1rio para monitoramento que utilizamos) e o graphite. A coleta de m\u00e9tricas do aplicativo \u00e9 realizada por um software separado \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jmxtrans\/jmxtrans\">jmxtrans<\/a><\/noindex>. Ele tamb\u00e9m as armazena no graphite.<br \/>\nO sistema de \"Web-Consolida\u00e7\u00e3o\" possui v\u00e1rias particularidades que geram problemas na previs\u00e3o de falhas:<\/p>\n<p><\/p>\n<ol>\n<li>frequentemente ocorrem mudan\u00e7as de tend\u00eancia. Para este sistema de software, diferentes vers\u00f5es s\u00e3o lan\u00e7adas. Cada uma delas traz altera\u00e7\u00f5es na parte program\u00e1tica do sistema. Assim, os desenvolvedores impactam diretamente as m\u00e9tricas deste sistema e podem causar mudan\u00e7as de tend\u00eancia; <\/li>\n<li>a particularidade da implementa\u00e7\u00e3o, bem como os objetivos dos usu\u00e1rios deste sistema frequentemente provocam anomalias sem degrada\u00e7\u00e3o anterior; <\/li>\n<li>a porcentagem de anomalias em rela\u00e7\u00e3o a todo o conjunto de dados \u00e9 pequena (&lt; 5%); <\/li>\n<li>podem ocorrer interrup\u00e7\u00f5es na obten\u00e7\u00e3o de m\u00e9tricas do sistema. Em alguns breves per\u00edodos de tempo, o sistema de monitoramento n\u00e3o consegue coletar as m\u00e9tricas. Por exemplo, se o servidor estiver sobrecarregado. Para o treinamento da rede neural, isso \u00e9 cr\u00edtico. Surge a necessidade de preencher as lacunas sinteticamente;<\/li>\n<li>Casos com anomalias frequentemente s\u00e3o relevantes apenas para um n\u00famero\/m\u00eas\/tempo espec\u00edfico (sazonalidade). Este sistema possui um regulamento claro sobre seu uso pelos usu\u00e1rios. Assim, as m\u00e9tricas s\u00e3o relevantes apenas para um momento espec\u00edfico. O sistema pode ser utilizado n\u00e3o continuamente, mas apenas em determinados meses: seletivamente dependendo do ano. H\u00e1 situa\u00e7\u00f5es em que o mesmo comportamento das m\u00e9tricas em um caso pode levar \u00e0 falha do sistema de software, enquanto em outro n\u00e3o.<br \/>\nPara come\u00e7ar, foram analisados m\u00e9todos de detec\u00e7\u00e3o de anomalias nos dados de monitoramento de sistemas de software. Em artigos sobre este tema, com porcentagens baixas de anomalias em rela\u00e7\u00e3o ao restante do conjunto de dados, geralmente \u00e9 recomendado o uso de redes neurais. <\/li>\n<\/ol>\n<p><\/p>\n<p>A l\u00f3gica principal para buscar anomalias utilizando dados de redes neurais est\u00e1 ilustrada na figura 3:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/4d636fae327bf2e66a4c90728e2de0ea.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p><em>Figura 3. Busca de anomalias utilizando rede neural<\/em><\/p>\n<p>No resultado da previs\u00e3o ou da restaura\u00e7\u00e3o da janela do fluxo atual de m\u00e9tricas, calcula-se a discrep\u00e2ncia em rela\u00e7\u00e3o ao que foi obtido de um sistema de software em funcionamento. Caso haja uma grande diferen\u00e7a entre as m\u00e9tricas obtidas do sistema de software e da rede neural, pode-se concluir sobre a anomalia do trecho de dados atual. Surge uma s\u00e9rie de problemas para o uso de redes neurais:<\/p>\n<p><\/p>\n<ol>\n<li>para que funcione corretamente em modo de streaming, os dados para o treinamento dos modelos de redes neurais devem incluir apenas dados 'normais'; <\/li>\n<li>\u00e9 necess\u00e1rio ter um modelo atualizado para uma detec\u00e7\u00e3o correta. Mudan\u00e7as de tend\u00eancia e sazonalidade nas m\u00e9tricas podem causar um grande n\u00famero de alarmes falsos no modelo. Para sua atualiza\u00e7\u00e3o, \u00e9 preciso definir claramente o momento em que o modelo se torna obsoleto. Se o modelo for atualizado muito tarde ou muito cedo, provavelmente resultar\u00e1 em um grande n\u00famero de alarmes falsos.<br \/>\nAl\u00e9m disso, n\u00e3o se deve esquecer da busca e preven\u00e7\u00e3o da ocorr\u00eancia frequente de alarmes falsos. Presume-se que estes surgir\u00e3o mais frequentemente em situa\u00e7\u00f5es an\u00f4malas. No entanto, eles tamb\u00e9m podem ser consequ\u00eancia de falhas da rede neural devido \u00e0 insufici\u00eancia de seu treinamento. \u00c9 necess\u00e1rio minimizar o n\u00famero de alarmes falsos do modelo. Caso contr\u00e1rio, previs\u00f5es erradas consumir\u00e3o muito tempo do administrador, que deveria ser dedicado \u00e0 verifica\u00e7\u00e3o do sistema. Tarde ou cedo, isso acabar\u00e1 resultando em o administrador simplesmente deixar de reagir a um sistema de monitoramento 'paranoico'.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Rede neural recorrente<\/h2>\n<p><\/p>\n<p>Para a detec\u00e7\u00e3o de anomalias em s\u00e9ries temporais, pode-se aplicar <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C\">a rede neural recorrente <\/a><\/noindex>com mem\u00f3ria LSTM. O problema \u00e9 que ela s\u00f3 pode ser aplicada a s\u00e9ries temporais previs\u00edveis. No nosso caso, nem todas as m\u00e9tricas s\u00e3o previs\u00edveis. A tentativa de aplicar RNN LSTM a uma s\u00e9rie temporal \u00e9 apresentada na figura 4.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/d1a79122bf1c98f20b5d8795e6a666fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p><em>Figura 4. Exemplo de funcionamento de uma rede neural recorrente com c\u00e9lulas de mem\u00f3ria LSTM<\/em><\/p>\n<p>Como mostrado na Figura 4, a RNN LSTM conseguiu detectar anomalias neste intervalo de tempo. Onde o resultado apresenta um alto erro de previs\u00e3o (erro m\u00e9dio), realmente houve uma anomalia nas m\u00e9tricas. Usar apenas uma RNN LSTM ser\u00e1 claramente insuficiente, pois ela se aplica a um pequeno n\u00famero de m\u00e9tricas. Pode-se utilizar como um m\u00e9todo auxiliar na busca de anomalias. <\/p>\n<p><\/p>\n<h2>Autoencoder para previs\u00e3o de falhas<\/h2>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%B2%D1%82%D0%BE%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA\">Autoencoder<\/a><\/noindex> \u2013 essencialmente uma rede neural artificial. A camada de entrada \u00e9 o encoder, a camada de sa\u00edda \u00e9 o decoder. A desvantagem de todas as redes neurais desse tipo \u00e9 que elas localizam mal as anomalias. Foi escolhida a arquitetura de autoencoder s\u00edncrono.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/bdec355107f1e22a7b608fcf7dcb0cf7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p><em>Figura 5. Exemplo de funcionamento do autoencoder<\/em><\/p>\n<p>Os autoencoders s\u00e3o treinados em dados normais e, em seguida, encontram algo an\u00f4malo nos dados apresentados ao modelo. Exatamente o que \u00e9 necess\u00e1rio para esta tarefa. Agora resta apenas escolher qual dos autoencoders se adequa a esta tarefa. A forma arquitetonicamente mais simples de um autoencoder \u00e9 uma rede neural feedforward, que se assemelha muito a <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D0%BB%D0%BE%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD_%D0%A0%D1%83%D0%BC%D0%B5%D0%BB%D1%8C%D1%85%D0%B0%D1%80%D1%82%D0%B0\">um perceptron multicamada<\/a><\/noindex> (multilayer perceptron, MLP), com uma camada de entrada, uma camada de sa\u00edda e uma ou mais camadas ocultas que as conectam.<br \/>\nNo entanto, as diferen\u00e7as entre autoencoders e MLP est\u00e3o no fato de que, no autoencoder, a camada de sa\u00edda tem o mesmo n\u00famero de n\u00f3s que a camada de entrada, e que, em vez de aprender a prever um valor alvo Y dado a entrada X, o autoencoder aprende a reconstruir seu pr\u00f3prio X. Portanto, os autoencoders s\u00e3o modelos de aprendizado n\u00e3o supervisionados. <\/p>\n<p><\/p>\n<p>A tarefa do autoencoder \u00e9 encontrar os \u00edndices temporais r0 \u2026 rn que correspondem aos elementos an\u00f4malos no vetor de entrada X. Este efeito \u00e9 alcan\u00e7ado atrav\u00e9s da busca do erro quadr\u00e1tico.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/f03800c42eb1998603c0ae217208d40a.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p><em>Figura 6. Autoencoder s\u00edncrono<\/em><\/p>\n<p>Foi escolhida a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/2017\/abstracts\/2938.html\">arquitetura s\u00edncrona<\/a><\/noindex>. Suas vantagens: possibilidade de uso de modo de processamento em fluxo e um n\u00famero relativamente menor de par\u00e2metros da rede neural em rela\u00e7\u00e3o a outras arquiteturas.<\/p>\n<p><\/p>\n<h2>Mecanismo para minimiza\u00e7\u00e3o de alarmes falsos<\/h2>\n<p><\/p>\n<p>Devido \u00e0 ocorr\u00eancia de v\u00e1rias situa\u00e7\u00f5es imprevistas, bem como \u00e0 poss\u00edvel falta de treinamento da rede neural, foi tomada a decis\u00e3o de desenvolver um mecanismo para minimizar falsos positivos no modelo de detec\u00e7\u00e3o de anomalias em desenvolvimento. Este mecanismo \u00e9 baseado em uma base de padr\u00f5es que \u00e9 classificada por um administrador. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D1%88%D0%BA%D0%B0%D0%BB%D1%8B\">Algoritmo de transforma\u00e7\u00e3o din\u00e2mica da linha do tempo<\/a><\/noindex> (Algoritmo DTW, do ingl\u00eas dynamic time warping) permite encontrar a correspond\u00eancia ideal entre sequ\u00eancias temporais. Foi aplicado pela primeira vez no reconhecimento de fala: utilizado para determinar como dois sinais de voz representam a mesma frase proferida. Posteriormente, seu uso foi encontrado em outras \u00e1reas.<\/p>\n<p><\/p>\n<p>O princ\u00edpio b\u00e1sico da minimiza\u00e7\u00e3o de falsos positivos \u00e9 a coleta de uma base de refer\u00eancias por meio de um operador que classifica casos suspeitos detectados por redes neurais. A seguir, ocorre uma compara\u00e7\u00e3o entre a refer\u00eancia classificada e o caso identificado pelo sistema, e se conclui se o caso \u00e9 um falso positivo ou se leva a uma falha. \u00c9 exatamente para a compara\u00e7\u00e3o de duas s\u00e9ries temporais que o algoritmo DTW \u00e9 utilizado. A classifica\u00e7\u00e3o continua sendo a principal ferramenta de minimiza\u00e7\u00e3o. Presume-se que, ap\u00f3s coletar uma grande quantidade de casos de refer\u00eancia, o sistema come\u00e7ar\u00e1 a solicitar menos ao operador devido \u00e0 semelhan\u00e7a da maioria dos casos e \u00e0 ocorr\u00eancia de semelhantes.<\/p>\n<p><\/p>\n<p>Como resultado dos m\u00e9todos de redes neurais descritos acima, um programa experimental foi desenvolvido para prever falhas no sistema 'Web-Consolida\u00e7\u00e3o'. O objetivo desse programa foi, utilizando o arquivo existente dos dados de monitoramento e informa\u00e7\u00f5es sobre falhas j\u00e1 ocorridas, avaliar a compet\u00eancia dessa abordagem para os nossos sistemas de software. O esquema de funcionamento do programa \u00e9 apresentado abaixo, na figura 7.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/08ad00dc7f8bd9463c786ce3d7469ed0.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p><em>Figura 7. Esquema de previs\u00e3o de falhas com base na an\u00e1lise do espa\u00e7o m\u00e9trico<\/em><\/p>\n<p>No esquema, podem ser identificados dois blocos principais: a localiza\u00e7\u00e3o de segmentos an\u00f4malos no fluxo de dados de monitoramento (m\u00e9tricas) e o mecanismo de minimiza\u00e7\u00e3o de falsos positivos. Nota: para fins experimentais, os dados s\u00e3o obtidos atrav\u00e9s de uma conex\u00e3o JDBC a uma base de dados na qual s\u00e3o armazenados pelo graphite.<br \/>\nA seguir est\u00e1 a interface resultante do desenvolvimento do sistema de monitoramento (Figura 8).<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/e1123edf91c368a38151388a459514f4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Figura 8. Interface do sistema experimental de monitoramento<\/em><\/p>\n<p>Na interface, \u00e9 exibido o percentual de anomalia das m\u00e9tricas recebidas. No nosso caso, a obten\u00e7\u00e3o \u00e9 simulada. J\u00e1 temos todos os dados de v\u00e1rias semanas e os carregamos gradualmente para verificar o caso de anomalia que leva \u00e0 falha. Na barra de status inferior, \u00e9 exibido o percentual total de anomalia dos dados no momento, que \u00e9 determinado por um autoencodificador. Tamb\u00e9m para as m\u00e9tricas projetadas, \u00e9 exibido um percentual separado, que \u00e9 calculado pela RNN LSTM.<\/p>\n<p><\/p>\n<p>Exemplo de detec\u00e7\u00e3o de anomalia nos indicadores de CPU usando a rede neural RNN LSTM (Figura 9).<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/b77517f01cb13031b28ae2ac7464fe19.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Figura 9. Detec\u00e7\u00e3o RNN LSTM<\/em><\/p>\n<p>Um caso bastante simples, na verdade uma anomalia comum, mas que leva \u00e0 falha do sistema, foi detectado com sucesso pela RNN LSTM. O \u00edndice de anomalia neste intervalo de tempo varia de 85 a 95%, tudo acima de 80% (limite definido experimentalmente), \u00e9 considerado uma anomalia.<br \/>\nExemplo de detec\u00e7\u00e3o de anomalia quando o sistema n\u00e3o conseguiu inicializar ap\u00f3s a atualiza\u00e7\u00e3o. Essa situa\u00e7\u00e3o \u00e9 detectada pelo autoencodificador (Figura 10).<\/p>\n<p>\n<img decoding=\"async\" alt=\"Buscamos anomalias e prevemos falhas com o uso de redes neurais\" src=\"\/wp-content\/uploads\/2019\/12\/cf2e38fc569b3a4f8a3f150b396853cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Figura 10. Exemplo de detec\u00e7\u00e3o pelo autoencodificador<\/em><\/p>\n<p>Como pode ser observado na figura, o PermGen ficou estagnado em um n\u00edvel. O autoencodificador considerou isso estranho, pois nunca havia visto algo semelhante antes. Aqui, a anomalia se manteve em 100% at\u00e9 a restaura\u00e7\u00e3o do sistema ao estado operacional. A anomalia \u00e9 exibida em todas as m\u00e9tricas. Como mencionado anteriormente, o autoencodificador n\u00e3o consegue localizar anomalias. O operador \u00e9 designado para desempenhar essa fun\u00e7\u00e3o nessas situa\u00e7\u00f5es.<\/p>\n<p><\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p><\/p>\n<p>O PC \"Web-Consolida\u00e7\u00e3o\" est\u00e1 em desenvolvimento h\u00e1 v\u00e1rios anos. O sistema est\u00e1 em um estado bastante est\u00e1vel e o n\u00famero de incidentes registrados \u00e9 pequeno. No entanto, foi poss\u00edvel identificar anomalias que levaram a falhas com uma anteced\u00eancia de 5 a 10 minutos antes do colapso. Em alguns casos, o alerta de falha com anteced\u00eancia poderia ter ajudado a economizar o tempo regulado reservado para a realiza\u00e7\u00e3o de trabalhos de 'manuten\u00e7\u00e3o'.<\/p>\n<p><\/p>\n<p>Ainda \u00e9 cedo para fazer conclus\u00f5es definitivas com base nos experimentos realizados. No momento, os resultados s\u00e3o contradit\u00f3rios. Por um lado, \u00e9 evidente que algoritmos baseados em redes neurais conseguem identificar anomalias \"\u00fateis\". Por outro lado, ainda existem muitos falsos positivos, e nem todas as anomalias que um especialista qualificado identifica s\u00e3o detectadas pela rede neural. Um ponto negativo \u00e9 que, atualmente, a rede neural requer aprendizado supervisionado para funcionar corretamente.<\/p>\n<p><\/p>\n<p>Para o desenvolvimento futuro do sistema de previs\u00e3o de falhas e para que ele atinja um estado satisfat\u00f3rio, podem ser considerados v\u00e1rios caminhos. Um deles seria uma an\u00e1lise mais detalhada dos casos com anomalias que levam a falhas, complementando assim a lista de m\u00e9tricas importantes que influenciam fortemente o estado do sistema, e eliminando m\u00e9tricas irrelevantes. Al\u00e9m disso, seguindo por essa dire\u00e7\u00e3o, tamb\u00e9m poderia se tentar a especializa\u00e7\u00e3o dos algoritmos especificamente para nossos casos de anomalias que causam falhas. Existe um outro caminho, que \u00e9 a melhoria das arquiteturas das redes neurais e, com isso, o aumento da precis\u00e3o das detec\u00e7\u00f5es, reduzindo o tempo de treinamento.<\/p>\n<p><\/p>\n<p>Agrade\u00e7o aos colegas que me ajudaram na reda\u00e7\u00e3o e na atualiza\u00e7\u00e3o desta artigo: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/vektory79\/\">Viktor Verbitsky<\/a><\/noindex> e Sergey Finogenev.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/krista\/blog\/478392\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043e\u0442\u043a\u0430\u0437\u044b \u0438 \u0441\u0431\u043e\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0441\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f. \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0442\u043a\u0430\u0437\u044b \u0438 \u0441\u0431\u043e\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u0443\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u2013 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u044e\u0434\u0435\u0439. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53531","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0449\u0435\u043c \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0431\u043e\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-03T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:01:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Buscamos anomalias e prevemos falhas com o aux\u00edlio de redes neurais | ProHoster","description":"Desenvolvimento Industrial.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0449\u0435\u043c \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0431\u043e\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439 | ProHoster","og:description":"\u041f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ishhem-anomalii-i-predskazyvaem-sboi-s-pomoshhyu-nejrosetej","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-03T21:00:00+00:00","article:modified_time":"2020-02-18T11:01:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53531","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 07:46:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:23:55","updated":"2026-01-24 07:46:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/53531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=53531"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/53531\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=53531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=53531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=53531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}