Hunter Performance - KPI Parser and Importer

segunda-feira, 29 de agosto de 2011 15:00:00 Categories: Access Base de Dados Hunter KPI Performance
Rate this Content 0 Votes

A Monitoração da Performance da Rede é sem dúvida um das mais importantes atividades no dia a dia de todos os envolvidos. Assim, iniciamos a partir de hoje diversos tutorias relacionados a Performance/KPI, esse grande desafio, seja qual for a área de Telecom ou TI.

 

 

Quando conseguimos melhorar a Performance, também melhoramos a satisfação do cliente - diminuindo as reclamações. Além disso, maximizamos a receita (menos quedas, menos bloqueios, menos falhas: mais acessos, mais receita).

Em um cenário de uma Rede bem otimizada, conseguimos atender uma determinada região com um mínimo de elementos (BTS, Antenas, etc...). De forma contrária - num cenário sem essa preocupação com Performance - é certa a necessidade de maiores gastos com CAPEX e OPEX.

O CAPEX aumentará porque, sem uma análise adequada, serão inseridos equipamentos desnecessários na rede. E o OPEX, se não houver nenhuma ação, aumenta de acordo com o aumento da rede.

Inúmeras são as vantagens em se conseguir – e manter – uma rede devidamente otimizada. Então vamos ver o que podemos fazer para alcançar isso!

Nota: Em alguns tutoriais anteriores, já abordamos alguns conceitos importantes sobre Performance e KPI. Embora a partir de agora estejamos mais voltados às aplicações práticas, é altamente recomendado que você leia esses tutoriais antes de prosseguir.

 

Ferramentas e Métodos Tradicionais Análise de Performance

Existe uma enorme quantidade de ferramentas comerciais atualmente disponíveis com a finalidade de Análise de Performance e KPI. Além disso, muitas operadoras têm seus próprios sistemas desenvolvidos, como consultas e gráficos na sua Intranet.

Algumas dessas ferramentas inclusive incluem BI - Business Intelligence - ou seja, tentam inserir algorítmos inteligentes que possam fazer a análise, ou pelo menos apresentar os dados relevantes apenas.

Mas a necessidade, e a forma de análise, além de ser uma tarefa importante, é muito particular de cada indivíduo. Existem pessoas que preferem analisar os dados em tabelas de Top N. Outras, preferem análises através de Gráficos. Já outras, através da identificação de variação de perfil (delta).

Mas para qualquer que seja o tipo de análise, elas dependem de um sistema que forneça os dados da melhor forma possível.

 

Sistemas de Análise e KPI's

Quando pensamos em criar um sistema qualquer de análise, precisamos, antes mais nada, definir quais os parâmetros que deverão ser acompanhados e avaliados.

No nosso caso, são os KPI, e para uma rede celular qualquer, os principais KPI's são:

  • Tráfego
  • Quedas de Chamadas
  • Bloqueios de Chamadas
  • Estabelecimento
  • Handover

Os KPI's - Key Performance Indicators são então aqueles valores (indicadores) que permitem uma completa visão do sistema: se a rede está boa ou ruim.

Após termos definido os KPI's, podemos iniciar as análises.

Se um (ou mais) desses indicadores estiverem ruim, algum problema real está acontecendo - e alguma ação deve ser tomada.

Emboram existam valores típicos de KPI, não existe um valor ideal. Isso porque eles são muito particulares de cada rede específica. Mas esse é assunto que abordaremos com mais detalhes e exemplos em breve. Hoje vamos conhecer a base de qualquer sistema desse tipo.

 

Contadores

Se pensarmos em construir um sistema do zero, fica realmente parecendo difícil. Mas acredite, não é. Você poderá acompanhar aqui o desenvolvimento de cada etapa, sempre através de exemplos. No final, temos certeza que se surpreenderá com o sistema que você próprio domina.

E vamos começar hoje pela base: os contadores.

Uma rede celular consiste em um conjunto de elementos (Móveis, BTS, Antenas, etc...) que realizam uma grande quantidade de eventos (Registros, Originações, Terminações, etc...).

