sexta-feira, 30 de dezembro de 2016

Modelo de Script com uso de getopts para passagem de parametros

Introdução

Para fazer scripts profissionais e voltados a usuários iniciantes, temos que tomar uma série de cuidados, como por exemplo, exibir um help sobre o funcionamento do script, permitir passagem de parâmetros, checar se os parâmetros informados são válidos, se solicitarmos o uso de arquivos, verificar se o usuário possui o privilégio mínimo requerido naquele arquivo, se o script tem alguma dependência checar se essa dependência foi suprida no ambiente do usuário, e caso negativo informar como ele pode supri-la.

Junto com meu grande amigo Aécio Pires, desenvolvemos esse script base que demonstra todos os conceitos listados acima, esperamos que seja útil a todos.

Observação: Se você não conhece o getopts conheça-o aqui e sua vida será outra ;-)

segunda-feira, 19 de dezembro de 2016

Zabbix e Grafana: Disponibilizando um Dashboard por Cliente

Introdução

Uma das perguntas mais frequentes que temos nos canais de Zabbix é: "Como eu faço para disponibilizar um gráfico/tela por cliente?"
Quando essas pessoas passam a usar os gráficos do Grafana alimentados pelos dados do Zabbix, o cenário não muda, o objetivo deste post é descrever como suprir essa demanda.

Pré-Requisitos

Eu parto do princípio que você já possui o Zabbix e o Grafana integrados e funcionando perfeitamente. Não abordarei esse tema, se ainda não domina essa parte, por favor visite esse post.

Configurações no Zabbix Server

Usuários no Zabbix Server
A única configuração que precisa ser feita no Zabbix Server é a criação dos usuários, nesse caso foram criadas duas contas: "Cliente 01" e "Cliente 02", ambos do tipo "Zabbix User" e membros do grupo "Clientes". Mas isso para demonstrar o conceito, o que você precisa ter em mente é que cada cliente tem que possuir um usuário no Zabbix Server com acesso aos hosts que lhe interessa.

Configuração no Grafana

A primeira coisa que vamos fazer é desativar a opção de usuários comuns de criarem Organizações. Para ficar bem simples, entenda cada organização como um cliente, logo, não queremos nossos clientes criando novas organizações.

# vi /etc/grafana/grafana.ini

# Allow non admin users to create organizations
;allow_org_create = true
allow_org_create = false


Reinicie o serviço

# service grafana-server restart (CentOS 6.x)
# systemctl restart grafana-server (CentOS 7.x)
# sudo service grafana-server restart (Debian/Ubuntu)


Criar os usuários

Clique no logo do Grafana // Admin // Global Users
Criação de usuários

Clique no botão Add new user

Adicionar novos usuários
Preencha os dados e clique no botão Create
Propriedades do usuário
Observação: O Grafana não aceita o mesmo e-mail para usuários diferentes.

Repita o processo para o Cliente 02

Criar as organizações

Clique no logo do Grafana // Admin // New organization
Criação de Organizações

Preencha o nome da organização e clique no botão Create

Adicionar novas organizações
Você pode cadastrar informações adicionais para a organização.

Propriedades da organização
Repita o processo para o Cliente 02

Clique no logo do Grafana // Admin // Global Users

Gerenciamento de usuários
Na linha do Cliente 01, clique no botão Edit

Edição de usuários
Na seção Organizations, preencha o nome da Organização e o nível de privilégio (Role), nesse momento vamos deixar como Admin e clique no botão Add

Alterando privilégio de usuário em organização
Na linha da organização Main.org, altere o nível de privilégio (Role) para Admin

Alterando privilégio de usuário em organização

Repita o processo para o Cliente 02

Entendendo um pouco mais sobre as organizações

No começo do post foi dito para vocês entenderem cada organização como um cliente, pois naquele momento essa informação era suficiente, mas agora precisamos detalhar um pouco mais esse tópico, na realidade cada organização é uma instância do Grafana. Cada organização possui suas dashboards, data sources e configurações, e, esses dado não são compartilhados entre elas. Desse modo o que foi dito antes, não está incorreto, mas essa explicação é importante para as próximas etapas.

Outro detalhe importante é a questão da amarração das permissões, se você estiver logado como admin, e usar a opção Switch to Cliente 01 (Organização), por exemplo, e criar uma dashboard nessa organização, ela não estará disponível para o usuário cliente 01 (Proprietário da organização Cliente 01), pois ela está amarrada ao perfil do usuário admin. O usuário admin está alterando a organização Cliente 01, dentro do universo dele, que é totalmente isolado do universo do usuário Cliente 01.

Configurações para cada cliente

Clique no logo do Grafana // Admin // Sign out

Logoff de usuário

Realize o Login como Cliente 01

Login de usuário

Clique no logo do Grafana // Cliente 01 // Switch to Cliente 01
 
Alterando o perfil de organização

  • Habilite o plugin do Zabbix para essa organização;
  • Configure o Data Source para essa organização, utilizando as credenciais do Cliente 01 cadastrado no Zabbix Server;
  • Crie a Dashboard para essa organização.
