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