Implementac¸˜ao de um servi¸co de telemetria do OpenStack ... · Implementac¸˜ao de um...

74
UNIVERSIDADE DO RIO GRANDE DO NORTE FEDERAL Universidade Federal do Rio Grande do Norte – UFRN Centro de Ensino Superior do Serid´ o – CERES Departamento de Ciˆ encias Exatas e Aplicadas – DCEA Bacharelado em Sistemas de Informa¸c˜ ao – BSI Implementa¸ ao de um servi¸co de telemetria do OpenStack em um ambiente Cloud Computing Jackson Soares Orientador: Prof. MSc. Gilson Gomes da Silva. Trabalho de Conclus˜ ao de Curso apre- sentado ao Curso de Bacharelado em Siste- mas de Informa¸ c˜ao como parte dos requisitos para obten¸ c˜aodot´ ıtulo de Bacharel em Sis- temas de Informa¸ c˜ao. Laborat´ orio de Elementos do Processamento da Informa¸ ao – LabEPI Caic´ o, RN, 27 de outubro de 2015

Transcript of Implementac¸˜ao de um servi¸co de telemetria do OpenStack ... · Implementac¸˜ao de um...

UNIVERSIDADE DO RIO GRANDE DO NORTEFEDERAL

Universidade Federal do Rio Grande do Norte – UFRNCentro de Ensino Superior do Serido – CERES

Departamento de Ciencias Exatas e Aplicadas – DCEABacharelado em Sistemas de Informacao – BSI

Implementacao de um servico de telemetria do

OpenStack em um ambiente Cloud Computing

Jackson Soares

Orientador: Prof. MSc. Gilson Gomes da Silva.

Trabalho de Conclusao de Curso apre-sentado ao Curso de Bacharelado em Siste-mas de Informacao como parte dos requisitospara obtencao do tıtulo de Bacharel em Sis-temas de Informacao.

Laboratorio de Elementos do Processamento da Informacao – LabEPI

Caico, RN, 27 de outubro de 2015

Divisao de Servicos TecnicosCatalogacao da Publicacao na Fonte. UFRNBiblioteca Setorial do Instituto de Quımica.

Soares, JacksonImplementacao de um servico de telemetria do OpenStack em um ambiente

Cloud Computing. / Jackson Soares. – Natal, RN, 2015.74 f.: il.

Orientador: Prof. MSc. Gilson Gomes da Silva.

Monografia (Bacharel em Sistemas de Informacao) – Universidade Federal doRio Grande do Norte. Centro de Ensino Superior do Serido - CERES. Departa-mento de Ciencias Exatas e Aplicadas.

1. Computacao em Nuvens - Monografia. 2. Cloud Computing - Monografia.3. OpenStack - Monografia. 4. Telemetria - Monografia. 5. Tecnologia daInformacao - Monografia. I. Gomes, Gilson. II. Universidade Federal do RioGrande do Norte. III. Tıtulo.

RN/UFRN/BSE - Instituto de Quımica CDU 004.2

Implementacao de um servico de telemetria do

OpenStack em um ambiente Cloud Computing

Jackson Soares

Monografia aprovada em 19 de junho de 2015 pela banca examinadora composta pelosseguintes membros:

Prof. MSc. Gilson Gomes da Silva (orientador) . . . . . . . . . . . . . . . . DCEA/UFRN

Prof. Dr. Joao Paulo de Souza Medeiros . . . . . . . . . . . . . . . . . . . . . . . DCEA/UFRN

Prof. MSc. Adrianne Paula Vieira de Andrade . . . . . . . . . . . . . . . . . DCEA/UFRN

“Este e o dia em que o Senhor agiu;alegremo-nos e exultemos neste dia. ”

Salmos 118:24

Agradecimentos

Agradeco a Deus pelo o dom da vida, pela a sua longanimidade, fidelidade e amor paracomigo, pois sem a ajuda dele seria impossıvel chegar ate aqui. A ele seja toda a honra ea gloria para todo o sempre.

Aos meus pais, Josefa Soares e Antonio Jose Soares, por me incentivarem, sendo os pilaresde minha vida, acreditando em minha capacidade. Agradeco tambem por eles tereminvestido tanto em meus estudos e me darem uma educacao de um verdadeiro homem debem, o qual contribuiu para que eu nunca me desviasse do caminho, eu os Amo.

Aos meus irmaos, Andressa Soares e Andre Abmael Soares, por me darem seu apoio emtodas as circunstancias e serem pessoas que procuram fazer o que e bom.

Ao meu grande irmao Gidinei, por me apoiar nos anos iniciais de curso cedendo um lugarde apoio e descanso, voce e um grande exemplo de vencedor.

Aos professores Joao Borges, Joao Paulo, Luiz Paulo e Gilson por terem um dia meaceito como integrante do LabEPI, laboratorio ao qual e o melhor ambiente de estudo eaprendizado que conheci, contribuindo para minha formacao. Em especial ao professorJoao Paulo por me ajudar em muitos momentos de dificuldades e indecisoes, e ao ProfessorGilson por ter me aceito como seu orientando.

Aos Professores Deilson, Josue, Flavius, Taciano, Karliane, Ricardo, Fabrıcio pelo o co-nhecimento que me foi transmitido e por tambem fazerem parte da minha formacao.

Aos meus amigos de laboratorio, Maycon, Francimar, Tulio, Denis, Anderson, Daniel,Gutto, Emerson, Eduardo, Alex, Angelo, gracas a voces pude ter um ambiente de estudoagradavel, compartilhando conhecimento e resolvendo problemas, voces sao verdadeirosirmaos.

Aos meus tios e primos por tambem me apoiarem e incentivarem nessa jornada, Especial-mente tia Loura e tia Branca pelos conselhos e palavras de animo e fe.

Aos queridos, Jose Carlos, Jose Daniel Dantas, por me proporcionarem momentos dealegrias e companheirismo renovando as minhas forcas, ao Pastor Silvany, Socorro Oliveira,Valmir e Valdinete que sempre trouxeram uma palavra de fe da parte de Deus.

Aos amigos, Denir, Dorgivan, Hugo da residencia universitaria de Caico por dividiremcomigo ao longo dos ultimos anos um ambiente familiar agradavel.

Finalmente, sou grato pela oportunidade de desenvolver este trabalho no Laboratoriode Elementos do Processamento da Informacao (LabEPI), sediado no Centro de EnsinoSuperior do Serido da Universidade Federal do Rio Grande do Norte.

Resumo

A Cloud Computing (Computacao em Nuvem) desde o inıcio da decada atual deixoude ser apenas um conceito e passou a ser um novo paradigma, influenciando a tomadade decisoes de grandes empresas em todo mundo e afetando direta e indiretamente umagrande parte das pessoas. O objetivo deste trabalho consiste em desenvolver um servicode telemetria para calculo de estimativas e criacao de relatorios de uso de recursos emuma nuvem OpenStack R©. Sera abordado a Cloud Computing expondo seus conceitos,caracterısticas, e seus impactos junto a Tecnologia da Informacao. A medida que a CloudComputing avanca, tambem avancam os esforcos, investimentos e projetos em toda a parte.O OpenStack R© e um exemplo de plataforma estavel de codigo aberto para a nuvem (cloud).Fornecendo uma gama de opcoes e oportunidades para o desenvolvimento de aplicacoesbaseadas em seus servicos. Diante deste cenario, surgiu a necessidade de desenvolver umaaplicacao com o objetivo de realizar calculos e estimativas do uso de recursos fornecidospela nuvem, por meio da implantacao e utilizacao do servico de telemetria. Durante odesenvolvimento deste trabalho, e da aplicacao resultante, foi feito a escolha do tema,realizado estudos bibliograficos e tecnicos, a implementacao do sistema, coleta e analisedos resultados. Conclui-se os resultados obtidos como positivos e satisfatorios, ja que ostestes realizados demonstraram que a aplicacao desenvolvida fornece controle e gerencia douso de recursos na nuvem, provendo transparencia para todos os tipos de usuarios, sendoque este trabalho pode ser utilizado pela comunidade em geral, para estudos posteriores,levando em consideracao nuvens computacionais e problemas de estudos similares.

Palavras-chave: Cloud Computing; OpenStack; Telemetria.

Abstract

Since the beginning of the decade, Cloud Computing have ceased to be a conceptand came to be a new paradigm, influencing the making of decisions for large companiesaround the world and affecting directly and indirectly many people. The objective ofthis work is to develop a telemetry service for calculating estimates and creating resourceusage reports in a OpenStack R© cloud. This work will about Cloud Computing, exposingit’s concepts, features, and it’s influences among the Information Technology. As CloudComputing advances, so advances our efforts, investments and projects all over the place.OpenStack R© is an example of stable open source platform for the cloud. Providing arange of options and opportunities to develop applications based on their services. Againstthis scenary, came the need of developing one application with objective to estimate theresource usage provided by the cloud. Therefore, the deployment and use of a Telemetryservice and it’s methods was conducted. For the development of this work, and of theresulting application, was made choosing the topic, bibliographic and technical studies,system implementation, collection and analysis of results. It was concluded the results aspositive and satisfactory, since tests have shown that the developed application providescontrol and management of the use of resources in the cloud, providing transparency forall types of users, and this work can be used for the community in general, for furtherstudies taking into account computational clouds and similar studies problems.

Keywords: Cloud Computing; OpenStack; Telemetry.

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas i

Sumario

Lista de Figuras iii

Lista de Tabelas v

Lista de siglas e abreviacoes vii

Lista de marcas registradas ix

1 Introducao 11.1 Definicao do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Solucao Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.2 Objetivos Especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.4 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Organizacao do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Referencial Teorico 52.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 A TI e seu papel nas organizacoes . . . . . . . . . . . . . . . . . . . . . . . 52.3 Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3.1 Conceitos de Cloud Computing . . . . . . . . . . . . . . . . . . . . . 72.3.2 Virtualizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Uma plataforma de nuvem aberta . . . . . . . . . . . . . . . . . . . . . . . . 122.4.1 Historico e Caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . 122.4.2 Servicos do OpenStack . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.5 O Servico Ceilometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.5.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5.2 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5.3 Metodos de consultas . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.6 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3 Procedimentos Metodologicos 233.1 Caracterizacao da Pesquisa - Estudo de Caso . . . . . . . . . . . . . . . . . 233.2 Realizacao do Estudo bibliografico . . . . . . . . . . . . . . . . . . . . . . . 243.3 Realizacao do Estudo tecnico . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4 Implementacao da aplicacao . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.5 Coleta e analise dos resultados . . . . . . . . . . . . . . . . . . . . . . . . . 24

4 Analise do Estudo de Caso - Projeto Pratico 274.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2 Implementacao da aplicacao RDU2 . . . . . . . . . . . . . . . . . . . . . . . 274.3 Instalacao do Servico de Telemetria - Ceilometer . . . . . . . . . . . . . . . 284.4 Interacoes com a API Ceilometer . . . . . . . . . . . . . . . . . . . . . . . . 284.5 Tecnologias e Ferramentas utilizadas . . . . . . . . . . . . . . . . . . . . . . 29

4.5.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5.2 A biblioteca Pycurl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.5.3 Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.6 API para gerar relatorios de uso e custos por utilizacao de recursos . . . . . 304.6.1 Interagindo com a interface . . . . . . . . . . . . . . . . . . . . . . . 31

4.7 Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5 Consideracoes Finais 375.1 Conclusoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.2 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Referencias Bibliograficas 41

A Apendice para desenvolvedores 43A.1 Manual de instalacao Ceilometer . . . . . . . . . . . . . . . . . . . . . . . . 43

A.1.1 Instalacao do modulo de Telemetria . . . . . . . . . . . . . . . . . . 43A.1.2 Instalando o agente compute de Telemetria . . . . . . . . . . . . . . 46A.1.3 Sincronizando o servico de Imagem servico de Telemetria: . . . . . 47A.1.4 Verificando a instalacao do servico de Telemetria . . . . . . . . . . . 47

A.2 API Web V2 Ceilometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48A.3 Codigo fonte da API RDU2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas iii

Lista de Figuras

2.1 Uma representacao para Cloud Computing . . . . . . . . . . . . . . . . . . . 72.2 Modelo visual para Cloud Computing . . . . . . . . . . . . . . . . . . . . . 82.3 Visao Geral OpenStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 A arquitetura Conceitual OpenStack . . . . . . . . . . . . . . . . . . . . . . 152.5 A arquitetura Conceitual do Ceilometer . . . . . . . . . . . . . . . . . . . . 18

4.1 Grafico contendo as informacoes da metrica memory . . . . . . . . . . . . . 314.2 Grafico contendo as informacoes da metrica cpu . . . . . . . . . . . . . . . . 324.3 Grafico contendo as informacoes da metrica cpu util . . . . . . . . . . . . . 334.4 Exemplo de visualizacao de metrica do Dashboard para admin . . . . . . . 344.5 Exemplo de visualizacao de metrica do Dashboard para usuario comum . . 34

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas v

Lista de Tabelas

2.1 Versoes do OpenStack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.1 Testes realizados e resultados obtidos . . . . . . . . . . . . . . . . . . . . . . 26

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas vii

Lista de siglas e abreviacoes

API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Application Programming InterfaceAWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Amazon Web ServicesBSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bacharelado em Sistemas de InformacaoCAPEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Capital ExpenditureCERES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Centro de Ensino Superior do SeridoCPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Central Processing UnitDaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Database-as-a-Service - DaaSDCEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Departamento de Ciencias Exatas e AplicadasDICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DictionaryEC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Elastic Computing CloudE/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entrada e SaıdaFTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . File Transfer ProtocolFTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . File Transfer Protocol SecurityHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Hewlett PackardHTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Hyper Text Transfer ProtocolHTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Hyper Text Transfer Protocol SecurityIaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Infrastructure-as-a-ServiceIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internet ProtocolKVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kernel-based Virtual MachineLabEPI . . . . . . . . . . . . . . . . .Laboratorio de Elementos do Processamento da InformacaoLXC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Linux ContainersLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Lightweight Directory Access ProtocolMMV ou VMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Monitor de Maquina VirtualNASA . . . . . . . . . . . . . National Aeronautics and Space Administration of United StatesNIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . National Institute of Standards and TechnologyOPEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Operational ExpenditureOSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Open Source IniciativePaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Platform as a ServicePC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Personal ComputerRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Random Access MemorySaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Software as a ServiceSDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software Developers KitTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Tecnologia da InformacaoUFRN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Universidade Federal do Rio Grande do NorteUML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .User Mode LinuxURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Uniform Resorce Locator

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas ix

