Instalação e configuração.
Preparando o sistema O ambiente proposto neste tutorial é o Debian Squezee. Primeiro, vamos atualizar o nosso sources.list. Para isso execute: # nano /etc/apt/sources.list Agora, adicione o seguinte conteúdo: deb http://ftp.debian.org/debian/ squeeze-updates main contrib deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib deb http://ftp.br.debian.org/debian/ squeeze main contrib non-free deb http://ftp.debian.org/debian/ squeeze main contrib non-free Salve e saia. Execute: # apt-get update # apt-get upgrade Vamos instalar os pacotes necessários # apt-get install make flex gcc gpp apache2 php5 php5-mysql libapache2-mod-php5 php5-gd php-net-socket libpq5 libpq-dev snmp libiksemel-dev libcurl4-gnutls-dev libssh2-1-dev libssh2-1 libopenipmi-dev libsnmp-dev mysql-server mysql-client wget libmysqld-dev curl fping rcconf Obs.: Na instalação pedirá a senha root do banco MySQL, preste atenção nesta senha. Agora vamos criar o banco de dados para o Zabbix guardar os dados. Então execute: # mysql -u root -p mysql> create database zabbix character set utf8; mysql> GRANT ALL PRIVILEGES ON *.* TO zabbix@localhost IDENTIFIED BY '123456' WITH GRANT OPTION; mysql> quit Obs.: A sequência numeral "123456" foi a senha que escolhi para o BD do Zabbix, você poderá trocar se quiser. Criando o usuário zabbix: # adduser --disabled-password --disabled-login --shell=/bin/false zabbix Agora vamos configurar o PHP. Edite o arquivo /etc/php5/apache2/php.ini com estas informações: date.timezone = "America/Brasília"
max_execution_time = 300 max_input_time = 300 post_max_size = 32M Reinicie o serviço Apache 2: # /etc/init.d/apache2 restart Instalando o Zabbix e configurando o MySQL Antes de tudo, crie uma pasta chamada "download" dentro do diretório "etc". Então execute: # mkdir /etc/download # cd /etc/download Agora vamos fazer o download da última versão do dia (13/12/12), que é a 2.0.4. Dentro do diretório download, execute: # wget http://downloads.sourceforge.net/project/zabbix/zabbix%20latest %20Stable/2.0.4/zabbix-2.0.4.tar.gz Depois vamos descompactar o arquivo baixado: # tar xzvf zabbix-2.0.4.tar.gz Vamos entrar na pasta descompactada e compilar o Zabbix: # cd zabbix-2.0.4 #./configure --enable-server --enable-agent --with-mysql --with-netsnmp --with-jabber --withlibcurl=/usr/bin/curl-config --with-ssh2 --with-openipmi # make install Ajustando a configuração Vamos popular o banco agora. # cd /etc/download/zabbix-2.0.4/database/mysql/ # mysql -D zabbix -u zabbix -p < schema.sql Coloque a senha do usuário zabbix criada dentro do banco. No meu caso, minha senha é: 123456 # mysql -D zabbix -u zabbix -p < images.sql Coloque a senha do user zabbix criada dentro do banco. # mysql -D zabbix -u zabbix -p < data.sql Coloque novamente a senha do usuário zabbix. Feito isso, nossa configuração do MySQL está encerrada.
Agora vamos ajustar algumas permissões. Primeiro vamos criar uma pasta chamada zabbix dentro do diretório "etc" e ajustar as permissões: # mkdir /etc/zabbix # chown -R zabbix.zabbix /etc/zabbix Este é o local onde ficam as configurações do zabbix (por padrão): # cd /usr/local/etc # nano zabbix_agent.conf Confirme se a opção Server está com o IP do servidor Zabbix: Server=127.0.0.1 # Coloque o IP do zabbix Salve e saia. # nano zabbix_server.conf Altere as linhas a seguir no arquivo: DBName=zabbix DBUser=zabbix DBPassword=123456 # Esta senha é a mesma de quando criamos o BD do Zabbix no começo do tutorial Salve e saia do arquivo. Dentro do mesmo diretório, executar este comando (este comando copia todas as configurações para o diretório /etc/zabbix): # cp zabbix_*.conf /etc/zabbix/ Agora vamos copiar os scripts de inicialização do Zabbix para iniciar automaticamente no boot: # cd /etc/download/zabbix-2.0.4/misc/init.d/debian/ # cp zabbix-* /etc/init.d/ # cd /etc/init.d # chmod 777 zabbixserver # chmod 777 zabbixagent # rcconf Obs.: No último comando, marque os dois scripts do Zabbix e dê OK. Depois inicie os serviços: # /etc/init.d/zabbixserver start # /etc/init.d/zabbixagent start Ajustando o frontend e terminando a instalação # mkdir /var/www/zabbix
# cp -R /etc/download/zabbix-2.0.4/frontends/php/* /var/www/zabbix/ # /etc/init.d/apache2 restart # chown -R www-data:zabbix /var/www/zabbix Agora abra o navegador e digite: http://<endereco_do_servidor>/zabbix/ Será exibida a tele inicial de configuração do Zabbix. 1. Clique em: Next 2. Se tudo ocorreu bem, clique em: Next 3. Aqui, iremos colocar o nome da base de dados do MySQL, o nome do usuário e a senha. Clique em: Test connection Se aparecer um OK, clique em: Próximo
4. Na opção "Name", você pode colocar um nome para identificar o banco de dados do Zabbix, caso você tenha mais de um banco no seu MySQL, e depois clique em: Next 5. Clique em: Next
6. Se você seguiu certinho todos os passos, terá o prazer de receber esta tela, então, é só clicar em: Finish (caso contrário, reveja o tutorial. rs) Acessando o Zabbix e configurando host Esta é a tela de login, no primeiro login você terá que usar o seguinte usuário: Login: admin Senha: zabbix Este usuário é o padrão do Zabbix, depois que você fizer o primeiro login poderá ativar o usuário zabbix e criar outros:
Após o login, você terá essa tela: Para ativar o monitoramento do próprio Server Zabbix, vá na seguinte opção: Configuration Host E clique em: Not Monitored Após aparecerá a mensagem abaixo, clique em: OK
Agora o status mudará para "Monitored", em verde: Para adicionar um host Windows, temos que instalar os agentes antes. Primeiro, temos que entrar no site do Zabbix para fazer o download dos agentes Windows. Para isso, abra um browser qualquer e entre no site: http://www.zabbix.com/ Navegue na opção download na parte superior, na próxima tela, escolha a ultima opção dos agents: Descompacte os arquivos, renomeie a pasta descompactada para zabbix, dentro da pasta zabbix você terá as seguintes pastas: Bin e conf. Entre na pasta Bin e você verá os arquivos necessários para a instalação dos agentes, tanto 32 bits como 64.
Copie esta pasta zabbix para o c:/ do servidor desejado. Dentro da pasta zabbix, crie um arquivo TXT com o seguinte nome "zabbix_agentd.conf". Dentro deste arquivo deve ter as seguintes informações: Server=IP do Servidor do Zabbix Hostname=Nome da máquina Cliente StartAgents=5 DebugLevel=3 LogFile=C:\zabbix\zabbix_agentd.log Timeout=3 Depois salve e certifique-se que o arquivo está com a extensão.conf e não.txt, senão o agente não funciona. Abra o prompt de comando e execute o seguinte: > cd.. Duas vezes até chegar na raiz do C. Então Execute: > C:\zabbix\bin\win32\zabbix_agentd.exe -i -c C:\Zabbix\zabbix_agentd.conf Se tudo ocorreu bem, você receberá as mensagens: zabbix_agentd.exe [1540]: Service "ZABBIX Agent" installed successfully. zabbix_agentd.exe [1540]: Event source "ZABBIX Agent" installed successfully. Agora, temos que iniciar o agente no service do Windows: Iniciar Painel de Controle Ferramentas administrativas Serviços Encontre o agente Zabbix, dê um duplo clique. Clique em: Start E depois: OK Com isso, nossa parte no Windows acabou, agora vamos voltar para o Zabbix. Vamos adicionar o servidor no Zabbix. Vá para as seguintes opções: Configuration Host E clique em: Create Host
Na próxima tela você terá que preencher as seguintes opções: Host name Nome da máquina a ser monitorada Visible name Nome que vai aparecer na tela de monitoração do Zabbix Ip address IP do servidor a ser monitorado Depois você terá que ir na opção "Templates" e clicar em: Add Aparecerá um pop-up onde você vai escolher a opção: Template OS Windows
Depois clique em: Select Em seguida, clique em: Save Pronto, é só fazer este procedimento para todos os hosts Windows. Criando um mapa para a rede Vá na seguinte opção: Configuration Mapas Clique em: Create map
Na próxima tela você terá que preencher as seguintes opções: Name Nome do Mapa Nas opções Width e Height você pode ajustar a largura e altura do seu monitor, assim o mapa ficará do tamanho certo. No meu caso, usarei as opções 1350x600: Após isso, clique em: Save Agora você verá o seu mapa criado, então clique no nome que você deu para ele, no meu caso: Viva O Linux
Então teremos esta outra tela: Na opção Icon, clique em "+", aparecerá uma nuvem. Se você clicar e segurar, poderá mexer a nuvem para onde quiser, e assim começar a desenhar seu mapa. Dê 2 cliques nela, você terá esta tela:
Na opção Type, mude para "host". Na opção Label, coloque o nome do Host. Na opção Host, clique em Select e selecione o seu host. Na opção Default, você poderá trocar o ícone, como estamos adicionando um servidor, vamos deixar na opção: Server_(48) Depois clique em: Aplicar E depois: Close Agora teremos esta tela: Como podemos ver, o host já está adicionado, então clique em: Save Para visualizar o mapa, vá na tela inicial do Zabbix, na opção Favourite maps, vamos adicionar o mapa criado, para isso clique na opção mostrada abaixo:
Clique em: Add map Selecione o mapa que você criou, e depois ele já vai aparecer na tela inicial do Zabbix na mesma opção Favourite maps, então clique nele para visualizar o mapa:
Criando Hosts Vamos para a parte interessante, monitorar máquinas! Mas temos alguns conceitos importantes para ver primeiro: hosts: são as máquinas monitoradas pelo servidor. ıtens: são as informações coletadas pelo servidor de cada host. trigger: s o mensagens de alerta caso algum ıtem se comporte de maneira não esperada, conforme pré - estabelecido. ações: Após emitir os alertas, podemos ter uma ação relativo ao ıtem e ao trigger, por exemplo, suponhamos que estejamos monitorando uma máquina X (host), o MySQL dela ( ıtem) e que o MySQL pare. Poder ser emitido um alerta (trigger) e essa mensagem ser enviada por e-mail para o administrador do Zabbix (ação). De posse dos conceitos básicos, vamos criar o nosso primeiro host. Devemos certificar que a máquina que queremos monitorar está com MySQL e o Zabbix Agent instalados, devidamente configurados e inicializados. Vá na aba Configuração -> Hosts e clique em Criar Host. Aparecerá uma tela como a que temos abaixo: Dê um nome para o seu host (geralmente o nome da máquina). Você pode colocar ela em um grupo de máquinas, utilizando as setinhas << ou >> (o grupo da máquina tem que ficar no quadro da esquerda) e escolha o grupo de preferˆncia. Na parte Endere o Ip, coloque o endere o do Ip da máquina cliente em questão e clique em salvar. Criando Ítens Ítens, como mencionado, são tarefas dadas ao servidor para que informações das clientes sejam coletadas. Uma vez criado um host, na aba Configuração -> Hosts, clique em Itens correspondente ao host desejado. Clique no campo Selecionar e escolha o dado que queira monitorar. Por exemplo, vamos monitar o MySQL em uma máquina. Escolha a opção proc.num. Na guia Chave, perceba que proc.num
tem campos que precisam ser alterados. Deixamos proc.num[,mysql] para monitar o MySQL, mas podemos deixar proc.num[,apache] caso seja o Apache ou proc.num[javatomcat] se quisermos monitorar o Tomcat, etc. Na guia Tipo de informa o deixamos como Numérico (fracionário) e por fim, clicamos em Salvar. Partindo do princípio que existirão máquinas que terão os mesmos ítens, criamos os ítens em um host s, selecionamos os ítens e colocamos a opção Copias selecionado (s) para..., escolhemos em quais hosts os itens serão copiados. Demos somente um exemplo simples. Para mais detalhes consulte o site abaixo. http://www.zabbix.com/documentation/2.0/manual/config/items Perceba que na coluna Status aparece como Inativo em vermelho. Clique nela para ficar em Ativo em verde. Se estiver como Não suportado, provavelmente o erro aconteceu na hora de preencher os campos correspondentes a Chave. Volte lá e conserte!
Emitindo Triggers Pronto, criamos um ou mais ítens, que por si só, simplesmente pegam informações dos clientes e colocam no banco de dados. Mas queremos trabalhar essas informações. Podemos estabelecer condições que, se não satisfeitas, al guma ação poder ser feita. Mas lembrando, triggers só mandam alertas, ações na próxima parte! Clique em Configurações -> Hosts, clique em Triggers e clique em Criar Trigger. Aparecer uma tela como a que está mostrada abaixo: Na guia nome, coloque o nome da sua trigger, como por exemplo, Processos no MySQL. Na guia, Expressão, clique em Adicionar. Aparecerá uma tela, como mostrado na figura abaixo: Na guia Ítem, escolhemos um ítem de nossa preferência, e na guia Função, definimos uma condição para que a trigger seja acionada. Por exemplo, se o MySQL parar de funcionar, emita um alarme. Logo escolha Last Value = N e deixe a guia N ( ultima de cima para baixo) como zero e clique em inserir. Na próxima tela, defina o grau do trigger caso ele aconteça, como N o classificada, Informação, etc. Clique em Salvar. Os triggers também podem ser copiados para outros hosts caso haja ne cessidade. Selecione-os e clique em Copiar selecionado (s) para... e selecionamos em quais hosts os triggers vão ser copiados. Para mais detalhes sobre triggers, consulte a página:
http://www.zabbix.com/documentation/2.0/manual/config/triggers Enviando emails A muitas maneiras de fazermos isso mas iremos simplicar no debian. Instalando um servidor de e-mail. #apt-get install sendmail Criar diretório em /etc/zabbix/scripts: # mkdir /etc/zabbix/scripts Entrar no diretório: #cd /etc/zabbix/script Criar o arquivo zabbix_sendmail.sh com o seguinte conteúdo: #!/bin/bash export smtpemailfrom=email que vai enviar export zabbixemailto=$1 export zabbixsubject=$2 export zabbixbody=$3 export smtpserver=smtp. Exemplo: smtp.gmail.com export smtplogin=usuário export smtppass=senha do email /usr/bin/sendemail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m $zabbixbody -s $smtpserver:25 (mas pode ser 587 ao invés de 25)-xu $smtplogin -xp $smtppass Salve o script. Tornar o script executável: # chmod +x zabbix sendemail.sh Alterar as permissões do diretério e do script: # chown -R zabbix:zabbix /etc/zabbix/scripts Testar se o script foi configurado corretamente: #./zabbix sendemail.sh email@destino -m OI Mundo Se tudo deu certo vocé vai receber uma mensagem como: Data Nome do Host sendemail [ PID ] : Email was sent successfully! E o email@destino vai receber uma mensagem sem assunto com o conteudo Teste da Testa. Se não deu certo, revise seu
script! Vá no arquivo /etc/zabbix/zabbix_server.conf e faça as seguintes alterações: E altere a opção AlertScriptsPath para: AlertScriptsPath=/etc/zabbix/scripts Mídias No ambiente web, faça: Administração -> Tipos de M ídias -> Criar Mídias. Deixe o campo Descrição como Email, Tipo : Script e Nome Script como zabbix sendmail.sh. Ações Agora vamos criar ações que acontecerão caso uma trigger seja disparada. Vá em Configuração -> Ações e clique em Criar Ações. Aparecerá uma tela como a que temos abaixo: Dê um nome para a sua ação e na guia Condições de Ação, clique em Nova. Onde está escrito Descrição do Trigger, coloque simplesmente Trigger, deixe o sinal de = e escolha a Trigger que desejas. Você terá que à direita, em Operações da Ações, clique em Nova e deixe como: Tipo de operação : enviar mensagem, Enviar mensagem para : usuário, Selecionar, deixe em Admin e clique em salvar.
Mais informações. http://www.zabbix.com/documentation/1.8/manual/config/actions Gráficos Um recurso interessante do Zabbix é a criação de gráficos a partir das informações coletadas. Vá em Configurações -> Hosts e clique em Gráficos correspondente ao host de sua preferência. Clique em Criar Gráfico e aparecerá uma tela como a figura abaixo: Dê um nome ao gráfico e marque Mostrar Triggers. Na guia Ítens, clique em Adicionar. Aparecerá uma tela como a mostrada abaixo: Em Parêmetro, clique em Selecionar e escolha o ítem cujas informações serão mostradas no gráfico. Em Estilo, note que a opção Linha está marcada, geralmente, deixe se opção Região
Preenchida, mas isso vai da necessidade. Clique em Adicionar e em seguida em Salvar. Pronto, temos um gráfico para ser visualizado. Vá em Monitoramento -> Gráficos e escolha o host e o gráfico que quer visualizar. Se tudo deu certo, o Zabbix estará atualizando o gráfico de tempos em tempos (isso foi pré - definido na hora de criar o ítem). Se copiar gráficos para outros hosts, selecione-os e clique em Copiar selecionado(s) para... e escolha os hosts que quiser. Para maiores informações sobre gráficos, consulte o manual do Zabbix: http://www.zabbix.com/documentation/1.8/manual/config/graphs Comando Remoto Vamos fazer uma suposição. Em um determinado host é necessário que o MySQL esteja ativo o tempo todo porque estamos armazenando dados para uma pesquisa muito importante. Até agora vimos que o Zabbix, em caso de parada do MySQL (ou qualquer outro programa), consegue detectar essa queda e enviar um email alertando sobre o fato. E se quisermos fazer o Zabbix reiniciar o MySQL automaticamente? E exatamente disso que vamos tratar. Um recurso muito importante e poderoso do Zabbix é emitir um comando remoto aos hosts que estamos monitorando. Para tanto, vamos em Configuração -> Ações e clique em Criar ações. Na parte Editar operação, clicamos em Nova. Onde está escrito Enviar mensagem, alteramos para Controle remoto e colocamos um comando (host: sudo /etc/init.d/mysql restart) como está no exemplo da figura abaixo: Substitua na palavra host do comando o nome do host. Observe que colocamos o comando para o reinício do MySQL, mas poderia ser do Apache, do Tomcat, etc. Colocado o comando, clicamos em Adicionar. Na parte Condições da ação, escolhemos uma condição para que o comando seja disparado, ou seja, partindo do princípio que criamos um item para a coleta de dados do MySQL e um trigger para ser acionado quando as informações pararem de chegarem do agent, colocamos opção trigger e escolhemos trigger de fato, no host determinado. Clicamos em Adicionar e em
seguida em Salvar. Repetimos a ação com os outros hosts e para outros programas. Ainda não está pronto. Como usuário root no terminal do host, digite: # visudo E no arquivo que se abriu, acrescente as seguintes linhas no final: # allows zabbix user to run all commands without password. zabbix ALL=NOPASSWD: ALL Salve o arquivo e saia. Pronto o seu Zabbix já esta funcional e pronto para gerenciar sua rede.