Repita o processo para o Cliente 02

Configurando as permissões definitivas

Realize o Login como Admin

Clique no logo do Grafana e certifique-se que o admin está no perfil da organização Main.org, se não estiver altere para esse perfil.

Clique no logo do Grafana // Admin // Global Users

Gerenciamento de usuários
Altere o perfil da Organização Cliente 01 para Viewer e remova a organização Main.org, basta clicar no botão "X" na linha da organização.

Permissões de usuários
Repita o processo para o Cliente 02

Visualizando as Dashboards

Execute o login como Cliente 01

Clique no nome da Dashboard, nesse caso Cliente 01

Seleção da dashboard
Visualize os gráficos

Gráficos do Cliente 01

Repita o processo para o Cliente 02
Gráficos do Cliente 01

Você pode copiar o endereço do dashboard e passar para o seu cliente, nesse tutorial:
http://IP-SERVIDOR:3000/dashboard/db/cliente-01
http://IP-SERVIDOR:3000/dashboard/db/cliente-02

Referências

Grafana.org
Aécio Pires

quinta-feira, 25 de agosto de 2016

Utilização do RackTables

Introdução

No post anterior eu demonstrei como realizar a instalação do RackTables em CentOS 7, nesse eu vou demonstrar algumas das funcionalidades, não tenho a intenção de ser a referencia final e nem de cobrir tudo que o software pode fazer, mas sim, dar um norte inicial.

Diagrama da Rede

Abaixo temos um diagrama básico de uma rede que vamos documentar no RackTables.

Cadastro de VLANs

Na tela inicial clique em 802.1Q, clique na aba Manage domains e cadastre as VLANs.

Cadastro de Redes

Na tela inicial clique em IPv4 space, clique na aba Add e cadastre as redes. Nessa tela podemos associar as redes às VLANs.
Depois de cadastrar todas as redes clique na aba Browse, você verá um resumo de todas as suas redes.

Cadastro de Ativos

Na tela inicial clique em Objects, clique na aba Add more e cadastre os ativos.

Cadastro de Patch Panel

Na tela inicial clique em Objects, clique na aba Add more e cadastre os Patch Panels.

Cadastro de Patch Cables

Na tela inicial clique em Patch Cables, clique na aba Configure heaps e cadastre os Patch Cables.
Depois de cadastrados, você pode clicar na aba Consume/replenish e cadastrar a quantidade de Patch Cords disponível.

Cadastro de Tipos de Objetos

Existe um objeto do tipo Network security, mas eu quero cadastrar um objeto do tipo Firewall. Na tela inicial clique em Configuração, na lista de configurações, clique em Dictionary, na lista de dicionários, clique em ObjectType, clique na aba Edit e cadastre o tipo de objeto.
Volte no Cadastro de Ativos, e o tipo Firewall estará disponível.

Cadastro de Localizações

Na tela inicial clique em Rackspace, clique na aba Manage locations e cadastre as localizações. Observe que cadastrei a localização "Matriz Empresa" sem ser "filha" de ninguém e depois cadastrei as demais localizações como "filhas" de "Matriz Empresa". Portanto se a sua empresa possui várias filiais, ou vários prédios, não será problema documentar a infraestrutura no RackTables.
Clique na aba Manage rows e cadastre as localizações. Essa opção é útil para cadastrar a sala dentro do prédio, o andar, o anexo, etc.

Cadastro de Racks

Na tela inicial clique em Rackspace, na aba Browse clique no nome da Localização (Matriz Empresa), em Child Locations clique no Setor (Compras), em Rows clique na Localização (Sala 22 - 2º Andar), clique na aba Add new rack e cadastre o(s) Rack(s).

Visualizando a estrutura física da sua empresa

Na tela inicial clique em Rackspace. Observe à direita a opção de filtros.

Cadastro de detalhes adicionais dos Ativos

Na tela inicial clique em Objects, e depois em um dos ativos, clique na aba Properties. Podemos observar uma infinidade de detalhes que podem ser cadastrados como marca e modelo, versão do software, informações de garantia, contratos, etc.
 Clique na aba Rackspace e selecione um Rack (Rack TI), a tela muda e você pode escolher à direita a posição exata que o ativo ocupa no rack, pode manter um histórico em Comment, e depois basta salvar clicando no botão save.
Clique na aba Ports, podemos cadastrar uma ou mais portas. Inclusive cadastrar portas em lote.
Observe que antes de cadastrarmos as portas, podemos cadastrar o IP e usar a aba SNMP para detectar automáticamente as portas.
Clique na aba IP, podemos cadastrar um ou mais IPs e o tipo do IP.
E ainda temos uma aba para Log, NAT e Arquivos associados ao ativo.

Conexão dos Ativos com o Patch Panel