Todos esses eventos são armazenados em um computador (por exemplo a BSC consiste de um computador, que entre outras tarefas, armazena os contadores dos eventos e informações das BTS e Móveis), na forma de arquivos e/ou tabelas.

Esses computadores ligados a elementos dos sistema (BSC, HLR, etc...) por sua vez são ligados a um computador/servidor central, que busca todas as informações de cada um desses elementos.

 

Métricas

Mas os contadores brutos em si até são importantes, e alguns contadores já representam seu Indicador correspondente.

Mas na maioria dos casos, precisamos utilizar/definir métricas (ou fórmulas) que traduzam os contadores brutos em KPI's ou outro Indicador qualquer.

Cada Fornecedor possui uma documentação própria, informando quais contadores compõem cada KPI's e outros Indicadores Complementares.

 

Após a introdução a esses conceitos básicos, vamos continuar. Hoje veremos como preparar a base de qualquer sistema de análise: o tratamento (parsing) e importação de contadores para um banco de dados.

 

Visão Geral da Análise de Performance

A Análise de Performance, de forma genérica, pode ser dividida em algumas etapas ou procedimentos. Cada uma dessas etapas pode ter algumas variações, seguir determinadas periodicidades (repetições), etc. Mas em geral seguem um roteiro simples.

1) Coleta dos Dados Brutos (Contadores de Performance).

 

Primeiro, coletamos os dados de contadores da rede, a partir dos sistemas de gerência (OSS). Através de um programa (Client) podemos definir quais os contadores desejamos, para quais elementos, períodos, etc. Feitas essas configurações - que são armazenadas em templates na OSS para novas futuras consultas - podemos exportar os mesmos para o nosso computador (diretório local).

Observação: As OSS também permitem que sejam definidas métricas (fórmulas), e também apresentam algumas análises básicas, inclusive gráficos. Isso é bom, sem dúvida, principalmente para análises rápidas. Mas nosso objetivo é construir um sistema que TAMBÉM faça isso, mas vá muito além, como utilizar ‘inteligência’ (algorítmos) para fazer uma análise mais completa e abrangente. Além disso, nosso sistema consegue integrar os dados de Performance com as nossas demais bases tais como Network (cells, antenas, etc...) e Parameters, com um range muito maior de visualizações, como Mapinfo e Google Earth, entre outros Módulos.

CHECKPOINT: Temos então, os contadores baixados periodicamente em um diretório local no computador. Por enquanto, manualmente mesmo.

 

2) Aplicação das Métricas, obtendo os Indicadores.

A partir dos contadores brutos partimos então para obter os Indicadores, através das métricas.

Por exemplo, nosso arquivo pode ter um contador ‘kxy13’, com a informação do Tráfego para nossas células. Esse é um caso direto bem fácil de se entender. TRAF = kxy13.

Existem outros Indicadores porém, que são bem mais complexos, e sua Métrica pode envolver adições e subtrações de vários contadores, tanto no numerador quanto no denominador. Num exemplo fictício: HO% = 100* (kjh11 + kjh45 – lkj23) / (htr34 + jju12).

Nota: não vamos nos preocupar com essas variações hoje. Nem com Indicadores. Em breve explicaremos como fazer tudo de forma bem simples – basta um pouco de organização.

CHECKPOINT: Temos por exemplo uma planilha do Excel, com os principais Indicadores necessários para uma análise.

 

3) Análise

Bom, com todos os Indicadores disponíveis, só precisamos ‘analisar’.

Embora uma palavra simples, envolve muitas possibilidades. Inclui também diversos outros fatores, como a forma pessoal que cada indivíduo tem – a forma que ele gosta de analisar.

Uma das práticas mais comuns é ordenar cada indicador (crescente, decrescente), e começar a atuar nos principais ‘ofensores’.

Por exemplo, em uma tabela de células para um determinado período, podemos ordenar pelo campo ‘Taxa de Quedas de Chamadas’. E aí então, pegar os Top N, e disparar as verificações ou análises mais específicas (configuração física, alarmes existentes, configuração de parâmetros como handover, etc..).

Para cada célula ofensora específica podemos gerar alguns gráficos, como Tráfego, Quedas, Bloqueios (Congestionamento) e Handover. Isso ajuda.