Lista de marcas registradas

Amazon R©

Amazon Elastic Block Storage EBC R©

Amazon Elastic Computing Cloud EC2 R©

Amazon Simple Storage Service AS3 R©

Amazon Web Services AWS R©

Firefox R©

Google R©

Google Docs R©

Google Chrome R©

Hewlett Packard R©

HP Helion OpenStack R©

Microsoft R©

Microsoft Ofice 365 R©

Nimbus R©

OpenNebula R©

OpenStack R©

OpenStack Fundation R©

Rackspace Cloud Servers R©

RackSpace Cloud Files R©

Windows Azure R©

As varias marcas listadas nessa pagina, tem o objetivo de informar aosleitores que o autor deste trabalho utiliza tais nomes apenas para fins editoriais,buscando com isso beneficiar o dono da Marca Registrada, sem haver infracaonas regras de sua utilizacao.

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 1

Capıtulo 1

Introducao

“Entrega o teu caminho ao Senhor;confia nele, e o mais ele o fara ”

Salmos 37:5

1.1 Definicao do Problema

A Cloud Computing (Computacao em Nuvem) veio para suprir a necessidade de cons-truir infraestruturas de Tecnologia da Informacao (TI) complexas, em que, nestas mesmasestruturas os usuarios tem que realizar a instalacao, configuracao e atualizacao de softwa-res. Alem disso, recursos de computacao e hardware sao propensos a ficarem obsoletosrapidamente. Assim, a utilizacao otimizada de plataformas computacionais proprias oude terceiros e uma solucao inteligente para os usuarios lidarem com infraestrutura de TI.Na Cloud Computing os recursos de TI sao fornecidos baseados em servico, isto permiteque os usuarios acessem os servicos sem a necessidade de conhecimento sobre a tecnolo-gia utilizada, e sem ter que se preocupar com os problemas de alocacao de espaco parahardware ou com a manutencao de maquinas e equipamentos (Sousa F. R. C., 2009).

Dessa maneira, a Cloud Computing tem se tornado uma area bastante fertil a serexplorada. As maiores empresas privadas da computacao em todo o mundo ja voltaramsuas atencoes para este paradigma computacional.

Exemplos sao: Microsoft, Google e Amazon, que despontam como as maiores de-senvolvedoras e ofertantes de servicos e solucoes em Cloud Computing ; servicos estes queabrangem desde o usuario comum ate grandes empresas, e podem ser Software, Plataformae/ou Infraestrutura.

Por outro lado, existem algumas plataformas de nuvem como: Nimbus, OpenNebula eo OpenStack que proveem solucoes open source, ou seja, seguindo os requisitos de codigoaberto definidos pela Open Source Iniciative OSI (2015) sendo eles: distribuicao do pro-duto (software/aplicacao) de forma livre ou gratuita para todos os grupos, pessoas e areasde atuacao, de maneira que seja permitido acesso ao codigo-fonte e a criacao de trabalhosderivados, garantindo o reconhecimento do autor do codigo fonte, em que a distribuicaoda licenca nao seja restrita a programas, produtos ou tecnologias;

Apesar da demanda por servicos em nuvem ser crescente dia apos dia, eis que surgeum problema relacionado a monopolizacao das tecnologias de tal paradigma computaci-onal pelas grandes empresas, junto a oferta de servicos semelhantes atraves solucoes de

tecnologias de codigo aberto, que permitam aos seus usuarios obter controle e gerencia deutilizacao dos recursos na nuvem.

1.2 Solucao Proposta

Baseado nos questionamentos levantados na Definicao do Problema fez-se uma pes-quisa a respeito de ferramentas e solucoes em codigo aberto para a Cloud Computingna qual o OpenStack surge como uma solucao adequada, baseando-se em suas carac-terısticas, as quais, se constitui como uma colecao de projetos de open-source (ou seja,de codigo aberto) utilizada pelas empresas ou provedores para configurar e gerenciar Nu-vens Computacionais. O projeto OpenStack visa construir uma comunidade open-sourcecom pesquisadores, desenvolvedores e empresas, que compartilham um objetivo comum:criar uma Nuvem simples de ser implantada, altamente escalavel e com varios recursosavancados (Wen et al., 2012).

De acordo com (OpenStack, 2014b), o OpenStack permite a realizacao de calculo demetricas e consumo de recursos para nuvem. No entanto essas funcionalidades so ficamvisıveis ao instalar o servico de Telemetria, sendo que como sera visto mais adiante algumasdas informacoes aparecem apenas para usuarios administradores da nuvem, caraterizandoum processo oculto ao usuario final.

Assim, surge a oportunidade de aliar o poder e os conceitos de Cloud Computing juntoaos servicos oferecidos pelo OpenStack de maneira que seja implementada uma ApplicationProgramming Interface (API) para sincronizar com o servico de metricas[i] do OpenStackque permita gerar relatorios de uso e custos por utilizacao de recursos de forma que estasinformacoes possam ser acessadas por quaisquer usuarios.

1.3 Objetivos

1.3.1 Objetivo Geral

Desenvolver um servico de telemetria para calculo de estimativas e criacao de relatoriosde uso de recursos em uma nuvem OpenStack.

1.3.2 Objetivos Especıficos

1. Realizar o levantamento bibliografico acerca de Cloud Computing ;

2. Pesquisar sobre calculos de estimativas baseadas na utilizacao de recursos para nu-vens OpenStack;

3. Desenvolver uma Application Programming Interface API para gerar os relatorios;

4. Coletar os resultados da aplicacao para o escopo definido, e analisar os resultados.

[i]As metricas sao as medidas brutas, atomicas e de simples composicao. Em uma estrutura de Armazena-mento de informacoes, por exemplo, podem ser armazenados no formato de tabelas e medem quantidades,valores e Dimensoes Elias (2014).

1.4 Justificativa

• Pessoal: Desejo em melhor conhecer a area de estudo tendo como objetivo se tornarum profissional capacitado no desenvolvimento, manutencao e utilizacao de tecnolo-gias em Cloud Computing.

• Academica: A Cloud Computing tem-se tornado um paradigma computacionalcada vez mais estudado no meio academico principalmente pelas areas que a compoem,como por exemplo, redes de computadores, virtualizacao, computacao distribuıda,trabalhos voltados para o desenvolvimento aplicacoes de monitoramento de utilizacaode recursos em nuvens, etc.

• Profissional: Ha alguns anos a Cloud Computing vem experimentando um elevadocrescimento quanto ao desenvolvimento de aplicacoes e adesao de grandes e mediasempresas a sua plataforma de oferta de servicos. Por esta razao, e importante parauma ampla gama de pessoas ter um conhecimento pratico acerca do tema, poispodera ser o modelo computacional predominante em todo o mundo.

1.5 Organizacao do trabalho

Alem deste Capıtulo, o trabalho esta dividido em outros 4, que sao:Capıtulo 2, que diz respeito ao Referencial Teorico, o qual e a base deste projeto

de estudo e abordara os seguintes assuntos e temas: Tecnologia da Informacao e a suarelacao com Cloud Computing ; Cloud Computing : conceitos e caracterısticas; Virtua-lizacao; OpenStack: caracterısticas, servicos, aplicacoes e recursos; Por fim o Ceilometer,o qual prove funcoes e aplicacoes para se acessar metricas no sistema OpenStack;

Capıtulo 3, diz respeito a Metodologia aplicada na pesquisa e as atividades presentesno desenvolvimento deste trabalho;

Capıtulo 4, mostra como foi realizada a implementacao, os testes, Alem dos resultadosobtidos;

E por fim o Capıtulo 5, apresenta a conclusao do trabalho bem como as expectativaspara projetos e trabalhos futuros.

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 5

Capıtulo 2

Referencial Teorico

“A educacao tem raızes amargas,mas os seus frutos sao doces.”

Aristoteles

2.1 Introducao

Este capıtulo trata do levantamento bibliografico, nele sao expostos conceitos e visoesda Cloud Computing a fim de que se entenda de uma forma geral a importancia quepermeia o tema, bem como a sua influencia no cenario tecnologico atual e quais tecnolo-gias compoem esse paradigma da computacao moderna. Dessa forma, procura-se falar darelacao entre a Cloud Computing e a Tecnologia da Informacao. Sao mostrados tambemquais os tipos de servicos providos pela Cloud Computing, quais suas caracterısticas es-senciais, os modelos de implantacao, conceitos e a importancia da virtualizacao.

Outro ponto a ser abordado e o OpenStack, expondo as caracterısticas do sistema, osservicos e aplicacoes providos pelo mesmo, com o intuito de tornar conhecido do leitor asinformacoes principais desse sistema de implantacao de nuvens.

Por fim, o capıtulo abordara o servico de Telemetria, o qual foi objeto de estudo nodesenvolvimento deste trabalho, estando presentes algumas definicoes, caracterısticas efuncionalidades que o servico dispoe para permitir a contagem de metricas de utilizacaodos recursos na nuvem.

2.2 A TI e seu papel nas organizacoes

Segundo Veras (2012), a Tecnologia da Informacao compreende o uso, processamentoe armazenamento da informacao atraves de recursos computacionais a fim de se realizarobjetivos diversos, tendo em vista que a TI seja fundamental para a competitividade deuma organizacao.

A TI nao somente desempenha o papel de orientacao tradicional de suporte admi-nistrativo como tambem o papel estrategico dentro da organizacao. Pois alem de proverassistencia as operacoes de negocio existentes, tambem permite que se viabilizem novasestrategias empresariais tendo em vista o suporte fornecido em larga escala pela TI juntoaos processos empresariais e organizacionais.

O uso eficaz da TI e a integracao entre sua estrategia e a estrategia do negocio vao alemda ideia de ferramenta de produtividade, sendo muitas vezes fator crıtico de sucesso. Hoje,

o caminho para este sucesso nao esta mais relacionado somente com o hardware e o softwareutilizados, ou ainda com metodologias de desenvolvimento, mas com o alinhamento daTI com a estrategia e as caracterısticas da empresa e de sua estrutura organizacional(Laurindo et al., 2001).

Veras (2012), divide a TI em quatro grandes partes: os sistemas de informacao (con-juntos de aplicativos), a arquitetura que diz respeito a estrutura hierarquica organizacionalda TI, a infraestrutura que representa o alicerce para os aplicativos e sustenta o modelooperacional, e por fim a gestao que diz respeito a governanca de TI, da forma como asdemais partes estarao organizadas e estrategicamente integradas.

A TI provoca repercussoes em todos os nıveis da estrutura organizacional: No nıvelestrategico, quando se deseja aumentar a coerencia entre a organizacao e o meio envolvente,se traduzindo em aumento de eficacia em termos de cumprimento da missao organizacional;Nos nıveis operacional e administrativo, quando existem efeitos endogenos, traduzidos emaumento da eficiencia organizacional em termos de opcoes estrategicas.

Ainda de acordo com Veras (2012), devido as organizacoes serem compostas por co-letaneas de grandes processos, e estes mesmos muitas vezes terem que responder as maisdiversas demandas que acabam reconfigurando e alterando-os, fica evidente a necessidadee importancia de se tratar de uma TI flexıvel, e que permita a rapida configuracao da or-ganizacao de forma a obter uma rapida flexibilidade e prover maior qualidade dos servicoscom o adequado financiamento da TI.

Dessa maneira, a Cloud Computing segundo Veras (2012), surge como a solucao anecessidade da TI mais flexıvel pois representa uma nova forma de pensar a mesma, onde:

1. Ao adotar a Cloud Computing, os custos do negocio passam do Capital Expenditure(CAPEX) que e o investimento de capital com equipamentos e instalacoes, paraOperational Expenditure (OPEX) que sao investimentos para gasto com operacao;

2. O investimento em infraestrutura de TI e reduzido, pois nao ha a necessidade decompra de servidores, softwares e licencas;

3. Aumenta o capital disponıvel para as areas estrategicas do negocio.

2.3 Cloud Computing

A computacao tem evoluıdo consideravelmente. Em aproximadamente meio seculo,desde que surgiram os primeiros computadores, a forma de como sao manipulados osdados e aplicacoes tem mudado consideravelmente, pois com os mainframes todo o acessoa dados e aplicacoes eram locais e distribuıdos atraves de redes internas, logo apos vieramaplicacoes em desktops e Personal Computer (PC’s) em geral que acessavam a mesmabase de dados. Posteriormente, as aplicacoes passariam a serem acessadas e manipuladasvia navegador Web, ou utilizando quase sempre o formato cliente-servidor-cliente, ondeuma grande parte do processamento era realizada na parte do cliente. Atualmente, asaplicacoes sao armazenadas em servidores, e acessadas via Internet a partir de qualquerlugar, com alto poder de processamento e disponibilidade (Sousa F. R. C., 2009). Exemplodessa afirmacao esta na Figura 2.1.

Gracas aos avancos tecnologicos, cada vez mais as pessoas tem estado conectadas. AInternet permite que nos mantenhamos informados, e que utilizemos seus recursos para

Figura 2.1: Uma representacao para Cloud Computing. Fonte:www.mrdba.com.br/cloud-computing-pesquisa/

compartilhar, acessar e criar uma quantidade de dados e informacoes cada vez mais cres-cente. Diante deste fato, uma nova forma de utilizacao de recursos computacionais temsido oferecida para a sociedade moderna, uma forma baseada em servicos, onde os softwa-res e outros recursos computacionais sao disponibilizados em uma plataforma de conexaocom o servidor (empresa ou organizacao) que oferece o servico atraves da Internet.

Segundo Buyya et al. (2009), Cloud Computing e uma tendencia recente da tecnologiacujo objetivo e proporcionar servicos de Tecnologia da Informacao sob demanda compagamento baseado no uso. Tendencias anteriores a Cloud Computing foram limitadasa uma determinada classe de usuarios ou focadas em tornar disponıvel uma demandaespecıfica de recursos de TI, principalmente de informatica.

