#!/bin/bash #---------------------------# # CONFIGURAÇÃO DOS GATEWAYS # #---------------------------# GW1=10.0.2.2 GW2=192.168.1.1 LOG=/root/rc.firewall.log #------------------------------# # INÍCIO DA FUNÇÃO DE FAILOVER # #------------------------------# # Aqui optei em por uma função para deixar a estrutura do # script mais organizada e legível. É de suma importância # que você esteja familiarizado com o shell script failover () { # Criação de um loop infinito para testar a disponibilidade # dos links de internet while [ 1 ] do # Altera sempre para o gateway padrão dentro da tabela # main de roteamento, ou seja, quando o link primário voltar, # automáticamente a navegação volta para este /sbin/ip route replace default via $GW1 # Neste for, o comando dig retornará os dois IPs relacionados # ao site do UOL. Você poderia por qualquer site aí, porém o UOL # retorna dois IPs que serão utilizados pelo script para saber # se o link de internet principal está fora for i in `dig +short uol.com.br` do # Verificando a comunicação do link de internet /bin/ping -c 1 $i done # Caso o resultado do comando anterior seja 0 (zero), o link # de internet principal está ok. Se for 1 (um) houve falha no comando # deduzindo assim ausência de conexão. Quem vai determinar isso é o # comando echo $?. Mais abaixo, haverá um if para testar as condições STATUS_CMD_LINK=`echo $?` if [ $STATUS_CMD_LINK -eq 0 ]; then # Caso haja sucesso no teste do comando do ping # as regras para o compartilhamento de internet serão inseridas /sbin/iptables -F /sbin/iptables -t nat -F /sbin/modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE else # Se o link falhar, os comandos mais abaixo farão a limpeza # das regras de iptables e irão configurar o segundo link de internet # e será criado um arquivo de log informando quando houve a queda echo "_________________________" >> $LOG echo " " >> $LOG echo "# LINK SECUNDARIO ATIVO.: `date +%d/%m/%y-%H:%M:%S`">> $LOG echo " " >> $LOG echo "_________________________" >> $LOG /sbin/ip route replace default via $GW2 /sbin/iptables -F /sbin/iptables -t nat -F /sbin/modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE fi # A cada 2 minutos (120 segundos) será feito um teste no link # principal para constar se o mesmo encontra-se no ar. sleep 120 done } ####### CHAMA A FUNÇÃO ######## failover
sexta-feira, 6 de fevereiro de 2015
Configuração de failover de links de internet
Dicas rápidas para linha de comando!
#1 - ASSISTA STAR WARS EM MODO ASCII
Dê o seguinte comando no shell:$telnet towel.blinkenlights.nlAgora é só curtir o filme. :D
#2 - DESCUBRA SEU IP EXTERNO PELA LINHA DE COMANDO
De vez em sempre precisamos saber o nosso IP dinâmico externo fornecido pela operadora. Existem N formas de fazer isso. Aqui vou passar somente algumas dicas para a linha de comando, pois é a forma que julgo mais rápida, até mais rápida do que ter de acessar a página de configuração do roteador/modem para consultar o IP adquirido.- Usando wget: (utilize qualquer uma das opções, encontre a que você achar mais eficiente)
$wget -qO - icanhazip.com $wget -qO - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' $wget -qO - ifconfig.me $wget -qO - ip.appspot.com $wget http://ipecho.net/plain -O - -q ; echo
- Usando curl: (utilize qualquer uma das opções, encontre a que você achar mais eficiente)
$curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' $curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+' $curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+" $curl -s monip.org | iconv -f iso-8859-1 | sed -n 's/.*IP : \([0-9.]*\).*/\1/p' $curl ifconfig.me $curl ipecho.net/plain $curl icanhazip.com $curl ipv4.icanhazip.com (explicitamente evoca o IPv4) $curl ipv6.icanhazip.com (explicitamente evoca o IPv6) $curl curlmyip.com #curl l2.io/ip $curl ip.appspot.com $curl ifconfig.me/ip $curl eth0.me
- Com JSON caso você queira:
$curl httpbin.org/ip $curl wtfismyip.com/json
- Usando dig:
$dig +short myip.opendns.com @resolver1.opendns.com
- Usando lynx:
$lynx -dump checkip.dyndns.org | grep 'Current IP Address:' $lynx -dump eth0.me $lynx --dump monip.org | grep 'IP'
Não vou me prolongar mais nesta parte, com oeu disse: EXISTEM "N" MANEIRAS PARA SE CHEGAR AO MESMO RESULTADO! Cabe a você escolher a que achar melhor. Faça alterações nos comandos, faça suas experiências, adapte-os. Basta olhar na lista e verá que exitem várias adaptações e modificações para um mesmo comando principal. O que influencia no final é sua escolha. Finalizando esta parte, indico uma última alternativa: Quem usa Debian/Ubuntu pode instalar, caso já não tenha instalado, o pequeno programa miniupnpc se o seu roteador/modem tiver suporte para UPnP. Depois de instalado é só executar:$upnpc -s | grep ^ExternalIPAddress | cut -c21-
Esse comando fará o mesmo que todos os outros indicados nesta seção: te mostrará seu IP dinâmico externo.
Dica
Você pode criar um shell script simples com algum dos comandos acima para tornar o processo ainda mais rápido. Exemplo#!/bin/bash #Cria váriável e atribui valor MYDINIPADDRESS="`curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`" echo "\n O seu endereço IP externo é: $MYDINIPADDRESS"Salve o arquivo (de preferência coloque a extensão .sh), torne-o executáve alterando suas permissões e depois é só executar.
#3 - EXTRAINDO TEXTO PURO DE ARQUIVOS HTML
Certa vez precisei extrair texto puro de um arquivo html. Encontrei várias opções de conversores e etc, mas a maneira mais rápida e eficaz para mim foi utilizando o lynx.Basta executar o comando:
$lynx --dump arquivo.html > arquivo.txtFunciona também com arquivos PHP
#4 - UM POUCO DE CURL
Alguns usos úteis do curl:- Baixando arquivos:
$curl -o nome_arquivo_local http://url_direta_para_o_arquivo
Este comando funciona mesmo com binários, desde que você tenha o link direto para o arquivo - Baixando/Upando arquivos de/para servidores FTP:
$curl -u ftpuser:ftppass -O ftp://diretório_do_servidor/nome_do_arquivo
O comando acima baixa o arquivo e salva no diretório local$curl -u ftpuser:ftppass -O ftp://diretório_do_servidor/outro_diretório/
O comando acima lista todo o conteúdo existente em outro_diretório$curl -u ftpuser:ftppass -T arquivo.txt ftp://ftp.algumserver.org
O comando acima upará o arquivo.txt para o servidor$curl -u ftpuser:ftppass -T "{arquivo1,arquivo2}" ftp://ftp.algumserver.orgO curl permite upar vários arquivos de uma vez, exatamente como feito no exemplo acima. Você também pode utilizar curingas, como no comando abaixo, onde todos arquivos que satisfazerem a expressão serão baixados:$curl ftp://ftp.server.org/downloads/linux/[a-z]/
O curl é possui grande poder e versatilidade (aliás, todo o Linux é assim :D), os comandos aqui foram apenas uma simples mostra. Não vou aprofundar ou então deixar de ser "Dicas rápidas para linha de comando!"
#5 - COMANDOS ÚTEIS
- Testando se uma porta está aberta com o comando echo:
$echo >/dev/tcp/xxx.xxx.xxx.xxx/53 && echo "open"
No lugar do xxx.xxx.xxx.xxx coloque o endereço IP que deseja testar - Criando senhas aleatórias:
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-10};echo;Esta senha possui 10 caracteres. Altere a quantidade de caracteres desejados editando o comando em: {1:-10} - Exibir nome de dono do arquivo ou diretório:
$stat -c %U arquivo.txt
- Exibindo o IP local:
$ifconfig | grep "inet end.:" | awk '{print $3}' | grep -v '127.0.0.1' | cut -f2 -d:Este comando pode não funcionar em sua máquina dependendo do sistema e configuração. Se não funcionar você deve efetuar as devidas alterações no mesmo. Ex.: seu sistema pode estar em inglês, neste caso, "grep "inet end.:"" deve ser alterado para "grep "inet addr:"", etc, etc. Existe um comando mais rápido: "$ip addr show". Minha intenção foi mais uma vez demonstrar como existem vários caminhos para se chegar ao mesmo resultado. - Star Wars DNS
$traceroute 216.81.59.173
O comando acima te dará o traceroute de Star Wars.. Não entendeu? Execute.$( seq 1 8 200 ; seq 6 8 200 ) | sort -n | xargs -I{} -n 1 dig +short -x 206.214.251.{}Acima: Star Wars Episodio IV em DNS reverso
http://www.dicas-l.com.br/arquivo/dicas_rapidas_para_linha_de_comando.php#.VNSaqzVVKlM
sábado, 10 de janeiro de 2015
DECIFRANDO O /ETC/FSTAB
DECIFRANDO O /ETC/FSTAB
fstab é um arquivo em texto puro para configuração de dispositivos de armazenamento e pontos de montagem do GNU/Linux e que pode ser editado facilmente se você for administrador.
Abaixo um exemplo do fstab:
Onde temos:
1ª COLUNA - PARTIÇÃO, DISPOSITIVO OU PASTA DE REDE
Aqui você indica a partição do HD, o CD-ROM, disquete, pendrive ou pasta de rede a serem montados no boot ou com o comando:# mount -a
Obs.: para montar pastas de rede Windows recomento a dica do amigo Anderson Raimundo Lopes Nascimento:
E para NFS:
2ª COLUNA - PONTO DE MONTAGEM
Aqui você indica o local onde serão montadas as partições, dispositivos e pastas compartilhadas da rede.3ª COLUNA - SISTEMA DE ARQUIVOS
Aqui você indica o sistema de aquivos utilizado, sendo comum o uso do "auto" em drivers de CD-ROM, disquetes e até mesmo em pendrives.Os sistemas de arquivos mais comuns são: swap, ext2, ext3, ext4, ReiserFS, XFS, JFS, VFAT, NTFS, entre outros.
4ª COLUNA - REGRAS DE MONTAGEM
Aqui você indica o que quer que o sistema permita para cada ponto de montagem. Uma boa parte da segurança do seu sistema pode ser configurada aqui.Segue link com algumas dicas:
Algumas opções de uso são:
- rw - permissão de leitura e escrita
- ro - permissão de leitura apenas
- suid - permite a utilização do bit suid (set-user-identifier) ou sgid (set-group-identifier)
- nosuid - não permite a utilização do bit suid ou sgid, tratando como arquivos comuns
Mais informações sobre SUID e SGID em:
Mais opções:
- dev - permite a criação de arquivos de dispositivos
- nodev - não permite a criação de arquivos de dispositivos
- exec - permite execução de binários
- noexec - não permite a execução de binários
- auto - monta automaticamente no boot
- noauto - não monta no boot
- user - pode ser montado por usuários simples
- nouser - só pode ser montado pelo root
- sync - gravação síncrona do dispositivo, ou seja, grava no disco assim que o comando é executado.
- async - gravação assíncrona do dispositivo, ou seja, grava na memória primeiro e depois no disco.
- defaults - rw, suid, dev, exec, auto, nouser, e async
5ª COLUNA - OPÇÕES DO DUMP
Opção de backup da partição onde:- 0 - está desativado
- 1 - está ativo
6ª COLUNA - OPÇÕES DO FSCK
Opção de verificação da partição onde:- 0 - não verifica
- 1 - prioridade de verificação (partição do sistema, /)
- 2 - prioridade de verificação (outras partições)
fonte:
http://www.vivaolinux.com.br/dica/Decifrando-o-etcfstab
terça-feira, 30 de dezembro de 2014
Monitorando Rede com Zabbix no Debian 7
Introdução / Pré-Instalação / Configuração
Introdução
Neste tutorial, abordarei uma ferramenta muito interessante que testo por alguns meses, mas já posso dizer que é uma das melhores ferramentas para monitoramento de redes, seja ela pequena ou grande.Criado para monitorar disponibilidade e desempenho de redes, ele é capaz de monitorar e coletar muita coisa. Podemos monitorar, por exemplo, recursos de hardware (velocidade do cooler, temperatura do processador, temperatura do HD, etc), recursos lógicos (Processamento, memória utilizada, IO dos discos, partições, trafego de rede, etc) ambientes (temperatura e umidade do seu CPD ou de outros locais).
Enfim, tudo o que você consegue monitorar por IPMI, SNMP, Simple Check, entre outras maneiras de monitoramento de Servidores, Sensores, Switchs, Roteadores, No-Breaks, enfim, muita coisa pode ser monitorado pelo nosso amigo Zabbix. Digo amigo, porque esse 'cara' é muito útil para nós, profissionais de TI.
Então, você me pergunta: Jeferson, para que vou querer monitorar minha rede? Por que?
Respondo: por vários motivos! Imagine você sem ferramenta nenhuma de monitoramento? Como é que você vai provar e convencer o seu gerente/diretor que você precisa de um upgrade do seu servidor porque o 'coitadinho' não está aguentando mais processar o volume de dados da sua empresa?
Como é que você vai convencer o seu gerente/diretor que você precisa aumentar a sua banda, porque o seu link atual não está mais dando conta do volume de trafego que tem em sua empresa?
Talvez essa não seja solução garantida, mas com gráficos de monitoramento, pode acreditar que fica muito mais fácil. Estes são uns dos exemplos, pois você poderia utilizar, por exemplo, para saber quando alguma coisa está errada em sua rede, um switch/roteador desligado, um servidor reiniciando sozinho, um broadcast muito alto na sua rede, enfim, você consegue monitorar tudo isso, ajudando e muito no tempo de resolução de um problema, deixando a sua infra-estrutura o mais disponível possível.
Então, vamos à instalação dessa ferramenta maravilhosa!
Neste tutorial estou usando o Debian 7 como servidor/cliente. Caso tenha preferencia por outra distribuição, verifique e adapte os comandos.
Pré-Instalação
Antes de começar a instalação do Zabbix, precisamos antes atender a alguns pré-requisitos para a instalação, como compilador, Java, MySQL, PHP, Apache e algumas bibliotecas.Para instalarmos os pacotes necessários, vamos utilizar os seguintes comandos:
# echo "deb http://ftp.br.debian.org/debian stable main" >> /etc/apt/sources.list
# apt-get update
# apt-get install -y --force-yes 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 vim libssh2-1-dev libssh2-1 libopenipmi-dev libsnmp-dev mysql-server-5.5 mysql-client wget libmysqld-dev curl fping openjdk-6-jdk
Obs: na instalação do MySQL, será solicitada a senha do root.
Pronto, depois de instalarmos as dependências para a instalação do Zabbix, vamos criar os diretórios onde ficarão os arquivos.
# mkdir -pv /etc/zabbix/install
# cd /etc/zabbix/install
Já dentro do diretório, vamos baixar e descompactar o pacote do Zabbix:
# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.8/zabbix-2.0.8.tar.gz
# tar -xzvf zabbix-2.0.8.tar.gz
Pronto, agora vamos às configurações.
Configuração
O que devemos fazer agora, é criar e configurar a base do MySQL que será usada pelo Zabbix, criar um usuário para o Zabbix no Unix e configurar o Apache/PHP.# mysql –u root –p
mysql> create database zabbix character set utf8;
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> quit;
Obs: em password, coloque a senha da base de dados para o usuário zabbix que não terá ligação com o usuário do Unix.
# useradd -s /bin/false zabbix
Vamos agora alterar algumas configurações do Apache/PHP, editando o seguinte arquivo:
# pico /etc/php5/apache2/php.ini
date.timezone = "America/Brasilia"
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
Como alteramos as configurações do Apache/PHP, vamos reinicia-lo:
# /etc/init.d/apache2 restart
Instalação
Vamos começar, realmente, a instalação do Zabbix. O primeiro passo é popular a base de dados que criamos anteriormente:
# cat /etc/zabbix/install/zabbix-2.0.8/database/mysql/schema.sql | mysql -u zabbix -p<password> zabbix
# cat /etc/zabbix/install/zabbix-2.0.8/database/mysql/images.sql | mysql -u zabbix -p<password> zabbix
# cat /etc/zabbix/install/zabbix-2.0.8/database/mysql/data.sql | mysql -u zabbix -p<password> zabbix
Depois de popular o banco de dados, vamos configurar o pacote para a instalação. Para isso, navegue até o deretório "/etc/zabbix/install/zabbix-2.0.8/":
# ./configure --prefix=/etc/zabbix --enable-server --enable-agent --enable-java --with-mysql --with-net-snmp --with-jabber --with-libcurl=/usr/bin/curl-config --with-ssh2 --with-openipmi
Onde:
- --prefix=/etc/zabbix → Indicando o diretório dos arquivos de instalação.
- --enable-server → Habilitando o servidor Zabbix.
- --enable-agent → Habilitando o agente Zabbix.
- --enable-java → Habilitando o Java.
- --with-mysql → Indicando qual será a nossa base de dados, no nosso caso o MySQL.
- --with-net-snmp → Habilitando o monitoramento SNMP.
- --with-jabber → Habilitando o envio de mensagens via Jabber.
- --with-libcurl=/usr/bin/curl-config → Habilitando a biblioteca Curl e indicando o seu diretório.
- --with-ssh2 → Habilitando o modulo SSH2 para comandos remotos e monitoramento via SSH.
- --with-openipmi → Habilitando o monitoramento IPMI.
Obs: caso queira verificar todos os módulos disponíveis no Zabbix, execute o comando
$ ./configure --help
Depois de configurarmos o pacote, vamos compilar e instalar:
# make; make install
Vamos editar o arquivo "/etc/services", adicionando as portas necessárias para comunicação do Zabbix:
# pico /etc/services
zabbix-agent 10050/tcp #Zabbix Agent
zabbix-agent 10050/udp #Zabbix Agent
zabbix-trapper 10051/tcp #Zabbix Trapper
zabbix-trapper 10051/udp #Zabbix Trapper
zabbix-agent 10050/udp #Zabbix Agent
zabbix-trapper 10051/tcp #Zabbix Trapper
zabbix-trapper 10051/udp #Zabbix Trapper
Obs: como é possível reparar neste arquivo, as portas estão em ordem, adicione as linhas acima nesta ordem. Lembrando que, em alguns casos, a linha é adicionada automaticamente, então, tente localiza-las antes de inserir manualmente.
Agora, vamos criar alguns links para ficar mais fácil a localização dos arquivos de configuração, tanto do cliente, como do servidor Zabbix:
# ln -s /etc/zabbix/etc/zabbix_agentd.conf /etc/zabbix
# ln -s /etc/zabbix/etc/zabbix_server.conf /etc/zabbix
Vamos editar o arquivo "/etc/zabbix/zabbix_agentd.conf", alterando os seguintes valores:
# pico /etc/zabbix/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
LogFileSize=2
DebugLevel=3
EnableRemoteCommands=1
LogRemoteCommands=1
Server=127.0.0.1
ListenPort=10050
Hostname=Informe_o_nome_do_seu_servidor
LogFile=/tmp/zabbix_agentd.log
LogFileSize=2
DebugLevel=3
EnableRemoteCommands=1
LogRemoteCommands=1
Server=127.0.0.1
ListenPort=10050
Hostname=Informe_o_nome_do_seu_servidor
Depois, vamos alterar as configurações do arquivo "/etc/zabbix/zabbix_agentd.conf", que é a configuração do servidor Zabbix:
# pico /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/tmp/zabbix_server.log
LogFileSize=2
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=senha do zabbix para acessar o banco de dados
StartIPMIPollers=1
StartDiscoverers=5
FpingLocation=/usr/sbin/fping
LogFile=/tmp/zabbix_server.log
LogFileSize=2
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=senha do zabbix para acessar o banco de dados
StartIPMIPollers=1
StartDiscoverers=5
FpingLocation=/usr/sbin/fping
Obs: certifique-se que o caminho do fping da sua instalação é realmente igual ao do nosso exemplo com o comando whereis fping, para que não haja problemas posteriormente.
Vamos configurar agora, a parte dos frontends:
# mkdir /var/www/zabbix
# cp -R /etc/zabbix/install/zabbix-2.0.8/frontends/php/* /var/www/zabbix/
# chown -R www-data:www-data /var/www/zabbix/
# /etc/init.d/apache2 restart
Agora, precisamos criar os scripts de start-stop-restart, tanto do servidor, quanto do cliente Zabbix:
# pico /etc/init.d/zabbix_agentd
#!/bin/sh
#
# Zabbix agent start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.
NAME=zabbix_agentd
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID \
--exec $DAEMON
;;
stop)
echo "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --pidfile $PID \
--exec $DAEMON
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
# echo -n "Restarting $DESC: zabbix_agent"
$0 stop
$0 start
# start-stop-daemon --stop --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# sleep 1
# start-stop-daemon --start --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
#
# Zabbix agent start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.
NAME=zabbix_agentd
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID \
--exec $DAEMON
;;
stop)
echo "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --pidfile $PID \
--exec $DAEMON
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
# echo -n "Restarting $DESC: zabbix_agent"
$0 stop
$0 start
# start-stop-daemon --stop --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# sleep 1
# start-stop-daemon --start --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
# pico /etc/init.d/zabbix_server
#!/bin/sh
#
# Zabbix daemon start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.
NAME=zabbix_server
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix server daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID \
--exec $DAEMON
;;
stop)
echo "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --pidfile $PID \
--exec $DAEMON
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is 10
# just the same as "restart".
#
# echo -n "Restarting $DESC: zabbix_server"
$0 stop
$0 start
# start-stop-daemon --stop --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# sleep 1
# start-stop-daemon --start --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
#
# Zabbix daemon start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.
NAME=zabbix_server
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix server daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID \
--exec $DAEMON
;;
stop)
echo "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --pidfile $PID \
--exec $DAEMON
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is 10
# just the same as "restart".
#
# echo -n "Restarting $DESC: zabbix_server"
$0 stop
$0 start
# start-stop-daemon --stop --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# sleep 1
# start-stop-daemon --start --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Vamos dar permissão aos scripts e iniciar o agente e o servidor Zabbix:
# chmod +x /etc/init.d/zabbix_server /etc/init.d/zabbix_agentd
# /etc/init.d/zabbix-server start
# /etc/init.d/zabbix-agentd start
Vamos configurar a inicialização do sistema para que os serviços sejam devidamente iniciados junto com o sistema:
# update-rc.d -f zabbix_server defaults
# update-rc.d -f zabbix_agentd defaults
Pronto, já fizemos todas as configurações necessárias no Unix. Vamos agora à parte gráfica do negócio, para isso, devemos acessar o endereço:
http://ip_do_servidor/zabbix
Uma janela semelhante a essa será exibida. Clique em: Next
Verifique todas as dependências e se estiver tudo Ok, clique em: Next
Deixe padrão o nome do host e a porta, e em Name, insira o nome do seu servidor e clique em: Next
Confira os dados inseridos e clique em: Next
Pronto, o Zabbix já está configurado. Logo após clicar em Finish, será exibida a tela de login.
Por padrão:
- Usuário: admin
- Senha: zabbix
Para habilita-lo, vá em Configuration e depois em Host, logo você visualizará o servidor. E em Status, estará como Not monitored, basta clicar em cima que o status ficará como Monitored.
Instalação e Configuração Clientes Linux e Windows
Cliente Linux
Antes de configurarmos o cliente, devemos criar os diretórios que irão alocar os arquivos de instalação:# mkdir -pv /etc/zabbix/install
# cd /etc/zabbix/install
Já dentro do diretório, vamos baixar e descompactar o pacote do Zabbix:
# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.8/zabbix-2.0.8.tar.gz
# tar -xzvf zabbix-2.0.8.tar.gz
# cd zabbix-2.0.8/
O próximo passo, seria a compilação dos módulos que vamos instalar, mas antes, vamos instalar o gcc e o make:
# apt-get update
# apt-get install –y gcc make
Depois de instalado o gcc e o make, vamos compilar nossa instalação:
# ./configure --prefix=/etc/zabbix --enable-agent --enable-static
Onde:
- --prefix=/etc/zabbix → Indicando o diretório dos arquivos de instalação.
- --enable-agent → Habilitando o agente Zabbix.
- --enable-static → Criando links estáticos para os binários.
Depois de compilado, vamos instalar:
# make; make install
Vamos agora, depois de instalado, criar alguns links para facilitar o acesso ao arquivo de configuração do agente:
# ln -s /etc/zabbix/etc/zabbix_agentd.conf /etc/zabbix/
Agora, vamos configurar o script de gerenciamento (start / stop / ... /):
# pico /etc/init.d/zabbix_agentd
#!/bin/sh
#
# Zabbix agent start/stop script.
#
NAME=zabbix_agentd
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID \
--exec $DAEMON
;;
stop)
echo "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --pidfile $PID \
--exec $DAEMON
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
# echo -n "Restarting $DESC: zabbix_agent"
$0 stop
$0 start
# start-stop-daemon --stop --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# sleep 1
# start-stop-daemon --start --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
#
# Zabbix agent start/stop script.
#
NAME=zabbix_agentd
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC: $NAME"
start-stop-daemon --oknodo --start --pidfile $PID \
--exec $DAEMON
;;
stop)
echo "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --pidfile $PID \
--exec $DAEMON
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
# echo -n "Restarting $DESC: zabbix_agent"
$0 stop
$0 start
# start-stop-daemon --stop --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# sleep 1
# start-stop-daemon --start --quiet --pidfile \
# /tmp/$NAME.pid --user zabbix --exec $DAEMON
# echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Vamos aplicar permissão de execução ao script:
# chmod +x /etc/init.d/zabbix_agentd
Vamos alterar algumas configurações para que o agente funcione corretamente:
# pico /etc/zabbix/ zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
LogFileSize=1
EnableRemoteCommands=1
LogRemoteCommands=1
Server=IP_SERVIDOR_ZABBIX
ListenPort=10050
StartAgents=3
#ServerActive=127.0.0.1
Hostname=NOME_CLIENTE
LogFile=/tmp/zabbix_agentd.log
LogFileSize=1
EnableRemoteCommands=1
LogRemoteCommands=1
Server=IP_SERVIDOR_ZABBIX
ListenPort=10050
StartAgents=3
#ServerActive=127.0.0.1
Hostname=NOME_CLIENTE
Obs: note que em Server, você deve colocar o IP do seu servidor Zabbix, deve também comentar a linha ServerActive, e em Hostname, você deve colocar o nome do seu cliente, do mesmo jeito que aparece no shell.
Antes de iniciarmos o nosso agente, vamos criar um usuário no sistema para o Zabbix:
# useradd -s /bin/false zabbix
Agora vamos, finalmente, iniciar nosso agente:
# /etc/init.d/zabbix_agente start
Se tudo estiver OK, o agente será iniciado. Vamos configura-lo para iniciar junto com o sistema:
# update-rc.d -f zabbix_agentd defaults
Pronto, o nosso agente está configurado no nosso cliente. Basta configurar no console de administração do Zabbix para iniciar o monitoramento.
Obs: lembrando que caso haja um Firewall rodando no cliente, é necessário abrir as portas 10050/10051 UDP e 10050/10051 TCP, para que o servidor consiga comunicar-se com o agente.
Cliente Windows
Para configurarmos o agente no Windows, devemos primeiramente criar um diretório chamado ZABBIX em "C:", depois, devemos coletar alguns arquivos que estão no pacote que baixamos, tanto para instalação do servidor, quanto para a instalação do cliente Linux.Depois de descompactado, entre no diretório bin, dentro deste diretório há duas pastas (win32 e win64). Verifique a arquitetura do seu Sistema Operacional e copie todo o conteúdo da pasta correspondente para a pasta ZABBIX que criamos anteriormente.
Você pode usar o Filezilla, por exemplo, para transferir do Linux para o Windows ou baixar o pacote diretamente no Windows pelo link para download do pacote Zabbix, usando o 7-zip ou Winrar para descompactar.
Depois de todos os arquivos transferidos, devemos criar o nosso arquivo de configuração com o nome "zabbix_agentd.conf" que deverá ter o seguinte conteúdo:
# This is a config file for Zabbix Agent (Windows)
# To get more information about Zabbix, go to http://www.zabbix.com
############ GENERAL PARAMETERS #################
LogFile=c:\ZABBIX\zabbix_agentd.log
DebugLevel=3
Server=IP_SERVER
StartAgents=5
Hostname=HOSTNAME_CLIENTE
############ ADVANCED PARAMETERS #################
Timeout=3
# To get more information about Zabbix, go to http://www.zabbix.com
############ GENERAL PARAMETERS #################
LogFile=c:\ZABBIX\zabbix_agentd.log
DebugLevel=3
Server=IP_SERVER
StartAgents=5
Hostname=HOSTNAME_CLIENTE
############ ADVANCED PARAMETERS #################
Timeout=3
Obs: em IP_SERVER, coloque o que IP do seu servidor Zabbix e em HOSTNAME_CLIENTE, coloque o nome do cliente que está sendo configurado.
Agora, vamos abrir o prompt de comando como administrador, e navegar até o diretório "C:\ZABBIX" que criamos anteriormente. Para isso, digite o seguinte comando:
C:\Windows\System32> cd C:\ZABBIX
Obs: note que o prefixo "C:\Windows\System32>", é somente para indicar que estamos dentro do Prompt de comando do Windows.
Depois vamos criar o serviço:
C:\ZABBIX> zabbix_agentd.exe -i -c zabbix_agentd.conf
Agora vamos iniciar o serviço:
C:\ZABBIX> zabbix_agentd.exe -s -c zabbix_agentd.conf
Pronto, o nosso agente está configurado no nosso cliente. Basta configurar no console de administração do Zabbix para iniciar o monitoramento.
Obs: assim como no GNU/Linux, caso haja um Firewall rodando, deve-se abrir as portas 10050/10051 UDP e 10050/10051 TCP, para que o servidor Zabbix consiga comunicar-se com o agente.
Criando um Host no Console de Administração
Depois de configurarmos corretamente os agentes, vamos criar os Hosts no console de administração do Zabbix, para que seja iniciado o monitoramento.
No console de administração, posicione o mouse sobre Configuration e clique em Hosts, já na janela de configuração de Hosts, clique em Create Host e você verá uma janela semelhante a essa:
Preencha todos os dados conforme sua necessidade. Depois de preenchido, devemos definir o que será monitorado, para isso, é utilizado os templates.
Para definirmos um template ao nosso Host, clique no guia Templates e depois clique em Add. Selecione o template desejado, clique em Select e depois em Save, para finalizar a configuração do Host.
Há vários outros parâmetros que podem ser configurados, mas para somente iniciarmos o monitoramento, o que fizemos já é o suficiente.
Concluindo
Com os passos acima, você já terá um servidor Zabbix operacional em sua rede, podendo monitorar tudo que possua IP.Em próximas oportunidades, postarei a instalação de clientes em Slackware, CentOS e se houver oportunidade e demanda, posso postar a instalações do Zabbix/Cliente em outras distribuições, além de configuração de SNMP nos Switchs, Roteadores e outros Devices para monitara-los também.
Obrigado pela atenção.
Para baixar o tutorial em PDF, clique aqui.
Testado no Debian 7 / Zabbix 2.0.8 para Servidor | Linux Debian 7, Ubuntu Server, Windows Server 2003, 2008 e 7 para Cliente.
fonte:
Assinar:
Postagens (Atom)