Podemos criar algumas métricas envolvendo os contadores, por exemplo Tráfego + Quedas + Bloqueio, e fazer as mesmas verificações citadas acima.

Além disso tudo, precisamos nos atentar para alguns outros fatores, por exemplo: ‘Quando analisar Quedas de Chamadas, devemos utilizar o Percentual ou o Número absoluto de Quedas?’.

Se não bastasse tudo isso, temos que repetir todo o processo acima periodicamente, todos os dias!

Dá pra trabalhar dessa forma? Sim! Muitas operadoras, apesar de todos os desenvolvimentos e ferramentas disponíveis, ainda utilizam essa forma de análise.

E dá para melhorar? Também Sim!

 

Podemos ter em segundos, a análise automática de todos os elementos da nossa rede, apresentados via e-mail, sms, Google Earth e Mapinfo, Gráficos, etc. Veja por exemplo, uma apresentação no Dashboard.

 

E esse é o nosso objetivo, buscar uma forma mais simples, rápida e inteligente e completa de se fazer as análises! Você vai se surpreender com o que pode ser feito, e como as melhorias vão sendo obervadas rapidamente em sua rede.

Para isso é que definimos a metodologia Hunter. Ela envolve todos esses os processos que permitam uma excelência na análise da rede como um todo.

Vamos seguir e simular todos os cenários possíveis, todas as análises necessárias. E nada além disso! Também é nosso objetivo evitar os retrabalhos, decorrentes de uma metodologia não eficiente.

Todos os tutoriais contém dados fictícios, onde você pode praticar, e adaptar facilmente para o seu cenário.

Então, sem mais introduções gerais, vamos voltar a nossa atenção para o assunto do tutorial de hoje, que é o primeiro passo: armazenar os contadores diários em uma base de dados.

 

Observação

Vale a pena lembrarmos o seguinte: nosso objetivo não é o de ‘substituir’ nenhum sistema ou ferramenta atual, tanto comerciais como desenvolvidas pela sua própria empresa, como portais na Intranet. Embora isso possa acabar acontecendo, a idéia é trabalhar em conjunto com essas ferramentas.

Mas é claro que uma ferramenta que você tem controle total, e pode fazer todos os tipos de uso que desejar, é bem interessante e vantajosa. E você pode utilizar da forma como bem entender!

 

Objetivo

Apresentar a solução do Módulo ‘Hunter Performance – KPI Counter Parser and Importer’.

 

Cenário

Para começar, vamos definir o cenário de hoje. Como sempre, os nossos dados fictícios são bem próximos de todos os vendors existentes, permitindo que você pratique, e depois aplique em sua rede específica.

Nota: Para ajuda sobre como definir os contadores, e como baixar para cada vendor atualmente existente, por favor entre em contato.

No nosso exemplo, vamos baixar dados de todas as células ‘GSM’, através do software ‘OSS’ Client do ‘VendorX’, no formato ‘CSV’ (texto). Nota: escolhemos o formato CSV/Texto como exemplo pois todos os vendors atuais permitem a exportação de contadores nesse formato. Nada impede que utilizemos outros formatos.

Os dados são de 4 dias (de 13 a 16 de Agosto de 2011). O horário, apenas de 18-19 horas de cada dia. É claro que é possível baixar os dados para todos os horários. Utilizamos apenas esse horário apenas para exemplificar.

O procedimento é, logo cedo, baixar os dados, e gerar as análises. Isso também pode ser automatizado, mas vamos começar fazendo essa tarefa manualmente, visto que é rápida, e ajuda a entender a idéia. Posteriormente mostramos como ‘tudo’ pode ser automatizado!

E vamos supor também, que você não foi ao escritório em um dos dias. Não tem problema, ‘no outro dia, baixa os dados dos dois dias num mesmo arquivo. Nota: Isso se aplica não só a dois, mas a quantos dias desejar ou necessitar. Por exemplo, na primeira vez que rodar, pode buscar todos os dias disponíveis na OSS, e depois seguir apenas acumulando.

Fica mais fácil entender vendo os arquivos armazenados em seu local apropriado.

 