Este modelo representa uma mudanca de paradigma computacional tanto para usuarioscomuns que podem criar, acessar e compartilhar seus documentos e arquivos armazenando-os em ”algum lugar”na Internet, quanto para empresas e corporacoes que podem obtermelhores resultados economicos e de mercado, por isto, pode-se considerar que que estae uma abordagem global e mais abrangente levando cada vez mais empresas a observar eestudar as vantagens e necessidades de embarcar nessa nova tendencia tecnologica.

2.3.1 Conceitos de Cloud Computing

A nuvem (Cloud) e uma metafora para a Internet ou infraestrutura de comunicacao,que tem como objetivo abstrair toda complexidade presente na mesma. Assim, atraves dacloud, servicos sao disponibilizados uma vez que estao alocados em data-centers, utilizandohardware compartilhado para computacao e armazenamento (Sousa F. R. C., 2009).

Os servicos podem ser utilizados pelos usuarios apenas com os requisitos mınimos depossuırem em suas maquinas um sistema operacional, um navegador e acesso a Internetalem dos componentes basicos de hardware. Todo o processamento computacional, bem

como todos os recursos estao disponibilizados na ”nuvem”e sao acessados via Internet, comisso, os usuarios nao precisam ter maquinas locais com alta capacidade computacional,diminuindo seus gastos com equipamentos e tornando possıvel aos mesmos a aquisicao denovos recursos de forma rapida e pratica a medida que surgir uma necessidade.

Tratando-se especificamente da definicao, entre as muitas definicoes dadas pelos pesqui-sadores da area, O National Institute of Standards and Technology NIST (2011) apresentaa definicao que sera usada neste trabalho e e considerada por muitos a mais aceitavel paraa Cloud Computing :

“E um modelo que fornece acesso atraves da rede (nuvem) a um conjunto de recursos configuraveise compartilhados de computacao (por exemplo, redes, servidores, armazenamento, aplicacoes eservicos) que podem ser rapidamente disponibilizados e liberados com um mınimo de esforco de

gestao e interacao com o fornecedor de servicos.”NIST (2011)

Este modelo divulgado pelo NIST para a Cloud Computing define cinco caracterısticasessenciais, tres modelos de servico e quatro modelos de implementacao, conforme exibidona Figura 2.2.

Figura 2.2: Modelo visual para Cloud Computing dado pelo NIST. Adaptado de:www.csrc.nist.gov/groups/SNS/cloud-computing/index.html (NIST).

As caracterısticas podem ser entendidas como o diferencial promovido pela CloudComputing. Algumas em conjunto, a definem exclusivamente tornando-a um paradigmacomputacional completamente inovador. De acordo com NIST (2011) as caracterısticasprincipais da cloud sao:

1. Autoatendimento sob demanda: Funcionalidades computacionais, tais comotempo de servidor, armazenamento e de rede, sao providas automaticamente con-forme as necessidades do cliente, sem que haja como pre requisito a interacao humanajunto ao provedor de servicos.

2. Amplo acesso a servicos de rede: Recursos estao disponıveis atraves da Internete sao acessados por meio de mecanismos padronizados que promovam uso atraves deplataformas heterogeneas, sendo elas dispositivos moveis e portateis, computadores,etc. (por exemplo, telefones celulares, tablets, notebooks, estacoes de trabalho).

3. Pool de Recursos: Recursos computacionais do provedor sao agrupados paraatender multiplos consumidores atraves de um modelo multilocatario, com diferentesrecursos fısicos e virtuais alocados e realocados dinamicamente de acordo com ademanda do consumidor.

4. Elasticidade Rapida: Funcionalidades Computacionais podem e devem ser elasti-camente provisionadas e liberadas, em alguns casos, automaticamente, e de acordocom a demanda. Para o consumidor, as capacidades disponıveis para provisiona-mento frequentemente parecem ser ilimitadas e podem ser contratadas em qualquerquantidade a qualquer momento.

5. Servicos Mensuraveis: Os sistemas utilizados para gerenciar a Cloud Computingautomaticamente controlam e otimizam o uso dos recursos, alavancando a capacidadede medicao em algum nıvel de abstracao apropriado para o tipo de servico (porexemplo, processamento, armazenamento, largura de banda e contas de usuariosativos). O uso dos recursos pode ser monitorado, controlado e reportado, oferecendotransparencia tanto para o provedor quanto para o consumidor do servico utilizado.

Conforme a definicao do NIST (2011), ha tres opcoes de modelos de entrega de servicosde Cloud Computing, compondo o seu padrao arquitetural:

• Software as a Service (Software como Servico) - (SaaS): Nesse modelo, acapacidade fornecida ao consumidor e a utilizacao de aplicativos do provedor rodandoem uma infraestrutura de nuvem. As aplicacoes sao acessıveis a partir de variosdispositivos clientes, tais como um navegador Web, ou uma interface de programa.Todo o controle e gerenciamento da rede, sistemas operacionais, armazenamento eservidores, e feito pelo provedor do servico. Exemplos de SaaS sao o Google Docs eo Microsoft Ofice 365.

• Platform as a Service (Plataforma como Servico) - (PaaS): E fornecida aoconsumidor a capacidade para implantar sobre a infraestrutura de nuvem aplicacoescriadas ou adquiridas usando linguagens de programacao, bibliotecas, servicos e fer-ramentas suportadas pelo provedor. O consumidor tem controle sobre os aplicativosimplementados e possivelmente definicoes de configuracao para o ambiente de hos-pedagem dos aplicativos. Se destacam como exemplos de PaaS a AppEngine doGoogle e o Windows Azure da Microsoft.

• Infrastructure as a Service (Infraestrutura como Servico) - (IaaS): O con-sumidor recebe a capacidade de provisionar processamento, armazenamento, redese outros recursos de computacao fundamentais, onde ele sera capaz de implantar eexecutar software arbitrario, que podem incluir sistemas operacionais e aplicativos.Neste cenario, o usuario nao tem o controle da infraestrutura fısica, mas, com osmetodos providos pela Virtualizacao, possui controle sobre os recursos virtualizadosde armazenamento, aplicativos instalados e sobre recursos limitados de rede. Exem-plo de IaaS e a Amazon Elastic Computing Cloud EC2 e o servico oferecido peloOpenStack.

Ja os modelos de implantacao definidos pelo NIST (2011), sao os seguintes:

• Nuvem Privada (Private Cloud): A infraestrutura de nuvem e provisionadapara uso exclusivo por uma unica organizacao que agrupa varios consumidores (porexemplo, unidades de negocio). Pode ser detida, gerida e operada pela organizacao,um terceiro, ou alguma combinacao deles, e ele pode existir ou nao no local. Nestemodelo de implantacao sao empregados polıticas de acesso aos servicos e as tecnicasutilizadas para prover tais caracterısticas sao as mesmas empregadas no modelo deservico de IaaS, ou seja, gerenciamento de redes, configuracoes dos provedores deservicos e a utilizacao de tecnologias de autenticacao e autorizacao. Exemplo destemodelo e a nuvem implantada no LabEPI[i], a qual foi o ambiente de desenvolvimentodo presente trabalho.

• Nuvem Publica (Public Cloud): No modelo de implantacao publico, a infra-estrutura de nuvens e disponibilizada para o publico em geral, sendo acessado porqualquer usuario que conheca a localizacao do servico. Pode ser detida, gerida e ope-rada pelo o meio academico ou organizacao governamental, ou alguma combinacaodeles. Ela existe nas instalacoes do provedor de nuvem. As restricoes de acesso, bemcomo politicas de autenticacao e autorizacao neste modelo sao menos rigorosas.

• Nuvem Comunitaria (Comunity Cloud): No modelo de implantacao comuni-dade ocorre o compartilhamento por diversas empresas de uma nuvem, sendo estasuportada por uma comunidade especıfica que partilhou seus interesses, tais comoa missao, os requisitos de seguranca, polıtica e consideracoes sobre flexibilidade.Este tipo modelo de implantacao pode existir localmente ou remotamente e pode seradministrado por alguma empresa da comunidade ou por terceiros.

• Nuvem Hıbrida (Hybrid Cloud): Neste modelo a infraestrutura de nuvem euma composicao de duas ou mais distintas infraestruturas de nuvem (privada, comu-nitaria ou publica) que permanecem entidades unicas, mas sao unidos por tecnologiapadronizada ou proprietaria que permite a portabilidade de dados e aplicacoes.

2.3.2 Virtualizacao

Virtualizacao e Cloud Computing estao relacionadas, no entanto, nao significam amesma coisa. A interseccao entre ambos ocorre quando se torna necessario virtualizarservidores durante a implantacao de cloud. Isso acaba reduzindo a relacao de dependenciaque os recursos de computacao exercem entre si, pois possibilita, por exemplo, a dissociacaoentre um aplicativo e o sistema operacional que ele utiliza.

A virtualizacao define-se como a criacao de um ambiente virtual para simular umambiente real, permitindo utilizar diversos sistemas e aplicativos sem que seja necessarioo acesso fısico a maquina na qual estao hospedados (Amaral, 2009).

Mais especificamente, um equipamento computacional virtualizado pode hospedar di-versos ambientes, chamados de Maquinas Virtuais, simultaneamente, compartilhando seusrecursos de processamento e armazenamento (MICROSOFT, 2009).

De acordo com (Veras, 2012), A Virtualizacao simplifica o gerenciamento, permitindotornar o processamento mais flexıvel e poderoso. Os softwares que possuem a capacidadede prover virtualizacao permitem melhorar a disponibilidade e a recuperacao de desastres

[i]Laboratorio de Elementos do Processamento da Informacao, situado no Campus Ceres - Caico - RN

de ambientes de TI de maneira mais simples e mais barata comparada aos meios maistradicionais.

A camada de virtualizacao de servidores mais conhecida e o HYPERVISOR ou Moni-tor de Maquina Virtual (MMV), O MMV permite implementar diversas maquinas virtuaisseparando os componentes/recursos virtualizados, esses recursos podem ser Central Pro-cessing Unit (CPU), Memoria RAM Random Access Memory e dispositivos de Entrada eSaıda (E/S).

Tipos de virtualizacao:

• Virtualizacao de Hardware (CPU): Consiste em permitir simular a execucaode varios sistemas operacionais na mesma maquina de forma que se comportemcomo se fossem varias maquinas fısicas distintas. Para isto e necessario a utilizacaode programas capazes de emular os componentes fısicos de um computador, essesprogramas geram maquinas virtuais (Virtual Machines, ou VMs) (Amaral, 2009).

Essa tecnica permite de certa forma eliminar a incompatibilidade existente entreaplicativos e sistemas operacionais; Por exemplo, um sistema operacional A, podeatraves do uso maquinas virtuais conter um outro sistema operacional B instalado deforma que A agora tera acesso aos aplicativos que rodam exclusivamente em B poisa maquina virtual permite logicamente simular o funcionamento de uma maquinafısica.

Outro ponto interessante e que para servidores, sua virtualizacao permite economia,melhor alocacao de espaco e maior aproveitamento de sua capacidade pois ao invesde se ter diversos subservidores fısicos e individuais, e muitas vezes sendo subapro-veitado as suas capacidades totais de uso, se torna possıvel e fundamental o uso deespacos e processamos extras na utilizacao de servidores logicos criados por maquinasvirtuais.

• Virtualizacao da Apresentacao (CPU): Similar a realizacao de acesso remoto,permite o acesso a um computador sem ter contato fısico com ele, outra caracterısticae que varios usuarios podem utilizar o mesmo sistema simultaneamente sem interferiruns nos outros (Amaral, 2009).

• Virtualizacao de Aplicativos (CPU): Consiste em ter uma unica copia de de-terminado aplicativo, instalada em um servidor virtual; usuarios que desejarem teracesso a tal aplicativo podem faze-lo diretamente, sem a necessidade de que eletambem esteja instalado na maquina fısica (Amaral, 2009).

• Virtualizacao de memoria: O MMV tem a capacidade de compartilhar paginasde memoria comuns entre varias MVs, controlar o acesso fısico a memoria e terconhecimento das paginas que estao sendo utilizadas Waldspurger (2012), Assim amemoria sera utiliza de maneira otimizada.

• Virtualizacao de Dispositivos de E/S: Todo acesso de Entrada e Saıda (E/S)e direcionado ao MMV. O monitor reconhece a finalidade do acesso e emula umacopia do hardware retornando-a ao sistema hospedado (Amaral, 2009).

Quanto mais recursos virtualizados, melhores resultados obtidos no processo de im-plantacao de Cloud Computing. Consequentemente os principais benefıcios serao a melho-

ria da gestao do ambiente de TI, seguranca da informacao, e o mais importante: consi-deravel reducao de custos e melhor aproveitamento da capacidade computacional levando-se em consideracao a quantidade de tempo em que o hardware e software passam ociososou subutilizados.

2.4 Uma plataforma de nuvem aberta

O OpenStack e uma colecao de projetos de software de codigo aberto utilizada pe-las empresas ou provedores para configurar e gerenciar Nuvens Computacionais. O pro-jeto visa construir uma comunidade open-source com pesquisadores, desenvolvedores eempresas, que compartilham um objetivo em comum: criar uma Nuvem simples de serimplementada, altamente escalavel e com varios recursos avancados (Wen et al., 2012).

2.4.1 Historico e Caracterısticas

Na construcao de nuvens privadas ou publicas o OpenStack surge como uma solucaode codigo aberto estavel e eficiente. O mesmo pode ser definido como um sistema ope-racional que controla pools de computacao (grande volume de recursos computacionais),armazenamento e recursos de rede atraves de um painel, uma interface Web e tem comoobjetivo a entrega de infraestrutura como servico (IaaS) atraves de uma plataforma opensource. Projetado em 2011 pela National Aeronautics and Space Administration of Uni-ted States (NASA) e Rackspace para gerenciamento interacao da nuvem, hoje e apoiadopor mais de 800 organizacoes, busca produzir uma plataforma onipresente de cloud com-puting de codigo aberto para nuvens privadas e publicas baseando-se nos princıpios deentrega de servicos sob demanda de tres principais pilares: computacao, redes e meios dearmazenamento OpenStack (2014c) como mostrado na Figura 2.3.

