• Nenhum resultado encontrado

3 A Soluc¸˜ao Proposta

3.3.1 M´odulo Configurac¸˜ao

O m´odulo configurac¸˜ao ´e um componente cr´ıtico para o alcance das metas de simplicidade e facilidade de uso propostas pelo AvailableD, pois consiste na parte do sistema com a qual o usu´ario interage mais diretamente. Por consequˆencia, ser´a de consider´avel importˆancia na avaliac¸˜ao de usabilidade.

Para modelar o formato do m´odulo de configurac¸˜ao, foram analisadas ferramentas com as quais os administradores de redes est˜ao acostumados a utilizar e configurar. As observadas foram: PostgreSQL, MySQL, Dnsmasq, Apache2, PHP5, Bind, Samba, Postfix, OpenLDAP, DHCP3 Server e OpenSSH. Os aspectos observados foram 2:

1. Forma como ´e realizada a configurac¸˜ao: refere-se a interface tradicional oferecida aos usu´arios para informar os valores de configurac¸˜ao. Em todas as ferramentas analisadas constatou-se que a configurac¸˜ao ´e realizada por meio da edic¸˜ao de arquivos de texto. 2. Aspectos comuns nas interfaces de configurac¸˜ao: como todas as ferramentas utilizam

arquivos textuais de configurac¸˜ao, o que foi considerado neste quesito s˜ao os aspectos mais comuns entre a sintaxe dos arquivos. Como resultado da an´alise, constatou-se que a grande maioria utiliza o formato parˆametro valor1 valor2 valor3 ... valorN (36%), ou ent˜ao, parˆametro=valor1,valor2,valor3,...,valorN (55%) para a atribuic¸˜ao de valores aos

Figura 3.9 – Arquitetura do AvailableD, seus plugins e programas externos

Fonte: do autor

parˆametros de configurac¸˜ao. Nas ferramentas que utilizam componentes de bloco em sua configurac¸˜ao (apenas 3), o padr˜ao mais presente (67%) foi o uso de abre e fecha chaves ({}) como delimitador de escopo. Os coment´arios nos arquivos, na grande maioria das ferramentas analisadas (91%), utilizam o caracter “#”. Qualquer sequˆencia de caracteres ap´os o “#”, at´e o final da linha, ´e interpretado como parte do coment´ario. Algumas ferramentas utilizam o “;”, e outras suportam ainda coment´arios no estilo “/**/” e “//”. Para delimitar parˆametros, o mais comumente utilizado ´e uma nova linha (64%).

A partir dos dados resultantes das an´alises realizadas, ficou evidente que uma alterna- tiva aceit´avel e amplamente utilizada ´e a configurac¸˜ao atrav´es de arquivos textuais. J´a para a definic¸˜ao dos parˆametros e valores de configurac¸˜ao uma das formas mais utilizadas e aceitas ´e o formato parˆametro=valor1,valor2,valor3,...,valorN. O sinal de igualdade passa a representar atribuic¸˜ao de valor e a v´ırgula passa a ser o separador quando h´a m´ultiplos valores para um

mesmo parˆametro. Como estilo de coment´arios foi escolhido somente o “#”. Optou-se por utilizar um “;” como delimitador de parˆametros, embora n˜ao seja muito utilizado. A raz˜ao ´e permitir que os valores para os parˆametros admitam nova linha sem comprometer a legibilidade. Para permitir a configurac¸˜ao das funcionalidades necess´arias pelo AvailableD, considerando sua arquitetura proposta, constatou-se a necessidade dos seguintes conjuntos de informac¸˜oes:

1. Lista de servic¸os a serem monitorados, incluindo os servidores que os prestam; 2. Comandos utilizados para realizar as verificac¸˜oes dos servic¸os;

3. Comandos do firewall para efetuarem a adic¸˜ao e remoc¸˜ao dos redirecionamentos realiza- dos;

4. Uma forma de definir para cada servidor, quais s˜ao seus poss´ıveis servidores substitutos, isto ´e, os servidores para os quais os redirecionamentos poder˜ao ser realizados. Isso ´e importante, pois em algumas situac¸˜oes, servidores do mesmo servic¸o n˜ao est˜ao prepara- dos para atender requisic¸˜oes de outros servidores. Como exemplo, podemos considerar cen´arios mestre/escravo, onde ´e poss´ıvel realizar redirecionamento do escravo para o mestre, por´em o contr´ario n˜ao ´e poss´ıvel, j´a que n˜ao ´e todo o tipo de solicitac¸˜oes que um servidor escravo pode atender;

5. Informac¸˜oes sobre os gerenciadores de log; 6. Informac¸˜oes dos plugins notificadores utilizados.

Para melhor estruturar e organizar as informac¸˜oes do arquivo de configurac¸˜ao, foram cri- ados trˆes escopos, o global, o servic¸o e o servidor. Eles possuem v´ınculo hier´arquico, sendo o mais abrangente o global e o mais espec´ıfico o servidor. O servic¸o engloba um ou mais servidores, representando as N r´eplicas do servic¸o.