Nota: essa forma de organização sugerida já está preparada para multi-vendors, multi-tecnologias, e ainda múltiplas fontes de dados de entrada (não apenas da OSS) – um relatório de uma outra ferramenta ou portal de desempenho. Abordaremos isso com a nossa evolução. No nosso caso hoje, apenas precisamos do diretório ‘GSM’, baixado da ‘OSS’ do ‘VendorX’.

Observe o nome com a qual salvamos os arquivos com os contadores: ‘G_COUNT_CELL’ + ‘ ’ + Descrição Livre.

Essa nomenclatura tem dois motivos. A primeira, identificar os dados (dia, horário, elementos) que forma salvos em cada arquivo. A segunda, e mais importante, identificar o nome da tabela onde os mesmos serão acumulados.

No VBA, informamos que os dados do arquivo devem ser importados para o texto do mesmo até o primeiro ‘espaço em branco’. Essa é apenas uma forma de fazer, mas acreditamos que seja simples e aplicável – deixar a ferramenta identificar, a partir do arquivo, para qual tabela deverão ir os seus dados.

Em relação ao Parser, ou seja, tratamento do arquivo para um formato adequado de colunas, vamos inserir algumas linhas extras, desnecessárias como cabeçalho de cada arquivo. Assim, podemos ver um parser em ação: abre cada arquivo, e trata o mesmo – no nosso caso, simplesmente exluindo as linhas extra (mostradas em amarelo abaixo).

 

Para terminar o cenário: esse local é um repositório de contadores, e não o local de onde os mesmos serão importados. Poderíamos fazer isso, bastaria informar a nossa ferramenta para buscar esses arquivos nesse local. Mas preferimos deixar esses arquivos ‘inalterados’, e copiar aqueles que deve ser importados para um local pré-definido. Até porque, veja que o parser ‘altera’ os dados do arquivo, e no caso de alguma necessidade de verificação posterior, podemos comparar com os dados originais.

E o local pré-definido para essa importação é o diretório ‘Import’: todos os arquivos que estiverem nesse diretório serão processados quando rodarmos a ferramenta. E para cada arquivo processado/importado, a ferramenta adiciona o sufixo ‘.imported’ ao mesmo. Assim, temos como fazer uma rápida verificação se todos foram importados ou se tivemos algum problema.

Veja os arquivos após serem processados/importados.

 

Estrutura de Arquivos

O inicío da organização dos nossos dados é definido pela estrutura básica do Hunter, como mostrado em todos os demais tutoriais. Se você vem acompanhando a evolução, já deve ter os diretórios desse módulo já criado.

IMPORTANTE: todos os arquivos que você recebe, para cada tutorial, já estão no formato esperado. Simplesmente clique em ‘Extrair Aqui...’ utilizando ‘WinZIP’ ou ‘WinRAR’ – com esse arquivo no diretório raiz ‘C:\’.

 

Nota: Além disso, a cada vez que você faz isso, a estrutura vai ficando cada vez mais completa – não só para esse módulo, mas com todos os outros: lembre-se que tudo é integrado. Mais adiante vamos tirar vantagem dessa integração.

Após extrair os arquivos desse módulo, você já tem tudo configurado corretamente como a seguir.

 

Já falamos um pouco sobre os principais novos diretórios desse módulo. E você já conhece a finalidade dos demais diretórios padronizados como ‘Scripts’ e ‘Database’. O único detalhe aqui é que hoje ainda não estaremos usando o diretório ‘Database’. Hoje, os dados são apenas de contadores, e o nosso banco de dados de Performance destina-se a conter apenas os dados processados.

Mas novamente: não se preocupe, isso ficará bem claro nos próximos tutoriais. Preocupe-se hoje em entender o processo de ‘parsing’ e ‘importação’ de arquivos de contadores para uma tabela cumulativa.

 

A Aplicação

Esta aplicação é totalmente feita utilizando o Access com VBA. E dessa vez vamos mostrar a evolução da aplicação a partir de um banco de dados vazio (em branco).

 

Na aplicação de hoje, ainda não criaremos a interface. Isso porque é uma aplicação ainda inicial, onde pretendemos que você entenda os conceitos. Além disso, temos apenas uma tabela, uma macro, e menos de 100 linhas de código VBA.