O OpenStack fornece uma solucao de Infrastructure-as-a-Service (IaaS), atraves deum conjunto de servicos inter-relacionados. De forma a permitir a gestao, orquestracaoe automacao dos recursos de TI que envolvem a construcao de uma nuvem privada ou autilizacao de nuvens publicas, dessa forma, analisando a Figura 2.3 pode ser observadoque as camadas relacionadas a aplicacoes e administracao de acesso estao no topo dapilha, com os elementos padroes de recursos para computacao, redes e armazenamentovindo imediatamente abaixo deles. Tudo repousa sobre os servicos compartilhados e, nofim, em plataformas padrao especıficas de hardware de codigo livre. Permitindo acesso derecursos de computacao atraves de APIs para desenvolvedores de aplicativos em nuvem efornecendo interface Web para administradores e usuarios OpenStack (2014c).

E uma plataforma consistente atualmente contando com 11 distribuicoes ou releases(como tambem e chamado), sendo que a primeira release lancada foi a Austin em outubrode 2010 e a ultima a Kilo lancada em Abril de 2015, a cada 6 meses a OpenStack Fundationlanca uma nova release contendo novos servicos ou atualizacoes e correcoes de bugs. NaTabela 2.1 segue um panorama geral dos releases do OpenStack ate a atual data.

O OpenStack tem gerado uma maior disseminacao do modelo de nuvem usando codigoaberto, estimulando baixos custos para a sua implementacao e manutencao, alem de contarcom uma grande comunidade para corrigir bugs e compartilhar conhecimento e tecnicasde implantacoes.

Serie Data do Lancamento

Kilo Apr 30, 2015Juno Oct 16, 2014Icehouse Apr 17, 2014Havana Oct 17, 2013Grizzly Apr 4, 2013Folsom Sep 27, 2012Essex Apr 5, 2012Diablo Sep 22, 2011Cactus Apr 15, 2011Bexar Feb 3, 2011Austin Oct 21, 2010

Tabela 2.1: Nome/Serie e Data dos Releases. Disponıvel em:https: // wiki. openstack. org/ wiki/ Releases (OpenStack).

2.4.2 Servicos do OpenStack

Escrito basicamente em Python o OpenStack possui uma arquitetura como a mostradana Figura 2.3 composta dos seguintes principais servicos/projetos:

Figura 2.3: Visao Geral OpenStack. Fonte: www.openstack.org/software (OpenStack).

Os servicos basicos do OpenStack sao:

• Nova (Servico Compute): Fornece servidores virtuais sob demanda, como osRackspace Cloud Servers ou a Amazon Elastic Compute Cloud EC2 no ambienteAmazon Web Services AWS. OpenStack (2014b);

O servico Compute e utilizado para hospedar e gerenciar sistemas de cloud compu-ting. Se caracteriza como de suma importancia no provimento de Infra-estrutura-como-Servico (IaaS) e os seus principais modulos sao implementados em Python.

Alem disso, o servico Compute interage com outros servicos como, autenticacao,imagem de disco para o servidor e imagens, e OpenStack Dashboard para o usuario

e interface administrativa.

Segundo Dieder (2012), algumas atribuicoes deste servico sao: Gerenciar os recur-sos computacionais, de rede e autorizacao, gerenciar o ciclo de vida de instancias,prover integracao administrativa e publica atraves de uma API REST, integraro sistema com hypervisors (Xen/XenServer, Kernel-based Virtual Machine KVM,VMware/ESX, Linux Containers (LXC), User Mode Linux (UML), Hyper-V, Qemu)e prover comunicacao assıncrona.

O servico Compute possui os modulos: Nova-API, Rabbit MQ Server, Nova-Compute, Nova-Scheduler, Nova-Network, Nova-Volume.

• Glance (Servico de Imagem): Fornece um meio de descobrir, armazenar e recu-perar maquinas virtuais para o OpenStack Nova. O Glance abrange desde os ele-mentos de painel de controle, calculo, rede ate itens de armazenamento. OpenStack(2014b);

• Horizon (Servico Dashboard) : fornece um painel com mecanismos de controlepara a administracao de servicos OpenStack, instancias, recursos e monitoramento destatus e eventos fornecendo maiores capacidades de solucao problemas. O DashBoarde a interface utilizada pelo Horizon. OpenStack (2014b);

• Keystone (Servico de Autenticacao): Responsavel pelo gerenciamento de usuarios.Mantem o controle de usuarios e o que eles estao autorizados a fazer, alem de for-necer um catalogo de quais servicos estao disponıveis e onde seus terminais de APIestao localizados. OpenStack (2014b)

• Neutron (Servico de Redes): Responsavel por manter conectados os servicosOpenStack entre si atraves de conexoes de rede. O Neutron fornece uma API degerenciamento de redes e enderecos de Internet Protocol (IP) permitindo que osusuarios configurem suas prorias redes dentro da nuvem OpenStack. Assim comooutros aspectos do sistema operacional em nuvem, ele pode ser usado por adminis-tradores e usuarios para aumentar o valor dos ativos do datacenter existentes. Suaarquitetura suporta varios padroes de redes e tecnologias. OpenStack (2014b);

• Swift (Servico de Object Storage): Fornece objetos para dados, conteudo eoutros materiais. Isto se origina dos RackSpace Cloud Files e e mais ou menosanalogo ao Amazon Simple Storage Service (S3) dentro de seu ambiente AmazonWeb Services. O Swift e tido como o item de Armazenamento. OpenStack (2014b);

Alem dos servicos basicos outros servicos fazem parte da arquitetura do OpenSatcksao eles:

• Ceilometer (Servico de Telemetria): Fornece o monitoramento e medicao doconsumo dos recursos do OpenStack para fins de faturamento, benchmarking (pro-cesso de busca de melhores praticas), escalabilidade e estatısticas. OpenStack (2014b);

• Cinder (Servico de Block Storage): Fornece armazenamento em blocos parainstancias OpenStack Compute. Este servico e semelhante a oferta Amazon EC2Elastic Block Storage (EBS). Possui uma arquitetura plugavel facilitando criar egerenciar blocos de armazenamento. OpenStack (2014b);

• Heat (Servico de Orquestracao): Orquestra as aplicacoes da nuvem usando omodelo nativo HOT ou o formato da AWS Cloud-Formation. O servico pode seracessado atraves de API REST, como tambem fornece compatibilidade com a APICloudFormation de forma a garantir a configuracao e implantacao automatica derecursos em pilhas. OpenStack (2014b);

• Trove (Servico de Database): Garante isolamento de recursos em nıveis eleva-dos de desempenho, automatizando tarefas administrativas complexas, tais comoimplementacao, configuracao, aplicacao de patches, backups, restauracoes e monito-ramento atraves do fornecimento de Banco de Dados como um Servico, (Database-as-a-Service - DaaS) para bancos de dados relacionais e nao relacionais de maneiraescalavel e confiavel.OpenStack (2014b)

A arquitetua conceitual e os servicos do OpenStack se relacionam como mostrada naFigura 2.4:

Figura 2.4: A arquitetura Conceitual OpenStack, Disponıvel emwww. openstack. org/ software/ (OpenStack).

2.5 O Servico Ceilometer

O projeto Ceilometer[ii] foi iniciado em 2012 com um objetivo simples em mente: ofe-recer uma infra-estrutura para recolher todas as informacoes necessarias sobre projetosOpenStack. Dessa maneira, visa proporcionar um unico ponto de contato para sistemasde faturamento adquirir todas as medidas necessarias para estabelecer o faturamento douso dos recursos da nuvem pelo o cliente. (OpenStack, 2015a)

O modulo de telemetria foi originalmente projetado para suportar sistemas de fatu-ramento para recursos de nuvem OpenStack. Este servico abrange apenas a parte demedicao do processamento necessario para o faturamento, coletando informacoes sobre osistema e armazenando-as na forma de amostras, a fim de fornecer dados sobre qualquercoisa que pode ser cobrada. Tendo em vista que, na industria de nuvem, os fornecedoresdevem usar multiplas etapas, incluindo medicao e classificacao. Para se calcular o fatura-mento, o processo como um todo se torna complexo, por isso, e necessario definir o termo”Servico Medido”baseando-se em metricas. O Ceilometer por sua vez permite utilizarvarias metricas predefinidas bem como permite a insercao de novas metricas de acordocom a necessidade e a utilizacao de novos recursos. OpenStack (2014b)

Desta maneira, a lista de metricas esta crescendo continuamente, o que faz com queseja possıvel utilizar os dados recolhidos atraves da telemetria para diferentes fins, quenao sejam de faturamento. Por exemplo, o recurso autoscaling (auto escala) no moduloOrchestration pode ser desencadeado por alarmes deste conjunto de modulos e, em seguida,e notificado no prazo de telemetria.

De acordo com OpenStack (2015a), o processo de faturamento normalmente executadoem grandes empresas compreende tres etapas:

1. Medicao (Metering): E o processo de coleta de informacoes sobre o que, quem,quando e quanto, Ou seja e o calculo de qualquer coisa que pode ser cobrada. Oresultado disso e uma colecao de (amostras) que estarao prontas serem processadosda maneira que voce quiser.

2. Avaliacao (Rating): E o processo de analisar uma serie de bilhetes, de acordo comas regras de negocios definidas, a fim de transforma-los em itens com um valor demoeda, mercado.

3. Faturamento (Billing): E o processo de criacao de conta para o cliente, de formaa emitir a fatura para iniciar a coleta de pagamento.

A meta do ceilometer e estritamente limitada ao passo 1. Esta foi uma escolha feitadesde o inıcio, pois prover processos de Avaliacao e Faturamento traria uma grande va-riedade de opcoes e o projeto nem sempre conseguiria uma solucao que se encaixe asnecessidades de todos, em particular para nuvens publicas. OpenStack (2015a)

Isto significa que o projeto Ceilometer e suficiente para resolver as necessidades defaturamento, mas certamente nao e o fim da estrada. Uma vez que o Ceilometer estaimplantado em sua nuvem OpenStack, e preciso construir regras de utilizacao para definir