1. Global: escopo onde s˜ao declarados todos os valores padr˜oes globais, ou seja, v´alidos quando os parˆametros n˜ao estiverem localmente definidos nos escopos mais espec´ıficos; 2. Servic¸o: escopo para definir os servic¸os e suas informac¸˜oes. Os parˆametros declarados

neste escopo constituem de valores padr˜oes dentro do escopo, e sobrescrevem os valores globais;

3. Servidor: escopo utilizado para definir os servidores de cada servic¸o. Os parˆametros definidos neste escopo sobrescrevem os demais valores e s˜ao espec´ıficos para o servidor no qual foram declarados.

Na Figura 3.10 encontra-se a sintaxe b´asica do arquivo de configurac¸˜ao do AvailableD. As primeiras declarac¸˜oes de parˆametros s˜ao referentes a valores globais. Ap´os, iniciam as definic¸˜oes de servic¸os, que s˜ao identificadas pela palavra reservada service. Depois da palavra service, vem o nome do servic¸o sendo declarado, que deve ser ´unico. Entre o abre e fecha chaves conseguintes, fica o escopo do servic¸o declarado. Os valores para os parˆametros declarados neste escopo somente s˜ao v´alidos para ele e para os servidores declarados internamente. Para definir um servidor, utiliza-se a palavra reservada server e, ap´os, informa-se o enderec¸o IP do servidor, opcionalmente seguido da porta utilizada para acesso ao servic¸o. Entre o abre e fecha chaves posteriores fica o escopo do servidor, no qual os valores informados aos parˆametros s˜ao espec´ıficos para o servidor.

Figura 3.10 – Sintaxe b´asica do arquivo de configurac¸˜ao do AvailableD parametro1 = valor1; parametro2 = valor2; ... service name1 { parametro1 = valor1; ... server ip1:porta1 { parametro1 = valor1; ... } server ip2:porta2 { parametro1 = valor1; ... } ... } service name2 ... Fonte: do autor

As informac¸˜oes de configurac¸˜ao, na grande maioria, podem ser definidas em qualquer es- copo. A escolha por esta flexibilidade na definic¸˜ao dos valores foi para permitir maior di- namismo e granularidade na configurac¸˜ao. Desta maneira ´e poss´ıvel, por exemplo, manter uma configurac¸˜ao de notificac¸˜ao global, utilizada para todos os servic¸os e servidores, ao mesmo tempo que para um determinado servic¸o (ou servidor), a configurac¸˜ao pode ser alterada, atrav´es da redefinic¸˜ao dos valores dos parˆametros de notificac¸˜ao no escopo deste servic¸o (ou servidor). A redefinic¸˜ao de valores ´e realizada atrav´es da redeclarac¸˜ao dos parˆametros em escopos diferen- tes. Outro aspecto positivo desta convenc¸˜ao, ´e a possibilidade de, em poucas linhas, configurar o monitoramento de um grande n´umero de m´aquinas, utilizando os escopos menos espec´ıficos para definic¸˜ao de informac¸˜oes comuns.

Para melhor entendimento da definic¸˜ao de valores padr˜oes e momentos em que s˜ao usados, considere o arquivo de configurac¸˜ao da Figura 3.11. Para o servidor 10.10.10.1, o valor de ar-

quivo logser´a “arquivo servidor”, pois os valores informados no escopo servidor sobrescrevem todos os demais. No caso do servidor 10.10.10.2, o valor de arquivo log ser´a “arquivo servico”, pois n˜ao h´a valor definido para o servidor e o escopo do servic¸o sobrescreve o global. Por fim, no caso do servidor 10.10.10.3, o parˆametro arquivo log conter´a o valor “arquivo global”, pois n˜ao h´a nenhuma outra declarac¸˜ao mais espec´ıfica.

Figura 3.11 – Exemplo de configurac¸˜ao com sobrescrita de valores dos parˆametros arquivo_log = arquivo_global; service dns { arquivo_log = arquivo_servico; server 10.10.10.1 { arquivo_log = arquivo_servidor; } server 10.10.10.2 { } } service smtp { server 10.10.10.3 { } } Fonte: do autor

Informac¸˜oes adicionais sobre o arquivo de configurac¸˜ao encontra-se no documento de pro- jeto, presente no Apˆendice G. Na Figura 3.12 est´a ilustrado o funcionamento do m´odulo na forma de fluxograma, onde ´e apresentada a maneira com que o arquivo de configurac¸˜ao ´e pro- cessado. Atrav´es da figura, percebe-se que o funcionamento do m´odulo consiste basicamente em:

1. Abrir o arquivo de configurac¸˜ao;

2. Obter seus lexemas (textos que correspondem aos elementos do arquivo); 3. Analisar a sintaxe;

4. Setar os parˆametros de configurac¸˜ao;

5. Exibir mensagem quando algum erro for diagnosticado;

6. Fechar o arquivo de configurac¸˜ao e parar a execuc¸˜ao ao terminar de process´a-lo.

Figura 3.12 – Fluxograma de execuc¸˜ao do m´odulo configurac¸˜ao do AvailableD

Fonte: do autor