Dá para você praticar, entender a idéia, e aprender mais alguns conceitos.

 

Importando a Tabela de Contadores

Para praticar, vamos primeiramente importar um arquivo com contadores. Ainda não temos um parser, então precisamos fazer alguns ajustes ‘manuais’ no arquivo (logo mais o VBA fará isso para nós).

Então, abra um dos arquivos de exemplo (por exemplo ‘G_COUNT_CELL 110813_18.csv’), e delete as linhas de cabeçalho – deixe apenas o campo com o título das colunas, como mostrado abaixo, salvando o arquivo.

 

Em seguida, importe esse arquivo (Menu: External Data -> Excel).

 

Você já aprendeu como fazer isso em tutoriais anteriores, e deve ter então uma tabela como a mostrada abaixo.

 

Mas essa tabela será a tabela que irá acumular os contadores de todos os dias, então, alteramos o nome de ‘G_COUNT_CELL 110813_18’ para ‘G_COUNT_CELL’ apenas.

E também, os dados devem ser buscados, tratados e importados automaticamente pela ferramenta – então, apague os dados da tabela.

 

E se eu importar contadores duplicados?

Pode acontecer, por algum motivo, que importemos contadores duplicados, por exemplo se importarmos um arquivo 2 vezes. Nesse caso, o que fazer?

Não se preocupe: uma solução muito simples é definir uma chave primária nesta tabela, assim, mesmo que importemos o arquivos 2 vezes ou mais, os dados não ficarão duplicados – a chave primária já faz isso para nós.

Não se assuste, não precisamos entrar no campo de Relacionamentos e Afins. Vamos usar aqui chave primária apenas para definir o que são registros exclusivos. No nosso caso, isso significa ‘varDateTime’ + BSCRNC’ + ‘CELLNAME’. (É mais ou menos como no Excel uma concatenação desses campos, num outro campo).

No Access, definimos Chave Primária da tabela acessando o seu modo estrutura ou Design (1), selecionando os campos desejados (2) e clicando no botão ‘Chave Primária’ (3). Para concluir, salve a tabela.

 

Agora faça o teste: selecione os dados do arquivo que importamos previamente, e cole nessa tabela.

 

Na primeira vez – com a tabela vazia – os dados são colados (importados) corretamente. Agora selecione o último registro dessa tabela, e tente colar os mesmos dados novamente. Veja o que acontece.

 

O Access informa que isso não será possível – violação da chave primária! Clique OK. Na nova caixa de diálogo, clique no botão ‘Yes’, ou seja, informe ao Access que você não deseja ver uma mensagem para cada registro que violou a regra de exclusividade.

 

Mas você pode estar se perguntando: e isso não vai gerar um erro quando a aplicação importar os dados automaticamente? Sim, esse erro vai ocorrer, mas nós informaremos (VBA) que ela simplesmente deve ignorá-lo.

Vamos continuar. A nossa tabela já está pronta para receber os dados e acumulá-los corretamente. Basta então, importar através da nossa macro.

Como sabemos, o ‘trabalho’ vai ser feito por ela. E a macro consiste apenas num pequeno código VBA.

 

 

Código VBA

Como você já está acostumado, todo o nosso código fornecido (colaboradores Hunter) é sempre comentado. Isso torna a explicação novamente aqui redundante, extensa e desnecessária.

IMPORTANTE: O código completo, incluindo as linhas com os comentários, tem menos de 100 linhas! Mesmo assim, se você encontrar algum problema, ou tiver alguma dúvida em algum procedimento, entre em contato, postando sua dúvida no fórum.

 

Tratamento de Erros

Essa nossa aplicação, nesse momento inicial, tem uma pequena ‘limitação’. Como trabalhamos com o Excel, criando instâncias do mesmo, não devemos ter um outro arquivo do Excel aberto, enquanto ela roda.

Se você tentar rodar, e o Excel estiver sendo executado (alguma planilha aberta), vai dar erro.

 

Mas não se preocupe: futuramente, mostraremos como fazer o tratamento de cada instância do Excel. Não incluímos hoje para que você porque esses códigos a mais poderiam tirar o foco do que deve ser aprendido hoje.