[ii]A inspiracao para o nome deste projeto OpenStack veio de uma ferramenta utilizada na me-teorologia (ciencia que estuda os fenomenos atmosfericos), no qual, um Ceilometer e um disposi-tivo que utiliza um laser ou outra fonte de luz para determinar a altura de uma base da nuvem.Fonte:(http://en.wikipedia.org/wiki/ceilometer)

valores e etc. Outro ponto e estudar as consultas adequadas no ambito do API Ceilometerpara extrair as informacoes e classificacoes proprias.

2.5.1 Conceitos

Meters (Metricas):

Metricas simplesmente medem um aspecto particular do uso de recursos (por exemplo,a existencia de uma instancia em execucao) ou de desempenho em curso (por exemplo, acorrente de utilizacao da CPU para essa instancia) (Rdo-Project, 2013).

Todas as metricas tem um nome unico, uma unidade de medida, e um tipo que indica seos valores sao monotonamente crescente (cumulative), interpretado como uma mudancaem relacao ao valor anterior (delta), ou um valor autonomo que apenas diz respeito aduracao atual (gauge) (Rdo-Project, 2013).

Samples (Amostras):

Amostras sao simplesmente ”datapoints” (ou seja, informacoes individuais e unicasassociados a uma metrica particular). Como tal, todos os exemplos englobam os mesmosatributos que o contador propriamente dito, mas com a adicao de um marcador de tempoe um valor (tambem conhecido como a amostra ”volume”)Rdo-Project (2013).

Statistics (Estatısticas):

Se a amostra e um unico ”datapoint” ou ponto de dados, em seguida, uma estatısticae um conjunto de pontos de dados tais agregados ao longo de um perıodo de tempo.Ceilometer emprega atualmente cinco funcoes de agregacao diferentes:

• count: o numero de amostras em cada perıodo;

• max: o valor maximo dos volumes de amostras em cada perıodo;

• min: o valor mınimo dos volumes de amostras em cada perıodo;

• avg: a media dos volumes de amostras em cada perıodo;

• som: a soma dos volumes de amostras em cada perıodo.

Nota-se que todas essas funcoes de agregacao sao aplicadas para cada estatıstica cal-culada. Isto pode parecer um desperdıcio se o usuario esta interessado apenas em umdos valores, mas, na pratica, quase nenhum custo computacional extra e agregado paracalcular esses valores Rdo-Project (2013).

2.5.2 Arquitetura

De Acordo com OpenStack (2015a) cada um dos servicos do ceilometer sao projetadospara escalar horizontalmente. O Ceilometer oferece cinco servicos essenciais, os agentes dedados sao projetados para trabalhar de forma independente dos coletores e dos Alarmes,mas tambem podem desempenhar papeis juntos como uma solucao completa:

• agentes de votacao (polling agent) - Projetado para pesquisar servicos OpenStacke construir Metricas.

• agentes de notificacao (notification agent)- Projetado para ouvir as notificacoesda fila de mensagens e converte-los para eventos e amostras.

• coletor (collector)- Projetado para reunir dados de evento e registro de pressao emedicao criados pelos agentes de notificacao e de votacao.

• api - Servico para consultar e visualizar dados registrados pelo servico de colecio-nador.

• alarmes alarming - Servico de avaliacao e notificacao com base em regras de alarmesdefinidas.

Uma representacao de como e a arquitetura do Ceilometer pode ser visualizado naFigura 2.5.

Figura 2.5: A arquitetura conceitual do Ceilometer, Disponıvel emhttp: // docs. openstack. org/ developer/ ceilometer/ architecture. html (OpenStack).

Para que os servicos citados anteriormente na arquitetura funcionem corretamente saoos componentes basicos executados e instalados na nuvem os responsaveis pelas tarefas.Sao eles:

• Compute Agent (ceilometer-agent-compute): E executado em cada no com-pute (ou seja, cada no de computacao) e fornece pesquisas para as estatısticas deutilizacao de recursos. (OpenStack, 2014b);

• Central Agent (ceilometer-agent-central): E executado no servidor de geren-ciamento central para coletar as estatısticas de utilizacao de recursos para recursosnao vinculados a instancias ou nos de computacao. (OpenStack, 2014b);

• Collector (ceilometer-collector): E executado em um ou mais servidores degerenciamento central para monitorar as filas de mensagens (para notificacoes epara dados de medicao provenientes do agente). As mensagens de notificacao saoprocessadas e transformadas em medicao e enviadas de volta. (OpenStack, 2014b);

• Alarm Notifier (ceilometer-alarme-notifier): E executado em um ou mais ser-vidores de gerenciamento central para permitir configurar alarmes com base na ava-liacao limiar para uma colecao de amostras. (OpenStack, 2014b);

• Data Store: Um banco de dados capaz de lidar com a escrita simultanea (a par-tir de uma ou mais instancias do collector) e le-se (a partir do servidor de API).(OpenStack, 2014b);

• API server (ceilometer-api): E executado em um ou mais servidores de ge-renciamento central para fornecer acesso aos dados do armazenamento de dados.(OpenStack, 2014b);

Todos os componentes/agentes sao desenvolvidos na linguagem Python assim comopraticamente todo o OpenStack.

2.5.3 Metodos de consultas

Para se realizar consultas as informacoes, metricas do servico, pode ser utilizado asseguintes API’s:

• cURL: E uma ferramenta de linha de comando que permite enviar solicitacoesHTTP das mais variadas formas e receber respostas. As aplicacoes utilizando essaferramenta sao as mais variadas e afetam bilhoes de usuarios em todo o mundo;

• Clientes OpenStack para linha de comando: Cada projeto OpenStack forneceum cliente de linha de comando que permite que voce acesse sua API atraves decomandos de facil utilizacao;

• REST clients: Sao Apis de envio de solicitacoes HTTP por meio de navegadorescomo Google Chrome, Firefox, entre outros;

• Kit de desenvolvimento de softwares python OpenStack(Python SDK):Permite escrever scripts de automacao Python que criam e fazem chamadas emobjetos Python ao inves de fazer chamadas REST diretamente. Todas as ferramentasde linha de comando OpenStack sao implementados usando o Python SDK.

2.6 Trabalhos Relacionados

Existem muitos trabalhos relacionados ao tema de Cloud Computing, entre alguns sedestacam os que sao relacionados a metodos de monitoramento e calculo de consumo derecursos.

Carvalho (2015), Em sua tese propoe um framework que mantem o monitoramentoautomatico e atualizado de recursos contratados pelos usuarios da nuvem, a medida queestes sejam criados, modificados ou destruıdos na plataforma de nuvem. O frameworkproposto suporta diversas plataformas e solucoes de monitoramento em nuvem, e e res-ponsavel pela coleta e organizacao de informacoes das plataformas, atraves da deteccaode operacoes que ocorreram na plataforma e pela configuracao das solucoes de monitora-mento de acordo com regras definidas pelo administrador. O autor analisou solucoes deplataformas de nuvens atuais e os seus metodos de monitoramento, citando entre outras,solucoes como OpenStack e o servico Ceilometer, o qual foi integrado ao desenvolvimentodo framework proposto. O framework desenvolvido foi intitulado de FlexACMS (FlexibleAutomated Cloud Monitoring Slices).

Ja Brinkmann et al. (2013), apresentam uma arquitetura de monitoramento que foi de-senvolvida e e atualmente implementada em um projeto chamado EASI-CLOUDS. No seutrabalho eles falam das multiplas exigencias sobre sistemas de monitoramento de nuvem,e dos controles regulares dos SLA’s ou seja, acordos de nıveis de servicos e faturamentobaseando-se no uso de recursos. Os autores ainda discorrem sobre a estimativa e con-versao de leituras de infra-estrutura em intervalos curtos. Outro ponto que se destaca eque para garantir a escalabilidade de toda a nuvem, o sistema de monitoramento deve serbem dimensionado sem desperdicar recursos. No trabalho, os autores citam algumas pla-taformas de nuvem como o OpenStack, que fornecem meios para implantacao e metodosde gerenciamento de recursos em nuvem. Os autores entao propoem uma abordagem emque os dados de monitoramento sao organizados em uma estrutura de arvore distribuıdoe facilmente escalavel e seu principal componente inclui a interface, a raiz da arvore ede extensao de pontos para sub arvores que sao implementados e gerenciados localmentepelos fornecedores de dados deles mesmos. Apesar da variedade e a distribuicao dos dados,o seu acesso e generico e localizacao transparente, dessa forma, alem de simples fornece-dores de dados de monitoramento, e esbocado um componente que fornece os meios paraarmazenar e pre-processar dados. A motivacao para este componente e o de que o sistemade controle pode ser ajustado para os seus assinantes.

Xiaojiang and Yanlei (2013) em seu trabalho, abordam a importancia do uso de CloudComputing como uma solucao eficaz para a construcao de sistemas e aplicacoes de acordocom suas demandas, isso remete a escalabilidade e disponibilidade da nuvem. No trabalho,propoe uma Plataforma de Servicos em computacao em nuvem baseado no OpenStack quesuporta o gerenciamento de servico, auto-scaling, controle de seguranca e alta disponibili-dade, etc. Para alcancar a gestao eficaz dos recursos e garantir a qualidade do servico, osautores propuseram a implementacao do monitoramento de recursos subsistema. Ele podemonitorar metricas de desempenho utilizacao da CPU, uso de memoria e recursos fısicose virtuais como E/S de rede. Como resultado, os dados persistentes podem ser utilizadospelo subsistema de gestao de recursos e subsistema de alarme.

No trabalho de Rossigneux et al. (2014), os autores enfocam a computacao em nuvempara a industria de TI, onde seus processos em grandes industrias muitas vezes consomemenormes quantidades de energia eletrica. Os autores reforcam a ideia de que esforcos tem

sido feitos para reduzir o consumo de energia nas nuvens, de acordo com a pesquisa reali-zada o autor observa que certos centros de dados tem se aproximado de um fator intituladoPower Usage Effectiveness (PUE). No trabalho os autores tambem falam a respeito deum valor aproximado para o PUE que revela a infra-estrutura de TI como a responsavelpor uma grande parte da energia consumida por um data center. Dessa forma, o monito-ramento e analise de como a energia e gasta tem sido crucial. Os autores falam que esseacompanhamento e necessario nao so para a compreensao de como a energia e consumida,mas tambem para avaliar o impacto das polıticas de gestao de energia. Os autores tambemtrazem a tona resultados de experiencia sobre o controle de sistemas em larga escala e in-troduz uma estrutura de software de monitoramento de energia chamado de quilowattsAPI (KWAPI), capaz de lidar com nuvens OpenStack. O software cuja arquitetura e es-calavel, extensıvel e completamente integrado ao OpenStack, suporta varios dispositivoswattımetros, multiplos formatos de medicao, e minimiza a sobrecarga de comunicacao.

Em Cima et al. (2015), sao tratados aspectos de eficiencia energetica que podem seradicionados a nuvens OpenStack. Os autores buscam elaborar um gerenciador de recursosde energia eficiente para OpenStack, primeiro, analisando a utilizacao de recursos de ener-gia em nossos recursos de nuvem. No trabalho, e observado que ha um custo fixo associadocom padroes de utilizacao do servidor, e e necessario deliga-los para atingir economias deenergia. Os autores discutem metodos de mecanismos de migracao de servidores e con-solidacao de carga, como solucao sofisticadas de gerenciamento de cargas. Por fim, saodiscutidos trabalhos em curso sobre a realizacao de um gerente de carga para OpenStackcom base nessas observacoes.

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 23

Capıtulo 3

Procedimentos Metodologicos

“A persistencia e o menor caminho para o exito”Charles Chaplin

3.1 Caracterizacao da Pesquisa - Estudo de Caso

A metodologia escolhida para a elaboracao do presente trabalho monografico foi depesquisa bibliografica e experimental do tipo estudo de caso, de acordo com Yin (2001),o estudo de caso e uma estrategia de pesquisa que compreende um metodo abrangenteem abordagens especıficas de coletas e analise de dados. Este metodo e util quando ofenomeno a ser estudado e amplo e complexo e nao pode ser estudado fora do contextoonde ocorre naturalmente.

Yin (2001) destaca que, os estudos de caso podem ser:

• Exploratorios: quando se quer encontrar informacoes preliminares sobre o assuntoestudado. Importante no desenvolvimento de Estudos de Casos explanatorios, poispermite confrontar teorias diversas, em que existem diferentes perspectivas, enrique-cendo o estudo;

• Descritivos: Tem como objetivo descrever o estudo de caso realizado;

• Explanatorios: Busca problematizar ou produzir novas teorias com o intuito deproblematizar o seu objeto, construir ou desenvolver novas teorias que irao ser con-frontadas com as teorias ja existentes, proporcionando avancos do conhecimento.

Foi aplicado o tipo de estudo de caso explanatorio, onde, identificado um problema,foi proposta e desenvolvida nova solucao baseando-se em outras existentes com o objetivode avancar a area de pesquisa.

Foram realizadas as seguintes atividades:

1. Escolha do tema;

2. Estudo bibliografico;

3. Estudo tecnico;

4. Implementacao da aplicacao;

5. Coleta e analise dos resultados.

Cada um desses passos sera descrito com detalhes mais adiante.

3.2 Realizacao do Estudo bibliografico

A realizacao do estudo bibliografico deu-se atraves de pesquisas a obra de diversosautores a respeito de cloud computing e suas aplicacoes, tecnologia da informacao, com ointuito obtencao de conhecimento aprofundado sobre o tema escolhido e fundamentacaoteorica para desenvolver a aplicacao proposta.

3.3 Realizacao do Estudo tecnico

O estudo tecnico foi realizado atraves de documentacoes do OpenStack (providas emantidas pela fundacao OpenStack e pelos os colaboradores do projeto) e na busca deinformacoes por ferramentas que integram o sistema de nuvem como um todo, algumasinformacoes que ajudaram no desenvolvimento do trabalho foram encontradas em forunspublicos de discursoes na web outras em tutoriais de utilizacao de ferramentas e aplicacoes.

3.4 Implementacao da aplicacao

A implementacao da aplicacao teve inıcio apos ser adquirido o domınio tecnico sobreo problema, e compreendeu as seguintes atividades:

• Implantacao do servico de telemetria para o openstack: Diz respeito a ins-talacao do Ceilometer seguindo as orientacoes do guia (OpenStack, 2014b), bemcomo os testes realizados na API fornecida pelo Ceilometer;

• Escolha das tecnologias (Ferramentas, linguagens de programacao) quepossibilitaram o desenvolvimento: Diz respeito ao estudo referente as ferra-mentas e linguagens que poderiam ser utilizadas para implementacao da API;

• E a realizacao de testes de funcionalidades: Diz respeito aos testes realizadosna API depois de implementada com o objetivo de colher informacoes quanto aofuncionamento e desempenho da mesmo quanto os objetivos pretendidos.

Cada uma das atividades realizadas na implantacao e explicado detalhadamente em 4.

3.5 Coleta e analise dos resultados

Por fim, a coleta e analise dos resultados (explicado de forma pratica e com maioresdetalhes em 4.7) desenvolveu-se atraves do estudo dos graficos e relatorios gerados pelaaplicacao na fase de testes, possibilitando relacionar e avaliar os resultados com a solucaoproposta em 1.2 e os objetivos do trabalho em 1.3.1.

Para a coleta dos resultados foram realizados testes que avaliaram o desempenho daAPI RDU2 em comparacao com as API’s padroes dos servicos OpenStack, a tabela 3.1abaixo, explica cada teste realizado, a avaliacao, e os resultados obtidos.

Teste Avaliacao Resultados

Autenticacao OpenStack.Credenciais de usuario

(tenant, login, password).

Usuarios autenticados comsucesso, visualizacao de todos

os servicos integradose em funcionamento.

Verificacao do servicoCeilometer.

Estado de funcionamento(ativo, erro).

O servico retornou uma listade metricas disponıveispara consulta (ativo).

Consulta de metricasutilizando o servico

Dashboard, logado comousuario administrador.

Quais metricas o adminis-trador da nuvem possui

acesso atraves doDashboard.

O administrador visualizatodas as metricas relacionadas

ao usuario admin eaos demais usuarios.

Consulta de metricasutilizando o servico

Dashboard, logado comousuario comum.

Quais metricas o usuariocomum possui acessoatraves do Dashboard.

O usuario comum naotem acesso a nenhumainformacao de metricas.

Consulta de metricas,Via API de Linha

de comandos OpenStack.

O funcionamento daAPI, suas respostaspara as requisicoes.

A API fornece suportea todas as funcionalidades

de busca e cadastro de metricascom resultados satisfatorios.

Consulta de metricas,Via API cURL.

O funcionamento daAPI, suas respostaspara as requisicoes.

A API fornece suportea todas as funcionalidades

de busca e cadastro de metricascom resultados satisfatorios.Possui extensao para imple-

mentacoes em python.

Consulta de metricas,Via API REST Clientpara navegadores.

O funcionamento daAPI, suas respostaspara as requisicoes.

A API fornece suportea todas as funcionalidades

de busca e cadastro de metricas,porem seu desempenho naofoi satisfatorio, por algumasrestricoes com o nevegador.

Consulta de metricas utili-zando filtro por funcoes.

Consultas de informacoesde metricas por faixa de

tempo, valores, etc.

O servico retornou informacoesrefinadas de acordo com as

funcoes repassadas.

Consulta de metricascomo usuario admin.

Quais metricas o adminis-trador da nuvem possui

acesso.

O servico retornou todas asmetricas relacionadas ao usuarioadmin e aos demais usuarios.

Teste Avaliacao Resultados

Consulta de metricascomo usuario cliente.

Quais metricas o usuariocom acesso restrito pode

visualizar.

O servico retornou todas asmetricas relacionadas apenas ao

usuario cliente.

Autenticacao via APIRDU2.

Capacidade da API autenti-car usuarios no servico.

A API funcionou corretamenteretornando a confirmacao deautenticacao dos usuarios.

Consulta de metricas viaAPI RDU2, parausuario admin.

Capacidade de a APIrealizar consultas para

usuarios administradores.

A API retornou as informacoesde cada metrica para usuarioadmin e demais usuarios.

Consulta de metricas viaAPI RDU2, parausuario comum.

Capacidade de a APIrealizar consultas para usua-

rios com acesso restrito.

A API retornou informacoesde metricas relacionadas apenas

com o usuario comum.

Geracao de graficos erelatorios via API RDU2

Capacidade de a APIdemonstrar graficamente autilizacao dos recursos na

Nuvem atraves de relatorios.

A API gerou graficos paracada usuario e metricasde recursos pesquisadas.

Tabela 3.1: Testes realizados e resultados obtidos.

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 27

Capıtulo 4

Analise do Estudo de Caso -

Projeto Pratico

“Descobrir consiste em olhar para o que todo mundo esta vendo e pensar uma coisa diferente.”Roger Von Oech

4.1 Introducao

Este capıtulo tem o intuito de apresentar os metodos, ferramentas e tecnicas utilizadasno desenvolvimento da aplicacao.

4.2 Implementacao da aplicacao RDU2

Na etapa de desenvolvimento desta atividade escolheu-se primeiro instalar o servicode Telemetria (ceilometer) do OpenStack, para que depois de instalado dependendo dasexperiencias obtidas no manuseio do mesmo fossem entao identificadas as tecnologias eferramentas para implementacao da aplicacao.

O Ceilometer foi escolhido levando em consideracao as premissas abaixo:

1. Segundo (OpenStack, 2014b) ele e o servico proprio desenvolvido pelo OpenStackpara a coleta e armazenamento de dados referente a utilizacao de recursos na nuvem,Ou seja, em outras palavras o Ceilometer e a base arquitetural para qualquer sistema,aplicacao de calculos e estimavas de recursos em implantacoes de nuvens Openstack.

2. O fato do Ceilometer ser usado por grandes empresas em suas nuvens privadasOpenStack, exemplo da HP Helion OpenStack[i] que tambem utiliza o servico demetricas para fins de faturamento.

Depois de instalado o servico de Telemetria Ceilometer, foi-se realizado diversas in-teracoes e testes com o sistema atraves das API’s mostradas na Figura 2.5 e explicadasem A.2 que sao providas pelo Ceilometer.

Depois de testar a instalacao e conhecer melhor a base do servico ceilometer, foramescolhidas as tecnologias/ferramentas para desenvolvimento da aplicacao tendo como re-ferencia a linguagem em que o Ceilometer e implementado e quais metodos ele fornece.

[i]https://docs.hpcloud.com/helion/openstack/1.1/services/reporting/overview/

Por fim, foi realizado o desenvolvimento e implementacao aplicacao e depois foramrealizados testes e colhidos os resultados.

4.3 Instalacao do Servico de Telemetria - Ceilometer

Esta atividade esta disponıvel no Apendice A apos as referencias bibliograficas.

4.4 Interacoes com a API Ceilometer

De acordo com a (OpenStack, 2014a) que foi a base de estudo dessa atividade, emboracada servico seja instalado separadamente, ambos trabalham em conjunto para atenderas suas necessidades na nuvem: Autenticacao, Computacao, servico de imagem, BlockStorage, Networking, objeto de armazenamento, Orquestracao, e telemetria.

Dessa forma, seguindo as instrucoes dadas pela documentacao (OpenStack, 2014a)foram realizados interacoes de autenticacao no servico e coletadas informacoes de metricasatraves das ferramentas cURL e da linha de comandos para clientes OpenStack(ver 2.5.2 e A.2).

Alguns exemplos de interacoes e requisicoes realizadas sao exibidos abaixo:

1. # curl -s -X POST http://ControllerNode:35357/v2.0/tokens -H "Content

-Type: application/json" -d ’{"auth": {"tenantName": "teste", "

passwordCredentials":{"username": "teste", "password": "teste"}}}’

| python -m json.tool

No item 1, temos um exemplo de Autenticacao no Ceilometer utilizando a ferramentacURL, onde, sao fornecidos o endereco de autenticacao, e as credenciais do usuario.

2. # curl -X GET -H "X-Auth-Token:

MIIJdwYJKoZIhvcNAQcCoIIJaDCCCWQCAQExCTAHBgUrDgMCGjCCB80GCSqGSIb3DQEH

" -H "Content-Type: application/json" "http://10.0.0.11:8777/v2/

meters" | python -m json.tool

Ja no item 2, temos um exemplo de pesquisa de metricas utilizando a ferramentacURL, onde, sao fornecidos em ordem: o token de autenticacao recebido pelo usuariona etapa anterior e o endereco para consulta das metricas.

3. # curl -X GET -H "X-Auth-Token:

MIIJdwYJKoZIhvcNAQcCoIIJaDCCCWQCAQExCTAHBgUrDgMCGjCCB80GCSqGSIb3DQEH

" -H "Content-Type: application/json" "http://10.0.0.11:8777/v2/

meters/cpu/statistics" | python -m json.tool

% Total % Received % Xferd Average Speed Time Time Time

Current

Dload Upload Total Spent Left

Speed

100 331 100 331 0 0 41 0 0:00:08 0:00:07 0:00:01

83

[

{

"avg": 513226804889.6148,

"count": 18979,

"duration": 21750488.0,

"duration_end": "2015-07-30T11:20:47",

"duration_start": "2014-11-20T17:32:39",

"groupby": null,

"max": 6444400000000.0,

"min": 0.0,

"period": 0,

"period_end": "2014-11-20T17:32:39",

"period_start": "2014-11-20T17:32:39",

"sum": 9740531530000000.0,

"unit": "ns"

}

]

E no exemplo do item 3, temos a resposta da api contendo informacoes sobre es-tatısticas utilizando a ferramenta cURL.

4.5 Tecnologias e Ferramentas utilizadas

Devido o OpenStack e seus servicos serem desenvolvidos utilizando a linguagem de pro-gramacao Python [ii], foi decidido desenvolver a aplicacao, descrita neste trabalho tambemutilizando a linguagem Python.

O Ceilometer fornece uma ApiWeb para realizar a comunicacao com os seus servicos, asinformacoes que sao enviadas e recebidas sao requisicoes que utilizam Hyper Text TransferProtocol (HTTP), foi entao utilizada a biblioteca Pycurl [iii] que tambem e implementadana linguagem Python e permitiu a comunicacao da API com o servico Ceilometer.

Por fim, Apos a recepcao e tratamento das informacoes os dados sao gerados em formade graficos, de acordo com essa caracterıstica foi decidido utilizar a ferramentaGnuplot [iv]

integrada com o Python tambem atraves da biblioteca Gnuplot.py [v]

4.5.1 Python

Python e uma linguagem de programacao poderosa e facil de aprender. Ela possuiestruturas de dados de alto nıvel, eficientes e uma abordagem simples, muito eficaz paraprogramacao orientada a objetos. A sintaxe do Python tambem e elegante e juntamentecom a sua natureza interpretada, tornam Python ideal para scripting e desenvolvimentorapido de aplicacoes em muitas areas na maioria das plataformas Python (2015).

O interpretador Python e sua extensa biblioteca padrao estao disponıveis gratuitamentena fonte ou forma binaria para todas as principais plataformas, e pode ser distribuıdolivremente em www.python.org, alem de que e facilmente estendido com novas funcoes e

[ii]https://www.python.org/[iii]http://pycurl.sourceforge.net/doc/index.html[iv]http://gnuplot.sourceforge.net/[v]http://gnuplot-py.sourceforge.net/

tipos de dados implementados em C ou C ++ (ou outros linguagens de programacao quepodem ser chamados a partir de C)Python (2015).

Aqui sao citadas apenas algumas caracterısticas como referencia desta linguagem. Paraentender e conhecer mais a respeito acesse a documentacao gratuita do Python [vi].

4.5.2 A biblioteca Pycurl

A biblioteca pycurl e uma interface Python para libcurl. pycurl foi feito e testado comversoes Python 2,4-2,7 e 3,1-3,4 com sucesso.

libcurl e uma biblioteca de transferencia de URL do lado do cliente de suporte FTP,FTPS, HTTP, HTTPS, Gopher, Telnet DICT, o FILE e LDAP. libcurl tambem suportacertificados HTTPS, HTTP POST, HTTP PUT, uploads FTP, proxies, cookies, auten-ticacao basica, transferencia de arquivos, currıculo de sessoes FTP, tunneling, proxy HTTPPycurl (2015).

Toda a funcionalidade fornecida pelo libcurl pode ser usado atraves da interface pycurl.

4.5.3 Gnuplot

O Gnuplot e um utilitario grafico em linha de comando portatil orientado para Linux,OS / 2, MSWindows, OSX, VMS, e muitas outras plataformas. O codigo-fonte e protegidopor direitos autorais, mas livremente distribuıdo (ou seja, voce nao tem que pagar porisso). Ele foi originalmente criado para permitir que cientistas e estudantes pudessemvisualizar funcoes matematicas e dados de forma interativa, mas cresceu tanto o seu usoque muitas pessoas utilizam-no de forma nao interativas, tais como scripting web. Eletambem e usado como um mecanismo de plotagem por aplicativos de terceiros, comoOctave. Gnuplot tem sido apoiado e encontra-se em desenvolvimento ativo desde 1986Willians and Kelley (2015).

Gnuplot suporta varios tipos de graficos em 2D e 3D. Ele pode desenhar utilizandolinhas, pontos, caixas, contornos, campos de vetores, superfıcies e varios textos associados.Ele tambem suporta varios tipos de graficos especializados. Outro suporte desse aplicativoe para diferentes tipos de saıda: terminais de tela interativa, impressoras modernas e saıdapara outros formatos de arquivos (EPS, emf, jpeg, LaTeX, pdf, png, PostScript , ...).As recentes adicoes incluem terminais interativos baseados em wxWidgets (Utilizaveis emmultiplas pataformas) e paginas da web que podem ser gerados usando os drivers terminaisSVG ou HTML5 Willians and Kelley (2015).

4.6 API para gerar relatorios de uso e custos por utilizacao

de recursos

O nome escolhido para a aplicacao foi RDU2 originario de Resource display used byusers ou Visualizacao de recursos utilizados por Usuarios.

Depois de escolher as ferramentas a serem utilizadas deu-se inıcio a implementacao daaplicacao, trechos comentados do codigo fonte estao disponıveis no Apendice secao A.3.

[vi]https://docs.python.org/3/tutorial/index.html

4.6.1 Interagindo com a interface

Informando credenciais de usuario e metricas

Inicialmente, a interacao com a interface comeca, ao inserir os argumentos para execucaoda aplicacao. Os argumentos necessarios sao: o nome do programa, a quantidade demetricas a serem pesquisadas, e os dados referentes a autenticacao do usuario (login, te-nant, senha) como e mostrado abaixo:

# python RDU2.py 3 teste teste teste

Se as credenciais do usuario forem validas, a interface entao, solicita ao usuario quedigite os nomes das metricas:

# python RDU2.py 3 teste teste teste

digite o nome da metrica

A mesma resposta e dada para usuarios administradores como no exemplo abaixo, emque como pode ser observado as credenciais de usuario inseridas sao diferentes do usuarioteste que e um usuario sem privilegios administrativos:

# python RDU2.py 3 admin admin admin

digite o nome da metrica

Visualizando os graficos gerados pelas metricas:

Figura 4.1: Grafico contendo as informacoes da metrica memory. Fonte: O Autor

Figura 4.2: Grafico contendo as informacoes da metrica cpu. Fonte: O Autor

Os graficos gerados nas Figuras 4.1, 4.2 e 4.3 exibem as informacoes para as metricassolicitadas tanto pelo usuario comum como o administrador, ou seja ambos tem acessoa todas as estatisticas de recuros consumidos pelo mesmo, algo que nao era possıvel ateentao.

4.7 Resultados Obtidos

Os resultados obtidos pela aplicacao desenvolvida, foram como um todo satisfatorios,e encontram-se listados abaixo:

1. A nuvem implantada no LabEPI em um ambiente de testes agora possui o servicode Telemetria instalado e funcionando corretamente, algo que anteriormente naoexistia e permite o uso de suas funcionalidades no gerenciamento de recursos danuvem academica;

2. A aplicacao permite maior controle e gerencia quanto ao uso de recursos da nuvem,auxiliando a tomada de decisoes de gestores em casos de escolha por solucoes emnuvens, utilizando o monitoramento do uso dos recursos;

3. A aplicacao possuıa uma versao similar (que e integrada diretamente ao Dashboard evem implementada por padrao quando se instala o servico Ceilometer), no entanto, aaplicacao desenvolvida existe de maneira separada e pode ser executada de maneiraindependente do Dashboard;

Figura 4.3: Grafico contendo as informacoes da metrica cpu util. Fonte: O Autor

4. Permite facilmente a futuras implementacoes estipular o consumo baseado em valoresmonetarios e ate mesmo prover outras informacoes alem do consumo;

5. A aplicacao oferece um maior nıvel de transparencia com todos os usuarios, qualquerusuario pode acessar suas informacoes de uso de recursos, e a hora que quiser, naaplicacao similar provida pelo Dashboard apenas usuarios administradores podemacessar as metricas de todos os usuarios como pode ser visto na Figura 4.4.

De acordo com o observado na Figura 4.4, para a versao Icehouse do OpenStack (quefoi a versao estudada e desenvolvida a aplicacao), o usuario Admim (Administrador) temacesso ao painel do sistema e tem acesso as informacoes de estatısticas para metricas.

Ja na Figura 4.5 percebe-se claramente que o usuario comum intitulado ”teste”naopossui nenhum acesso ao painel de controle e nao pode acompanhar as variacoes estatısticasde uso dos recursos.

Por fim, com a aplicacao criada, pode-se agora, concentrar-se no desenvolvimento detarefas mais elaboradas para o refinamento dos algoritmos utilizados e funcoes da mesma,e para a adicao de novas funcionalidades.

As limitacoes presentes na aplicacao desenvolvida foram:

• Interface com o usuario em modo terminal (linha de comandos): A in-teracao do usuario com a aplicacao e feita via terminal, ou seja, para esta versao aaparencia nao e amigavel e pouco intuitiva para a insercao dos dados, ideal seria aimplementacao de uma interface grafica com botoes caixas de dialogo;

Figura 4.4: Exemplo de visualizacao de metrica do Dashboard para usuario admin. Fonte: OAutor.

Figura 4.5: Exemplo de visualizacao de metrica do Dashboard para usuario comum. Fonte: OAutor.

• Credenciais de usuario visıveis durante a autenticacao: As credenciais (login,tenant, e password) ficam visıveis aos usuarios e a quem estiver proximo ao mesmo,caracterizando uma inconfidencia de dados por falta de seguranca, onde o ideal seriaocultar essas informacoes;

• A cada metrica pesquisada um novo token e gerado: Por padrao, quandoum usuario se autentica no Ceilometer, e gerado um ”token”que e uma chave unicavalidando aquele acesso realizado, cada token gerado durante uma autenticacao evalido por 60 minutos, sendo necessario o usuario relogar para voltar a usar asfuncionalidades do servico. Na aplicacao desenvolvida nao ha um controle dessetempo e a cada metrica consultada o processo de gerar um token e refeito n vezes de

acordo com o numero n de metricas isso faz com que o desempenho da aplicacao sejaafetado pois demora mais tempo ate processar todas as requisicoes de autenticacaoe consultar todas as metricas. O ideal para este caso seria a criacao de um metodoque sempre teste o perıodo de uso do token mais atual e caso o mesmo ja tenhaexpirado e que devera existir o envio de uma requisicao para um novo token;

• Nao foi implementada o suporte a excecoes geradas por pesquisas demetricas nao cadastradas: Caso um usuario digite um nome de uma metrica deforma errada, sera gerada um excecao que nao e tratada ainda na versao atual daaplicacao, isso interrompe a execucao e nenhuma informacao relevante e exibida.

• Calculo para faturamentos indisponıvel: Um dos objetivos iniciais da aplicacaoera realizar as estimativas do uso das metricas para se realizar o calculo do fatura-mento em Valores monetarios. Essa estimativa poderia ser realizada atraves docalculo de gastos com equipamentos e com o local onde a nuvem se hospeda, di-vidindo os gastos totais em um perıodo de tempo (mensalmente por exemplo) eestipulando o valor por hora, dessa forma quando se instanciar o servico para variosusuarios basta aplicar os valores baseando-se na utilizacao dos recursos. Dessa ma-neira tornaria possıvel para gestores de empresas que utilizem o servico comparargastos utilizando os recursos da nuvem com gastos utilizando recursos fısicos provi-dos pela propria empresa, isso e importante na avaliacao de vantagens de se adquiriro servico por parte de clientes.

No entanto, houveram limitacoes para que fosse possıvel a implementacao de talfuncionalidade, pois para a nuvem academica implantada no LabEPI nao havia ma-neiras de mensurar valores de gastos com a nuvem hospedada, devido nao se ter oacesso aos gastos individuais com ar-condicionado, energia eletrica utilizada pelosequipamentos e pela propria nuvem, e etc.

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 37

Capıtulo 5

Consideracoes Finais

“Talvez nao tenha conseguido fazer o melhor,mas lutei para que o melhor fosse feito.

Nao sou o que deveria ser,mas Gracas a Deus, nao sou o que era antes”

Marthin Luther King

5.1 Conclusoes

O trabalho realizado teve como caracterıstica principal a implantacao e desenvolvi-mento de projetos para cloud computing. Apesar desta ser uma area em grande expansao,muitos desenvolvedores e alunos de cursos de tecnologias em geral talvez tenham apenasa opcao de trabalhar em projetos similares se contribuırem ou se aventurarem tambemnas diversas plataformas de codigo aberto para desenvolvimento em nuvem. Durante estetrabalho, foi possıvel adquirir conhecimentos quanto a estrutura, tecnologias, processose funcionamento de grandes sistemas, como o do OpenStack o que com certeza agora setorna base para pesquisas e desenvolvimentos futuros de projetos maiores.

Conclui-se que as atividades e objetivos planejados antes e durante o processo foramrealizados de forma satisfatoria, mostrando a importancia do trabalho as areas tecnologicasenvolvidas e que o utilizam, das quais a cloud computing e Tecnologia da Informacao sedestacam. Este mesmo trabalho tambem pode ser utilizado como base para a criacao desistemas mais avancados, auxiliando no desenvolvimento de novos estudos sobre o tema eintegracoes com outras aplicacoes.

Como legado, permanece o fato de ter-se desenvolvido uma aplicacao totalmente utilpara usuarios de cloud computing calcularem e estimarem seus consumos de recursos emuma nuvem OpenStack. Outro ponto de destaque foi a iniciativa de desenvolvimento dotrabalho em ambientes academicos, em que atraves de pesquisa literaria nao foi encontradonenhum outro registro de aplicacao similar, antes desenvolvida especificamente com oescopo e finalidades aqui propostas, e que pode ser usado pela comunidade open sourceem geral.

Para gestores, a aplicacao assume o papel de ferramenta alternativa para analise e com-paracao de gastos, e desempenho economico de organizacoes em situacoes de utilizacao derecursos em nuvem, auxiliando a tomada de decisoes, quanto a circunstancias e vantagensde utilizacao de servicos em Nuvem.

Para a Universidade, a aplicacao contribui com a medicao dos recursos da nuvem

academica na qual a aplicacao foi desenvolvida. Permitindo que instancias academicaslevantadas (criadas) na nuvem, sejam monitoradas quanto a utilizacao dos recursos, au-xiliando professores e alunos em projetos que a utilizem. Alem de ser um servico proprioda universidade.

Por fim, foram enfrentadas algumas limitacoes durante a realizacao da pesquisa, sendoelas, a inacessibilidade a informacoes especıficas de valores gastos com implantacao e manu-tencao (gastos com equipamentos, energia eletrica) da nuvem no ambiente laboratorial, oqual possibilitaria realizar/desenvolver o trabalho de forma mais abrangente. E limitacoesquanto a capacidade de hardware onde a nuvem esta implantada, recursos computacionaislimitados para a realizacao de testes com grandes quantidades de instancias, reduzindodessa maneira as opcoes de testes e possibilidade de implementacoes.

5.2 Trabalhos futuros

Para trabalhos futuros existem diversas tarefas que poderiam ser implementadas, agrande maioria apenas de aperfeicoamento da aplicacao e modificacoes em sua interface.Por exemplo, uma tarefa futura seria a implementacao de uma interface grafica com botoes,janelas e layouts [i] mais amigaveis para o usuario.

Outra tarefa seria a exibicao em valores de moeda do consumo dos recursos, a aplicacaono momento se limita a exibir o valor consumido em unidades de medidas proprias de cadarecurso, essa exibicao de valores de custo poderia ser uma informacao a mais enviada norelatorio.

Uma tarefa mais a longo prazo que poderia ser implementada era a integracao daaplicacao desenvolvida com o sistema de Alarmes do servico de telemetria (Ceilometer) issopermitiria por exemplo ao sistema de calculo de utilizacao de servicos trabalhar de formamais inteligente, pois caso o consumo de um recurso ultrapassasse um certo ”limite”seriaentao criado um alarme (ou seja, aviso), para o usuario para ele possa requerer um aumentoda capacidade, ou ate mesmo o sistema implementar a alta escalabilidade fazendo apenaso papel de avisar ao usuario.

[i]http://pt.wikipedia.org/wiki/Layout

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 39

Referencias Bibliograficas

Amaral, Fabio Eduardo Paganin Reis do (2009), ‘O que e Virtualizacao?’. Artigo sobreTecnlologia.URL: http://www.tecmundo.com.br/web/1624-o-que-e-virtualizacao-.htm(Citado nas paginas 10 e 11)

Brinkmann, Andre, Christoph Fiehe, Anna Litvina, Ingo Luck†, Lars Nagel, Krishnapra-sad Narayanan, Florian Ostermair and Wolfgang Thronicke (2013), ‘Scalable monitoringsystem for clouds’, 2013 IEEE/ACM 6th International Conference on Utility and CloudComputing pp. 351–356.(Citado na pagina 20)

Buyya, Rajkumar, Chee Shin Yeo, Srikumar Venugopal, James Broberg and Ivona Brandic(2009), ‘Cloud computing and emerging it platforms: Vision, hype, and reality fordelivering computing as the 5th utility’, Elsevier - Future Generation Computer Systems25(6), 559–616.(Citado na pagina 7)

Carvalho, Marcio Barbosa de (2015), Um framework para a construcao automatizada decloud monitoring slices baseados em multiplas solucoes de monitoramento, Dissertacaode mestrado, Universidade Federal do Rio Grande Sul.(Citado na pagina 20)

Cima, Vojtech, Bruno Grazioli, Sean Murphy and Thomas Michael Bohnert (2015), ‘Ad-ding energy efficiency to openstack’, ICCLab, Institute for Information Technnology(InIT) p. 8.(Citado na pagina 21)

Dieder, Marcelo (2012), ‘Um estudo para a implantacao de um modelo de gerencia para ainfraestrutura de computacao nas nuvens utilizando solucoes de codigo aberto’.(Citado na pagina 14)

Elias, Diego (2014), ‘Diferencas entre metricas e indicadores de desempenho no businessintelligence’.URL: http://corporate.canaltech.com.br/materia/business-intelligence/Diferencas-entre-metricas-e-indicadores-de-desempenho-no-Business-Intelligence/(Citado na pagina 2)

Laurindo, Fernando Jose Barbin, Tamio Shimizu, Marly Monteiro de Carvalho and Ro-que Rabechini Jr (2001), ‘O papel da tecnologia da informacao (ti) na estrategia dasorganizacoes’, Depto. de Eng. de Producao – Escola Politecnica da USP 8(2), 160–179.(Citado na pagina 6)

MICROSOFT (2009), ‘White paper: Application Virtualization Cost Reduction Study’.Microsoft Corporation, USA.(Citado na pagina 10)

NIST (2011), ‘The NIST Definition of Cloud Computing - (National Institute of Stan-dards and Technology)’, Recommendations of the National Institute of Standards andTechnology RFC 800-145.URL: http://www.nist.gov/itl/cloud/upload/NIST SP-500-291 Jul5A.pdf(Citado nas paginas 8 e 9)

OpenStack (2014a), ‘OpenStack API Quick Start, 2014’.URL: http://docs.openstack.org/api/quick-start/content/index.html(Citado na pagina 28)

OpenStack (2014b), ‘Openstack Guide Instalation, 2014’.URL: http://docs.openstack.org/icehouse/install-guide/install/apt/content/ch overview.html

(Citado nas paginas 2, 13, 14, 15, 16, 19, 24, 27 e 43)

OpenStack (2014c), ‘Openstack: The open source cloud operating system, 2014’.URL: http://www.openstack.org/software(Citado na pagina 12)

OpenStack (2015a), ‘OpenStack Ceilometer API Web V2’.URL: http://docs.openstack.org/developer/ceilometer(Citado nas paginas 16 e 17)

OpenStack (2015b), ‘OpenStack Ceilometer API Web V2’.URL: http://docs.openstack.org/developer/ceilometer/webapi/v2.html(Citado na pagina 48)

OSI, Open Source Iniciative (2015), ‘The Open Source Definition’, Open Source IniciativeWeb Site.URL: http://opensource.org/docs/osd(Citado na pagina 1)

Pycurl (2015), ‘PycURL – A Python Interface To The cURL library’.URL: http://pycurl.sourceforge.net/doc/index.html(Citado na pagina 30)

Python (2015), ‘The Python Tutorial’.URL: https://docs.python.org/3/tutorial/index.html(Citado nas paginas 29 e 30)

Rdo-Project (2013), ‘Ceilometer quickstart’.URL: https://www.rdoproject.org/CeilometerQuickStart(Citado na pagina 17)

Rossigneux, Francois, Laurente Lefevre, Jean-Patrick Gelas and Marcos Dias de Assuncao(2014), ‘A generic and extensible framework for monitoring energy consumption ofopenstack clouds’, 2014 IEEE Fourth International Conference on Big Data and Cloud

Computing pp. 696–702.(Citado na pagina 20)

Sousa F. R. C., Moreira L. O., Machado J. C. (2009), Computacao em nuvem: Conceitos,tecnologias, aplicacoes e desafios., em ‘III Escola Regional de Computacao Ceara, Ma-ranhao e Piauı (ERCEMAPI).’, pp. 150–175.(Citado nas paginas 1, 6 e 7)

Veras, Manoel (2012), Cloud Computing: Nova Arquitetura de TI, 1a edicao, Brasport,Rio de Janeiro.(Citado nas paginas 5, 6 e 10)

Waldspurger, C. (2012), Memory resource management in vmware esx server, em ‘InProceedings of the 5 th Symposium on Operating Systems Design and Implementation,USE NIX ’02, Boston, MA, USA’.(Citado na pagina 11)

Wen, X., Gu G., Li Q., Gao Y. and Zhang X. (2012), Comparison of open source cloudmanagement platforms: Openstack and opennebula, em ‘In 9th International Confe-rence on Fuzzy Systems and Knowledge Discovery, FSKD 12’, pp. 2457–2461.(Citado nas paginas 2 e 12)

Willians, Thomas and Colin Kelley (2015), ‘gnuplot 5.0 An Interactive Plotting Program’.URL: http://gnuplot.sourceforge.net/docs 5.0/gnuplot.pdf(Citado na pagina 30)

Xiaojiang, Lei and Shang Yanlei (2013), ‘The design and implementation of resourcemonitoring for cloud computing service platform’, 2013 3rd International Conferenceon Computer Science and Network Technology pp. 239–243.(Citado na pagina 20)

Yin, Robert K. (2001), Estudo de caso: planejamento e metodos / Robert K. Yin; trad.Daniel Grassi, 2a edicao, Bookman, Porto Alegre.(Citado na pagina 23)

OpenStack: Utilizando o servico de Telemetria para calculo de estimativas 43

Apendice A

Apendice para desenvolvedores

A.1 Manual de instalacao Ceilometer

Nesta atividade, foi utilizada como referencia o guia de instalacao de servicos do(OpenStack, 2014b) para debian 7.0, o mesmo encontra-se originalmente em lıngua in-glesa, dessa forma, o passo-a-passo do guia de instalacao sera descrito aqui em portuguesem uma traducao propria do estagiario.

Instrucoes:

• Para Instalar o Servico de Telemetria e necessario ter no mınimo os servicos basicosdo OpenStack (Nova (Compute), Keystone (Autenticacao), Glance (Imagem), Neu-tron (Networking)) ja instalados anteriormente e em funcionamento;

• Tenha certeza que voce tem acesso a conta do usuario root;

• Neste documento quando aparecer o sımbolo "$" antes dos comandos significa queo comando pode ser executado como usuario normal ou seja sem precisar ser root;

• Quando aparecer o sımbolo "#" antes dos comandos, significa que o mesmo precisaser executado como usuario root.

A.1.1 Instalacao do modulo de Telemetria

O modulo de Telemetria oferece um servico de API que fornece um coletor de in-formacoes e uma variedade de agentes dıspares. Antes da instalacao dos agentes destemodulo no no de computacao (ou no ”compute”), e necessario instalar os componentesprincipais no no controlador (Controller):

1. Instale o servico de Telemetria no no controlador (ou no controler):

# apt-get install ceilometer-api ceilometer-collector ceilometer-

agent-central ceilometer-agent-notification ceilometer-alarm-

evaluator ceilometer-alarm-notifier python-ceilometerclient

2. Responda as solicitacoes de configuracoes do [keystone_authtoken], de credenciaisdo RabbitMQ e de registro de endpoints da API via prompt.

3. O servico de telemetria usa um banco de dados para armazenar informacoes. Espe-cifique o local do banco de dados no arquivo de configuracao. Os exemplos utilizama base de dados no no do MongoDB controler (controlador):

# apt-get install mongodb-server

Observacoes:

Por padrao MongoDB esta configurado para criar varios arquivos de 1 GB nodiretorio /var/lib/mongodb/journal/ diretorio para apoiar journaling (logs) nobanco de dados.

Se voce precisar diminuir o espaco alocado para apoiar o registro diario de bancode dados, e necessario definir a chave de configuracao smallfiles como true noarquivo de configuracao /etc/mongodb.conf. Esta configuracao reduz o tamanhode cada arquivo de registro no diario para 512 MB.

A medida que os arquivos sao criados pela primeira vez o servico MongoDB inicializa.Voce deve entao parar o servico e remover os arquivos para que esta alteracao tenhaefeito:

# service mongodb stop

# rm /var/lib/mongodb/journal/prealloc.*

# service mongodb start

Para maiores informacoes acerca da chave de configuracao smallfiles veja a docu-mentacao do MongoDB em:

http://docs.mongodb.org/manual/reference/configurationoptions/#smallfiles.

Para instrucoes detalhadas do database journaling veja

http://docs.mongodb.org/manual/tutorial/manage-journaling/.

4. Configure o MongoDB para que ele possa ”escutar”o endereco IP de gerenciamentodo controlador. Acesse o arquivo /etc/mongodb.conf e modifique a chave bind_ip:

bind_ip = 10.0.0.11

5. Reinicie o servico MongoDB aplicar as modificacoes de configuracao:

# service mongodb restart

6. Crie a base de dados e um usuario ceilometer:

# mongo --host controller --eval ’

db = db.getSiblingDB("ceilometer");

db.addUser({user: "ceilometer",

pwd: "CEILOMETER_DBPASS",

roles: [ "readWrite", "dbAdmin" ]})’

7. Configure o servico de telemetria para acessa base de dados:

Abra o arquivo /etc/ceilometer/ceilometer.conf e altere a secao [database]:

[database]

# The SQLAlchemy connection string used to connect to the

# database (string value)

connection = mongodb://ceilometer:CEILOMETER_DBPASS@controller:27017/

ceilometer

8. Voce deve definir uma chave secreta que e usada como um segredo compartilhadoentre os nos do servico de telemetria. Use openssl para gerar um token aleatorio earmazena-lo no arquivo de configuracao:

# openssl rand -hex 10

Abra o arquivo /etc/ceilometer/ceilometer.conf e modifique o valor da seccao[publisher]. Substitua o valor CEILOMETER_TOKEN com o valor gerado ao executaro comando openssl:

[publisher]

# Secret value for signing metering messages (string value)

metering_secret = CEILOMETER_TOKEN

9. Configure o service de Telemetria para a autenticacao com o Servico de Identidade.

Preencha o valor auth_strategy com keystone no arquivo /etc/ceilometer/ceilometer.conf:

[DEFAULT]

...

auth_strategy = keystone

10. Adicione as credenciais para a configuracao de arquivos para o servico de Telemetria:

Abra o arquivo /etc/ceilometer/ceilometer.conf e altere a seccao [keystone_authtoken]:

[keystone_authtoken]

auth_host = controller

auth_port = 35357

auth_protocol = http

auth_uri = http://controller:5000

admin_tenant_name = service

admin_user = ceilometer

admin_password = CEILOMETER_PASS

Preencha os valores da seccao [service credentials]:

[service_credentials]

os_auth_url = http://controller:5000/v2.0

os_username = ceilometer

os_tenant_name = service

os_password = CEILOMETER_PASS

11. Reinicie todos os servicos para que as novas configuracoes funcionem corretamente:

#service ceilometer-agent-central restart

#service ceilometer-agent-notification restart

#service ceilometer-api restart

#service ceilometer-collector restart

#service ceilometer-alarm-evaluator restart

#service ceilometer-alarm-notifier restart

A.1.2 Instalando o agente compute de Telemetria

Este procedimento detalha como instalar o agente que e executado no no de com-putacao (compute).

1. Instale o sevico de Telemetria no no ”compute”:

# apt-get install ceilometer-agent-compute

2. Acesse o arquivo /etc/nova/nova.confe adicione as seguintes linhas a seccao [DEFAULT]:

DEFAULT]