Para conectar os ativos no patch panel é preciso alterar a porta do patch panel para um tipo de porta compatível com o ativo.
Após salvar as alterações abra o objeto que você deseja ligar ao patch panel (Router L3) e, na linha da porta que será ligada clique no botão Link this port.
Na janela que vai surgir escolha a porta do patch panel na qual a porta do ativo se conecta, observe que podemos conectar um ativo em outro, cadastre o ID do cabo (opcional), selecione o patch cable que será utilizado e clique em Link.

Cadastro de Ambiente Virtual

Além de tudo que já foi descrito, o RackTables ainda nos permite cadastrar recursos virtuais como Clusters, Hypervisors, Switches Virtuais e Pools de Recursos.

Cadastro de Cluster

Na tela inicial clique em Objects, clique na aba Add more e cadastre o(s) Cluster(s).

Cadastro de  Hypervisor

Na tela inicial clique em Objects, clique na aba Add more e cadastre um ou mais Server(s).
Abra o Server, na aba Properties sete a opção Hypervisor como Yes e salve as alterações.

Associar o Hypervisor ao Cluster

Abra o Server, na aba Properties cliquem em Select a container.
Na janela que vai surgir escolha o container e clique em Proceed.
Você pode aproveitar e cadastrar qual é o Hypervisor na opção SW type.

Cadastro de  Outros Objetos Virtuais

Na tela inicial clique em Objects, clique na aba Add more e cadastre os demais objetos.
O processo de associação dos objetos segue o mesmo padrão descrito acima em Associar o Hypervisor ao Cluster.

Conclusão

O software RackTables é extremamente poderoso e de simples utilização, todo ambiente onde o mesmo for adotado terá ganhos, mas quanto maior e mais complexo o seu ambiente, mais necessário o mesmo se faz.
Como dito no início do  post, eu não pretendo ser a referência absoluta no assunto, mas acredito que colocando em prática o que foi demonstrado aqui, você será capaz de explorar as demais opções da ferramenta.

Instalação do RackTables em CentOS 7

Introdução

O RackTables é uma ferramenta fantástica para gerenciamento de toda a sua infraestrutura  de redes física e lógica, permite gerenciar Ranges de IPs, VLANs, Racks, Servidores, etc. Na página oficial existe um demo. Quem me falou dessa ferramenta foi meu grande amigo Rubens Zolotujin.

Ponto de partida

Eu parto do princípio que você já possui um Servidor CentOS 7 Básico.

Pré-Requisitos

Vamos suprir as dependências:
# yum install php-common php-cli php-ldap php-snmp

Reinicie o apache para que ele relei os novos módulos:
# service httpd restart

Instalação

A instalação é bastante simples, primeiro vamos fazer o download da última versão estável do software e descompactá-lo.
# cd /install
# wget http://downloads.sourceforge.net/project/racktables/RackTables-0.20.11.tar.gz

# tar -xzvf RackTables-0.20.11.tar.gz

O último passo é copiar o diretório com os arquivos php para o diretório padrão do CentOS.
# cp -r RackTables-0.20.11/wwwroot/ /var/www/html/racktables

Criar a base de dados

Vamos criar a base de dados que será posteriormente populada.
# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE racktables;

MariaDB [(none)]>GRANT ALL ON racktables.* TO rackuser@localhost IDENTIFIED BY 'rackpw';
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>QUIT

Instalação da Interface Gráfica

Para iniciar a instalação vamos abrir todas as permissões do diretório.
# chmod -R 777 /var/www/html/racktables/

Abra no navegador o endereço http://IP_do_Servidor/racktables
A mensagem de erro é normal, clique em here.
No passo 1 de 7, clique em proceed.
No passo 2 de 7, não se preocupe com a ausência do módulo PCNTL e nem com o fato de não estarmos usando https, clique em proceed. Leia sobre as implicações do PCNTL antes de habilitá-lo, quanto ao https pode (e deve) ser corrigido posteriormente.
No passo 3 de 7 recebemos uma mensagem de erro, que já traz os comandos necessários para resolver o problema.
# touch '/var/www/html/racktables/inc/secret.php'; chmod 666 '
/var/www/html/racktables/inc/secret.php'

Clique em retry. A tela muda e precisamos preencher as informações com as credencias do banco e clicar em retry.
O passo 3 é concluído com sucesso e podemos continuar, clique em proceed.
No passo 4 de 7 recebemos uma mensagem de erro, que já traz os comandos necessários para resolver o problema. Porém no CentOS não existe o grupo "nogroup" e sim o "nobody", então temos que mudar esse detalhe. 
# chown apache:nobody /var/www/html/racktables/inc/secret.php; chmod 400 /var/www/html/racktables/inc/secret.php 
Clique em retry. O passo 4 é concluído com sucesso e podemos continuar, clique em proceed.
No passo 5 de 7 a base de dados é populada, clique em proceed.
No passo 6 de 7 você deve setar a senha de administrador e clicar em retry.
O passo 6 é concluído com sucesso e podemos continuar, clique em proceed.
No passo 7 de 7 você é parabenizado e pode clicar em retry.
Tela de autenticação, entre com o usuário admin e com a senha cadastrada. Clique em OK.
Tela principal do RackTables

Referências

Wiki do RackTables
Unixmen