E em relação a tratamento de erros genéricos, futuramente teremos tutoriais completos sobre esse assunto.

 

Resultado

Enfim, o resultado.

 

A princípio, pode não parecer de grande utilidade. Simplesmente uma tabela, com todos os contadores acumulados? Posso fazer isso manualmente.

Mas o grande detalhe é que essa é apenas a base para todas as possibilidades que vamos demonstrar, e ensinar a fazer em breve. Gráficos, Dashboards, Rankings, Delta Reports... via E-mail, SMS, HTML... Integração com Parâmetros e Dados Físicos da Rede... Geo Análise no Google Earth e Mapinfo/Mapbasic... E muito mais: você já deve ter percebido, não é mesmo?

E o mais importante de tudo. Praticando e aprendendo, além de ficar extremamente simples de adaptar para o seu próprio cenário, você poderá inclusive criar novos módulos – tudo aquilo que a sua necessidade e imaginação desejar.

E é claro, conte sempre com a nossa ajuda.

 

Bom pessoal, por hoje é isso. Esperamos que tenham gostado, tentamos sempre mostrar o mundo Telecom de maneira simples e fácil de entender.

E prepare-se para os novos tutoriais! Cada vez mais interessantes.

Última dica: não deixe acumular tutoriais para praticar. Embora sejam simples, o próximo será o trigésimo tutorial. Cada um tem entre 10 a 15 páginas do Word. Ou seja – entre 300 e 450 páginas.

 

Resposta do Desafio

No tutorial anterior, fizemos um pequeno desafio a você usuário para encontrar uma forma de identificar os valores padrão de cada parâmetro de sua rede, utilizando o ‘Hunter Parameters’.

Como o retorno não foi bom (apenas 22 usuários Hunter enviaram e-mail – parabéns novamente aos que acertaram), acreditamos que essa não é uma boa prática – todos os demais devem estar muito ocupados, e uma das razões de terem se tornado colaboradores é que não querem quebrar a cabeça quando não precisam. Assim, não vamos mais ficar colocando desafios.

De qualquer forma, a resposta – finalizando aquele tutorial.

Para identificar um valor padrão de um parâmetro, ou pelo menos identificar aquele que está mais configurado atualmente na rede, simplesmente atribua um valor absurdo (como -1234567890) a ele, na tabela TABLE_FIELD!

Nenhum campo vai estar configurado com o valor absurdo. E teoricamente, todos vão estar errados, e serão identificados pela ferramenta – acumulados na tabela de Audit!

 

Rodando a ferramenta, você tem o resultado, e criando uma Consulta para a tabela ‘Audit_Check_Parameters’, você tem um resumo.

 

Download

Para baixar os arquivos* deste tutorial, clique aqui.

* Observação: O Hunter SDK é o conjunto de ferramentas criadas e demonstradas no telecomHall – incluindo as Macros e Códigos. O Hunter SDK somente é enviado para Colaboradores Doadores, como forma de agradecimento pela contribuição única feita, que reconhece o esforço realizado. Clique aqui se desejar saber mais. Os arquivos disponíveis servem apenas como exemplo para você que não é colaborador ter suas próprias idéias.

 

Conclusão

Vimos hoje como criar mais uma aplicação customizada utilizando o Microsoft Access.

A aplicação, embora simples, é a base para diversas outras aplicações que serão demonstradas em seguida.

A aplicação está completa e funcional com dados fictícios, e nada impede que você utilize em sua rede imediatamente, e também que faça suas próprias melhorias/extensões.

 

Agradecemos a sua visita, e esperamos que as informações apresentadas possam servir de ponto de partida para suas soluções e macros.

Em especial, agradecemos aos colaboradores do telecomHall. Os arquivos desse tutorial já foram enviados, por favor verifiquem. Caso tenham tido algum problema no recebimento, por favor informem.

Novos tutoriais já estão prontos, e serão publicados em breve. Como cada vez mais ficam mais complexos (embora explicados de maneira simples), recomendamos que tirem todas as dúvidas que acaso existirem.

Lembre-se: seu conhecimento adquirido pode ser o seu maior diferencial, só depende de sua vontade.