...

instance_usage_audit = True

instance_usage_audit_period = hour

notify_on_state_change = vm_and_task_state

notification_driver = nova.openstack.common.notifier.rpc_notifier

notification_driver = ceilometer.compute.nova_notifier

3. Reinicie o servico Compute:

# service nova-compute restart

4. Voce deve inserir a chave secreta que voce definiu anteriormente. Os nos de servicode telemetria compartilham esta chave de forma secreta:

Abra o arquivo /etc/ceilometer/ceilometer.conf e altere as linhas na seccao[publiser]. Substitua CEILOMETER_TOKEN com o token ceilometer que voce criouanteriormente:

[publisher]

# Secret value for signing metering messages (string value)

metering_secret = CEILOMETER_TOKEN

5. Adicione as credenciais de identidade do servico:

Abra o arquivo /etc/ceilometer/ceilometer.conf e modifique a seccao [keystone_authtoken]section:

[keystone_authtoken]

auth_host = controller

auth_port = 35357

auth_protocol = http

admin_tenant_name = service

admin_user = ceilometer

admin_password = CEILOMETER_PASS

Alem disso, tambem edite a secao [service_credentials]:

[service_credentials]

os_auth_url = http://controller:5000/v2.0

os_username = ceilometer

os_tenant_name = service

os_password = CEILOMETER_PASS

6. Reinicie os servico para que as novas configuracoes funcionem corretamente:

# service ceilometer-agent-compute restart

A.1.3 Sincronizando o servico de Imagem servico de Telemetria:

1. Para recuperar amostras de imagem, voce deve configurar o Servico de imagem paraenviar notificacoes para o sistema de mensagens ”bus”.

Acesse o arquivo /etc/glance/glance-api.conf e modifique a seccao [DEFAULT]:

notification_driver = messaging

rpc_backend = rabbit

rabbit_host = controller

rabbit_password = RABBIT_PASS

2. Reinicie os servicos de imagem para que as novas configuracoes funcionem correta-mente:

# service glance-registry restart

# service glance-api restart

A.1.4 Verificando a instalacao do servico de Telemetria

Para testar a instalacao de telemetria, faca o download de uma imagem a partir doServico de Imagem, e use o comando ceilometer para exibir estatısticas de uso.

1. Voce deve adquirir as credenciais de administrador de inquilino no arquivo de con-figuracoes do Keystone admin_openrc.sh, execute o codigo como a seguir:

$ source admin-openrc.sh

2. Use o comando ceilomiter meter-list para testar o acesso a Telemetria.

$ ceilometer meter-list

3. Faca o dowload de uma imagem do servico de imagens, por exemplo:

$ glance image-download "cirros-0.3.2-x86_64" > cirros.img

4. Chame o ceilometer meter-list novamente para validar o download e verificar seele foi detectado e armazazenado nas informacoes de Telemetria.

$ ceilometer meter-list

5. Se todos os passos anteriores dessa verificacao exibirem informacoes sem mensagensde erro, a instalacao do servico esta pronta e voce agora pode consultar as estatisticaspara varios tipos de metricas.

A.2 API Web V2 Ceilometer

Atraves dos metodos providos pela a API Web V2 (OpenStack, 2015b) Ceilometer epossıvel se obter as informacoes referentes aos dados colhidos pela telemetria.

Para se obter uma informacao referente a metricas (meters), recursos (resources) ouestatısticas (statistics) por exemplo a API Web V2 fornece metodos GET passando ondeo usuario precisa apenas informar o tipo da informacao requerida, por exemplo:

• Para exibir todas as definicoes de todos os Recursos (Resources):

GET /v2/resources

Parametros:

q (lista(Query)) - Filtro de regras para os recursos que serao exibidos;

meter links (int) - Opcao de incluir links relacionados as metricas.

Tipo de Retorno: Uma lista de recursos, list(resources).

• Para exibir todas as Metricas (Meters) conhecidas com base nos dados registradosate o momento atual:

GET /v2/meters

Parametros:

q (lista(Query)) - Filtro de regras para as metricas que serao exibidas;

Tipo de Retorno: Uma lista de metricas, list(meter).

• Para exibir todas as Amostras (Samples) com base nos dados registrados ate omomento atual:

GET /v2/samples

Parametros:

q (lista(Query)) - Filtro de regras para as amostras que serao exibidas;

limite(int) - Numero maximo de amostras que serao exibidas.

Tipo de Retorno: Uma lista de amostras, list(samples).

• Para exibir as Estatisticas (statistics) nas amostras de uma determinada metricanum intervalo de tempo:

GET /v2/meters/meter_name/statistics

Parametros:

q (lista(Query)) - Filtro de regras para os dados que serao exibidos;

groupby(list(unicod)) - Campos para os grupos agregados;

periodo(int) - O resultado sera um conjunto de estatısticas, por um perıodo longorepresentado em segundos;

agregacao (list(agregacao)) - As funcoes de agregacao seleccionaveis para seremaplicadas;

Tipo de Retorno: Uma lista de estatısticas, list(statistics).

Tambem e possivel atraves da API Web V2 postar (inserir) informacoes no sistemade metricas utilizando metodos POST alguns exemplos seguem abaixo:

• Para publicar uma lista de novas amostras de telemetria.

POST /v2/meters/(meter_name)

Parametros:

amostras (list(samples)) - Uma lista de amostras dentro do corpo da requisicao.

Tipo de Retorno: Uma lista de amostras, list(samples).

• Para publicar informacoes em uma consulta que recupera dados de Alarmes.

POST /v2/query/alarms/history

Parametros:

corpo (ComplexQuery) - Regras de consulta para alarmes que serao retornados.

Tipo de Retorno: Uma lista de alarmes, list(alarm).

A.3 Codigo fonte da API RDU2

Importante: Os trechos de codigo fonte abaixo nao contem acentos nem o uso decaracteres especiais como ”C”, entre outros, isso foi uma escolha do autor deste trabalhopor deixar um codigo uniforme em relacao a metodos, variaveis e comentarios.

import pycurl, curl, json, sys, urllib, urllib2, Gnuplot, Gnuplot.

funcutils

from StringIO import StringIO

n=int(sys.argv[1]) #campo destinado ao numero de metricas a ser pesquisado

tenant=sys.argv[2] #campo destinado ao tenant

user=sys.argv[3] #campo destinado ao login do usuario

psw=sys.argv[4] #campo destinado a senha do usuario

estatisticaMet={} #estrutura utilizada para armazenar as estatisticas das

metricas mes a mes

meses=[] #estrutura utilizada para armazenar os meses ques

estaram no intervalo a ser pesquisado

met=[] #estrutura utilizada para receber as metricas

digitadas pelo o usuario

campo=[’sum’,’avg’,’max’,’min’]

url_aut = ’http://ip_controller:35357/v2.0/tokens’ #endereco utilizado

para autenticacao

• Como Podemos ver o trecho acima destacado recebe as informacoes de autenticacaodo usuario e cria as estruturas para armazenar os dados que serao utilizados noprocesso de geracao dos relatorios.

#A funcao que fara as requisicoes para a api do ceilometer, ela recebe uma

url, um cabecalho, o tipo da requisicao e os dados

def requisicao(url,header,tipe,data):

buffer=StringIO()

c = pycurl.Curl() #cria um objeto do tipo pycurl

c.setopt(pycurl.URL, url) #seta o valor URL, com o valor da url

a ser realizada a requisicao

c.setopt(pycurl.HTTPHEADER, header) #seta o campo cabecalho

if(tipe==’p’): #se o tipo da requisicao for

POST

c.setopt(pycurl.POST, 1) #seta como verdadeiro o

atributo POST

c.setopt(pycurl.POSTFIELDS, data) #preenche os campos

POST com a informacao enviada

c.setopt(c.WRITEDATA,buffer) #escreve no buffer a

resposta para a requisicao

c.perform() #executa a requisicao depois de preenchido os campos

c.close() #fecha a requisicao e encerra o objeto

return buffer #retorna o buffer

• Ja neste outro trecho acima e mostrado uma das diversas funcoes que existem naaplicacao, a funcao exibida no codigo acima e uma funcao que realiza requisicoesHTTP, essa e a principal funcao do programa, pois gracas a ela conseguimos coletaras metricas presente no sistema, para entender melhor como funciona basta ler oscomentarios.

#Esta funcao preenche os atributos necessarios para plotar o grafico com

as informacoes das metricas

def ploteGrafico(met):

faixames=’’

for i in range(len(estatisticaMet[met])):

faixames=faixames+’\"’+estatisticaMet[met][i][5:7]+’/’+

estatisticaMet[met][i][:4]+’\"’+’ ’+str(i+1)+’,’

g = Gnuplot.Gnuplot(debug=0)

g.title(’Informacoes para a metrica ’+met+’:’)

g(’set style data linespoints’)

g.xlabel(’Mes / Ano’)

g.ylabel(’Custo/Utilizacao do Recurso’)

g(’set xtics (’+faixames+’)’)

g.plot(Gnuplot.File(’estatistica_’+met, title="minimo", using

="1:2"))

g.replot(Gnuplot.File(’estatistica_’+met, title="maximo", using

="1:3"))

g.replot(Gnuplot.File(’estatistica_’+met, title="media", using

="1:4"))

#g.replot(Gnuplot.File(’estatistica_’+met, title="total", using

="1:5"))

parada=raw_input("visualize o grafico!")

g.clear()

• Este outro trecho acima diz respeito a funcao responsavel por criar o grafico finalcontendo as informacoes referentes a estatıstica de uso da metrica desejada, ela (pre-enche) as informacoes referente ao tıtulo, e atributos de Y e X no grafico, bem comopega as informacoes mes a mes e coloca no grafico a ser gerado.