Mostrando postagens com marcador CentOS. Mostrar todas as postagens
Mostrando postagens com marcador CentOS. Mostrar todas as postagens

quinta-feira, 25 de agosto de 2016

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

quinta-feira, 1 de outubro de 2015

phpMyAdmin Acessando Multiplos Servidores Remotos

Introdução

A maioria das pessoa utiliza o phpMyAdmin para acessar bases de dados que estão no mesmo servidor (localhost), mas é possível configurá-lo para acessar mais de um servidor ao mesmo tempo e também para acessar servidores remotos, ou seja, se você possui na sua estrutura vários servidores MySQL você pode utilizar um único phpMyAdmin, centralizando assim seu acesso.

Ponto de partida

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

Instalação

A instalação será feita através do yum:

# yum install -y phpMyAdmin

Depois de instalado vamos criar um link na raíz do nosso diretório web, nesse caso eu chamei de mysql:
# cd /var/www/html/
# ln -s /usr/share/phpMyAdmin mysql
# ls -l
total 0
lrwxrwxrwx 1 root root 21 Set 18 17:29 mysql -> /usr/share/phpMyAdmin

Acessar a interface do phpMyAdmin

Acesse o endereço http://ip_servidor/mysql

Configurar o acesso para vários servidores

Edite o arquivo config.inc.php
# vi /etc/phpMyAdmin/config.inc.php
Logo no início do arquivo temos a seção Servers Configuration, com as informações referentes ao localhost
/*
 * Servers configuration
 */
$i = 0;

/*
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;


Podemos acrescentar logo abaixo o bloco de comandos para os demais servidores:
/*
* Server Remoto 1
*/
//$i++;
/* Authentication type */
$cfg['Servers'][$i]['verbose'] = 'Server Remoto 1';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '192.168.100. 1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/*
* Server Remoto 2
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['verbose'] = 'Server Remoto 2';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '192.168.100.2';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

Remover o acesso ao localhost

E por último podemos remover a opção de acesso ao localhost, deixando assim o phpMyAdmin em um servidor exclusivo para páginas Web, e os bancos de dados em servidores exclusivos para essa função. Basta comentar as linhas.
/*
 * First server
 */
//$i++;
/* Authentication type */
//$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
//$cfg['Servers'][$i]['host'] = 'localhost';
//$cfg['Servers'][$i]['connect_type'] = 'tcp';
//$cfg['Servers'][$i]['compress'] = false;
//$cfg['Servers'][$i]['AllowNoPassword'] = false;

Referências

Configurando o phpMyAdmin para acessar o MySQL remotamente

sexta-feira, 31 de julho de 2015

Script de Backup das Configurações de Ativos de Rede para Servidor TFTP

Introdução

É possível realizar o exporte das configurações de ativos de redes (como switches, roteadores, controladoras de rede sem fio, etc) para um Servidor TFTP, como o arquivo gerado é irrelevante em termos de tamanho, criei um script que se conecta via telnet em cada um dos ativos, realiza o exporte para um Servidor TFTP e renomeia o arquivo para o dia da semana. Com isso temos uma cópia das configurações dos últimos sete dias de cada ativo. Como medida adicional de segurança o servidor de backup coleta esses dados, para preserva-los mesmo que algo aconteça com o Servidor TFTP, como um crash de disco, por exemplo.

Estrutura

  • /Scripts: Diretório que abriga o script;
  • /Backup/Logs: Diretório que abriga o log do processo, Log_Switches-DIA_DA_SEMANA.log, se esse arquivo não for vazio, ou seja, acontecer algum erro, esse log será enviado por e-mail;
  •  /Backup/Switches: Diretório que abriga o export das configurações, existe um diretório para cada switch (switch1, switch2, etc), e dentro de cada diretório o arquivo de configuração, SwitchX-DIA_DA_SEMANA.cfg.

Ponto de partida

Eu parto do princípio que você já possui um Servidor TFTP em execução.

Pré-Requisitos

O único pré-requisito é o servidor ter um cliente de telnet.
# yum install telnet

Criar a estrutura de diretórios

# mkdir -p /Backup/{Logs,Switches}

Nesse exemplo estou partindo do princípio que você possui 10 Switches, altere de acordo com sua necessidade.
# for ((i=1; i<=10; i++))
do
mkdir /Backup/Switches/switch$i
done

Verificando a sintaxe do ativo

Antes de partirmos para o script em si, é preciso alguns passos:
  • Verificar se seu ativo possui suporte a telnet e, se está habilitado;
  • Ler o manual para encontrar qual é a sintaxe de comando de backup das configurações e como exportá-las para um servidor TFTP;
  • Rodar o comando de forma manual e ter certeza de que tudo funcionou como deveria;
  • Verificar quanto tempo demora o upload da configuração para o Servidor TFTP.

Sintaxe de alguns equipamentos

Switch 3COM 4200G
tftp IP_TFTP put 3com4200g.cfg Switch.cfg

Switch 3COM 4800G
tftp IP_TFTP put 3comoscfg.cfg Switch.cfg

Switch D-Link DGS-3100 / DES-3226S
upload configuration IP_TFTP Switch.cfg

Switch D-Link DGS-3120
upload cfg_toTFTP IP_TFTP dest_file Switch.cfg

Switch D-Link DGS-3526
upload cfg_toTFTP IP_TFTP Switch.cfg

Automatizando o processo

A primeira dificuldade que encontramos é que ao realizar uma conexão telnet, estamos em outro equipamento, e por isso não podemos usar o Here Document como faríamos com um banco de dados, por exemplo, mas esse problema foi solucionado pelo Mago do Shell Script Julio César Neves:

#(echo 'admin'; sleep 2; echo 'senha_ativo'; sleep 2; echo 'comando_ativo'; sleep 2; echo 'quit') | telnet IP_ATIVO

Por exemplo para o Switch 3COM 4800G:
# (echo 'admin'; sleep 2; echo 'S3NhAd0sW1TcH3'; sleep 2; echo 'pwd'; sleep 2; echo 'quit') | telnet 192.168.100.2

O Script

O Script pode ser baixado aqui e está todo comentado para melhor compreensão.

Referências

Lista Shell Script Yahoo

sexta-feira, 24 de julho de 2015

Instalação de Servidor TFTP em Ambiente CentOS

Introdução

Um servidor TFTP é útil em pelo menos duas situações:
  • Manipulação de arquivos em ativos de rede, como por exemplo, atualização de firmware, backup e restore de configuração;
  • Manter um backup de seus ativos de rede centralizados em um único diretório, que posteriormente vai para a unidade de fita, claro.
A primeira situação é bem comum, mas poucos se preocupam com a segunda situação, então fique com ela na mente, pense sobre isso enquanto toma banho (já resolvi tantos problemas pensando durante o banho),  eu voltarei nesse ponto em outro post.

Ponto de partida

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

Instalação dos pacotes

# yum  -y install  tftp-server xinetd

Ativar o serviço

# systemctl enable tftp.socket

Configuração das permissões

# chown -R nobody:nobody /var/lib/tftpboot/
# chmod 777 /var/lib/tftpboot/

Personalização do arquivo de configuração

# vi /etc/xinetd.d/tftp

service tftp
{
        disable
                 = no 
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s -c /var/lib/tftpboot 

        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}


Observação: Sem o parâmetro -c você não será capaz de criar novos arquivos, apenas de atualizar os já existentes.

Iniciar o serviço

# systemctl start xinetd
# netstat -ntulp | grep 69
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               1329/xinetd

Testar a comunicação com o serviço

Cliente TFTP para Linux

De preferência teste o envio a partir de outro servidor para ter certeza que tudo está funcionando.
# yum install -y tftp

# cd /etc/
# tftp -v 192.168.0.181 -c put passwd
Connected to 192.168.0.181 (192.168.0.181), port 69
putting passwd to IP:passwd [netascii]
Sent 28437 bytes in 0.2 seconds [1228778 bit/s]


Observação: 192.168.0.181 é o IP do meu servidor de TFTP, não esqueça de alterar o endereço.

De volta ao servidor de TFTP:
# ls -l /var/lib/tftpboot/
total 28
-rw-rw-rw- 1 nobody nobody 28111 Jul 23 16:41 passwd


De volta ao servidor Cliente:
# cd ~
# tftp -v IP -c get passwd
Connected to 192.168.0.181 (192.168.0.181), port 69
getting from 192.168.0.181:passwd to passwd [netascii]
Received 28437 bytes in 0.0 seconds [82130090 bit/s]

# ls -l passwd
-rw-r--r-- 1 root root 28111 Jul 23 16:50 passwd


Observe que o arquivo tem exatamente o mesmo tamanho.

Cliente TFTP para Windows

Podemos baixar um cliente linha de comando para Windows em TFTP Client for Windows

Download de um arquivo do TFTP Server
C:\>tftp.exe -i IP GET nome_arquivo_remoto nome_arquivo_local

Upload de um arquivo para o TFTP Server:
C:\>tftp.exe -i IP PUT nome_arquivo_local nome_arquivo_remoto

Download do arquivo passwd
C:\>tftp.exe -i 192.168.0.181 GET passwd passwd.txt
WinAgents TFTP Client version 2.0b Copyright (c) 2004-2011 by Tandem Systems, Ltd.
http://www.winagents.com - Software for network administrators

Transfering file passwd from server in octet mode...
Transferring data from 192.168.0.181...
Using blocksize = 512
Using TFTP timeout = 10s
Transfer size = 28111 bytes
File passwd was transferred successfully.
28111 bytes transfered for 1 seconds, 0 bytes/second

Referências

www.question-defense.com
Knowledge Addict
Fórum CentOS.org
Tournas Dimitrios
TFTP Server for Windows

quarta-feira, 22 de julho de 2015

Servidor CentOS 7 Básico

Introdução

Com o advento do Systemd e a mudança de MySQL para MariaDB, algumas pessoas se assustam ao migrar de CentOS 6.X para 7.X, o objetivo desse post é prover uma instalação básica, mostrar alguns comandos para que você se sinta mais confortável e sugerir algumas boas práticas.

Antes de continuarmos

Eu sou da época em que a ajuda e incentivo que a gente recebia era RTFM, fui criado no Slackware, então apesar de gostar de ensinar, algumas coisas permanecem, pois fazem parte da minha formação. Só para citar as principais:
Servidor não tem interface gráfica, a menos que seja uma necessidade da aplicação;
Instalações são feitas sempre partindo-se do Minimal;
Só instale o que for necessário;
Servidor é 64 bits;
Cada aplicação precisa pacotes e ajustes específicos, esse post trata do que você deve fazer em todos os seus servidores.

Ajustes Pós Instalação

Partindo do princípio que você fez uma instalação Minimal do CentOS 7, logou pela primeira vez como root, vamos fazer alguns ajustes.

Parar a execução do firewall:

# systemctl stop firewalld

Desabilitá-lo permanentemente:

# systemctl disable firewalld
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

Conferir se o mesmo está desabilitado:

# systemctl is-enabled firewalld
disabled


DICA: Você pode ver o status de todos os serviços com o comando abaixo:
# systemctl list-unit-files

Checar o estado do SELinux:

# getenforce
Enforcing

Torna-lo permissivo:

# setenforce 0

Checar o estado do SELinux:

# getenforce
Permissive


DICA: Para desabilitar definitivamente o SELinux edite o arquivo /etc/selinux/config e altere a opção "SELINUX=enforcing" para "SELINUX=disabled". Isso pode ser feito por meio do comando:
# sed -i 's/enforcing/disabled/g' /etc/selinux/config

Observação: Estou desabilitando o Firewall e o SELinux porque cada servidor tem uma finalidade específica e, exige ajustes específicos para essa finalidade, então por padrão desabilito os dois, e se houver necessidade, reabilito e faço os ajustes específicos.

O EPEL - Extra Packages for Enterprise Linux é um repositório oficial com pacotes extras e as últimas versões dos pacotes. Podemos instalá-lo através do comando abaixo:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

O REMI é um repositório com pacotes adicionais aos do EPEL e/ou versões mais atualizadas do mesmo, dependendo do caso. Ele não funciona se o EPEL não estiver instalado, é um pré-requisito. Para instalar o remi, use o comando abaixo:
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Além disso ele vem desabilitado, é preciso habilitá-lo:
# vi /etc/yum.repos.d/remi.repo
[remi]
name=Les RPM de remi pour Enterprise Linux 7 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/7/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/7/remi/mirror
#enabled=0
enabled=1

gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi


Feito isso atualize seu sistema:
# yum update -y

Este último comando vai atualizar todos os pacotes do seu sistema para as versões disponíveis no EPEL e REMI.

Dependencias Básicas

Esses são pacotes que precisamos para o dia-a-dia, independente da aplicação desse servidor. Lembre-se um Servidor Web tem necessidades diferentes de um Servidor de FTP.
# yum -y install rsync  bind-utils mlocate mailx wget net-tools make cmake automake man net-tools

Clamav

Todo servidor tem que ter antivírus? Mas não é Linux? Eu disse que ia lhe sugerir algumas boas práticas, mas são apenas sugestões, este é o meu setup de Servidor CentOS 7.
# yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

Precisamos comentar as linhas de exemplo:
# sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
# sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf


E atualizar o clamav:
# freshclam

Precisamos comentar a linha abaixo:
# sed -i -e "s/^FRESHCLAM_DELAY/#FRESHCLAM_DELAY/" /etc/sysconfig/freshclam

Editar o arquivo scan.conf:
# vi /etc/clamd.d/scan.conf

E descomentar a linha:
#LocalSocket /var/run/clamd.scan/clamd.sock

Habilitar o Clamav, Inicia-lo e Checar se o processo está ativo:
# systemctl  enable clamd@scan
# systemctl  start clamd@scan
# systemctl  status clamd@scan


Testar a verificação de um arquivo:
# clamdscan -c /etc/clamd.d/scan.conf /etc/hosts

Cron

Deixar um cron padrão para que qualquer um possa editá-lo:
# crontab -e

# Exemplo de uso
# 0     4       *       *       *       <usuario>       who

# Campo         Funcao
# 1o.           Minuto
# 2o.           Hora
# 3o.           Dia do mes
# 4o.           Mes
# 5o.           Dia da semana

# 6o.           Usuario com o qual o comando sera executado <opcional>
# 7o.           Programa para execucao

# Campo                 Valores
# Minuto                 0-59
# Hora                     0-23
# Dia do mes           1-31
# Mes                      1-12
# Dia da semana      0-6 (o "0" eh o domingo), 1 eh a segunda, etc.

# -----------------------------------------------------------------------------------------------
# Roda o update do antivirus todos os dias as 23:00
0 23 * * * /usr/bin/freshclam


Reiniciar o servidor:
#reboot

Referências

ISMAILYENIGUL

quinta-feira, 3 de outubro de 2013

Monitoramento de VMs com Zabbix 2.2

Introdução:
Uma das grandes novidades da versão 2.2 é a possibilidade de monitoramento de máquinas virtuais de forma automatizada pelo recurso LLD (Low Level Discovery).

Advertencia:
Para esse tutorial estou usando a versão alpha do Zabbix, mais especificamente a 2.1.6 (sétimo alpha).

Apesar de funcional para demonstração do recurso essa versão não deve ser utilizada em produção.

Preparação do Ambiente:
Utilizei o Sistema Operacional CentOS 6.4 na opção de instalação minimal.

Após isso instalei os repositórios epel e remi:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

É preciso habilitar o remi depois de instalado:
# vi /etc/yum.repos.d/remi.repo
Altere a linha enabled=1

Atualizar o sistema:
# yum update -y

Desativar SeLinux e Firewall 

Instalação do Zabbix:
 Para realizar a instalação do Zabbix podemos seguir esse tutorial, modificando alguns detalhes.

Suprir as Dependências:
Na seção suprir as dependências, vamos acrescentar alguns pacotes, pelo fato de estar usando o CentOS Minimal, e o novo pré-requisito utilizado no monitoramento de VMs a libxml2.
# yum -y install ntsysv make wget bind-utils httpd php php-common php-mysql php-gd php-bcmath php-mbstring php-xml mysql mysql-server mysql-devel net-snmp net-snmp-devel net-snmp-utils net-snmp-libs gcc curl curl-devel libxml2-devel libxml2

Atenção na hora de realizar o download dos fontes para escolher a versão correta (Alpha Releases).

Configurar e Compilar os Códigos Fontes (Sources):
Na seção configurar e compilar os códigos fontes, precisamos adicionar o novo pré-requisito utilizado no monitoramento de VMs a libxml2.
./configure --enable-server --with-mysql --with-net-snmp --with-libcurl --enable-agent --with-libxml2

Observe na saída final a linha de Flags de Compilação:
Compiler flags:        -g -O2  -I/usr/include/mysql -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -fasynchronous-unwind-tables -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC  -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1        -I/usr/include/rpm -I/usr/local/include -I/usr/lib/perl5/CORE -I. -I/usr/include   -I/usr/include/libxml2

Todo o resto do processo permanece inalterado.

Conhecendo os Templates Disponíveis:

Templates Disponíveis
Configurando o Host:
Faça a configuração normal do host, acrescente o template e as seguintes macros:
{$URL}: https://<IP-address>/sdk (URL do vCenter / ESX / ESXi)
{$USERNAME}: Usuário
{$PASSWORD}: Senha

Se estiver na dúvida sobre esses dados, acesse https://<IP-address> e clique em Browse datastores in this host's inventory, teste seu usuário e senha, se der certo é esse usuário e senha que você vai usar ;-)
Testando credencias
Exemplos de Dados Coletados:

Dados do servidor ESXi
VMs Descobertas Automaticamente
VM Windows
VM Linux

VMs descobertas automáticamente
 Considerações Finais:
Usei uma máquina ESXi 5.1 com o template Template Virt VMware vSphere.
Você pode ir no template em Discovery e baixar o intervalo default de 3600 segundos (1 hora) para 300 segundos (5 minutos), para agilizar os testes.

Fonte e Agradecimentos:
Agradeço ao 九龍真乙 @qryuu por ter disponibilizado essa apresentação, eu vinha realizando vários testes sem sucesso, pois não sabia o que colocar na variável {$URL}, mas graças a ele esse tutorial foi possível.

quinta-feira, 17 de setembro de 2009

Linux Kernel 2.6 em VM com horário incorreto

Introdução:
Ao instalar um CentOS 5.3 em uma máquina virtual (VMWare Server 1.0), mas pelas pesquisas é um problema do Kernel 2.6 com máquinas virtuais, inclusive o MS Virtual Server, o mesmo começou a apresentar problemas de horário, mas não somente dessincronismo e sim anomalias, acompanhe os testes realizados.

Testes Realizados:
# date
Wed Sep 16 15:10:16 BRT 2009
Horário Incorreto

# service ntpd restart
Shutting down ntpd: [ OK ]
ntpd: Synchronizing with time server: [ OK ]
Starting ntpd: [ OK ]

# date
Wed Sep 16 15:13:03 BRT 2009
Horário sincronizado com o NTP

# while true; do date; sleep 120; done
Wed Sep 16 15:13:15 BRT 2009
Wed Sep 16 15:15:15 BRT 2009

Se eu deixar ele me mostra certinho 2 em 2 minutos... Porém...

# date
Wed Sep 16 15:15:42 BRT 2009

Não são 15:15 e sim 15:17... Ele perdeu 2 minutos no meio do caminho.... O minuto dele não tem 60 segundos???? Ele vai perdendo minutos até estar com horas de diferença...

Solucionando o problema:
Bom depois de muitas pesquisas e testes, vamos a solução, que é realizada em várias etapas.
Instalar VMware tools:
Menu VM // Install VMWare Tolls...

Automaticamente será montada uma imagem do VMWare Tools na máquina virtual. Execute os comandos:
# cd /media/VMware\ Tools/
# rpm -ivh VMwareTools-1.0.9-156507.i386.rpm

Configurar VMware tools:
# vmware-config-tools.pl
Siga as instruções.

# vmware-toolbox
Marque a seguinte opção:
"Time synchrononization between the virtual machine and the host operation system."


Alterar o GRUB:
Editar o GRUB e acrescentar os seguintes parâmetros, na linha do kernel:
clock=pit nosmp noapic nolapic

Por exemplo:
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic

Desligar o computador:
# sync
# sync
# shutdown -h now

Ele deve acrescentar automáticamente a linha abaixo no arquivo .vmx da sua VMWare:
tools.sync.Time = "TRUE"
Se isto não aconteceu, acrescente manualmente.

Iniciar a VM e verificar que o horário está OK!!

Referências:
http://communities.vmware.com/thread/74465
http://communities.vmware.com/thread/41993
http://communities.vmware.com/thread/120931
http://support.microsoft.com/kb/918461
http://www.vmwarez.com/2006/01/vmwarezcoms-pre-built-vms-for-player.html

quarta-feira, 5 de novembro de 2008

Migrando Zabbix 1.4.1 para 1.6.1

Introdução:
Relato aqui os procedimentos que realizei para a migração do Zabbix 1.4.1 para 1.6.1, seguindo as instruções contidas no ZABBIX Manual v1.6.

Meu ambiente:
CentOS release 5 (Final)
Zabbix 1.4.1 (Compilado)
Base de Dados MySQL

Download da nova versão:
# mkdir /install
# cd /install
# wget http://prdownloads.sourceforge.net/zabbix/zabbix-1.6.1.tar.gz?download

Descompacte o arquivo:
# tar xzvf zabbix-1.6.1.tar.gz

Parar o Zabbix:
# ps -aux grep zabbix
# kill -9 número do processo
É preciso ter certeza que o Zabbix está parado e que não há novas informações sendo gravadas na base de dados.

Faça backup da base de dados existente:
# mkdir /backup
# cd /backup
# mysqldump --user=root --password=zabbix --databases zabbix > backup-08-11-05.sql
# tar -czvf backup--08-11-05.tar.gz backup-08-11-05.sql
Gerar um .tar.gz é opcional, eu sempre gero.

Faça backup dos arquivos de configuração, arquivos PHP e arquivos binários do Zabbix:
# cp -Rv /etc/zabbix/ .
# cp /etc/php.ini .
# mkdir html
# cp -Rv /var/www/html/zabbix/ html/

Instale os novos binários:
# cd /install/zabbix-1.6.1
# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp
# make install

Reveja os parâmetros de configuração do Server:
# diff misc/conf/zabbix_server.conf /etc/zabbix/zabbix_server.conf
Nada de interessante, no meu caso não alterei nada

Faça o upgrade da base de dados:
# cd upgrades/dbpatches/1.6/mysql/
# mysql -u zabbix -p'zabbix' < patch.sql
No manual diz que este procedimento pode durar várias horas ou mais, a minha base está com 5,8 Gb e demorou segundos.

Instalar a nova Interface Web:
# cd /var/www/html/zabbix/
# rm -rf *
# cp -Rv /install/zabbix-1.6.1/frontends/php/* .
Como eu fiz o backup antes, resolvi apagar tudo e começar com uma interface web do zero.

Inicie os novos binários do Zabbix:
# cd /etc/zabbix/
# ./zabbix_server
# ./zabbix_agent
# ps -aux grep zabbix

Verifique os logs:
# cat /var/log/messages

Acesse a interface web:
http://localhost/zabbix/
Siga as telas até o final

Ele vai solicitar para salvar o arquivo:
/var/www/html/zabbix/conf/zabbix.conf.php
Salve o arquivo no diretório

Pronto você vai estar logado como guest!
Faça o logoff, entre com seu usuário administrador e sua senha
E veja que seus hosts já tem as novas opções

Observe nesta tela que peguei o histórico de 1 mês (30d history), e todos os meus dados estão intactos.

Propriedades do host:

Observe que o host Bilbo que já existia, está no novo padrão de grupos e com os novos camos da versão 1.6.x:
Monitoraded by proxy
Use IPMI
Use profile
Use extended profile

Referências:
ZABBIX Manual v1.6

terça-feira, 4 de novembro de 2008

Iniciando o Zabbix (Compilado) automáticamente pelo ntsysv no CentOS 5.2

Introdução:
Realizei a instalação do Zabbix 1.6 compilando a partir dos fontes de acordo com minhas necessidades, sistema configurado e instalado veio a dúvida, e agora como fazer para que o mesmo inicie automáticamente através do ntsysv?
Bom vamos lá:
Primeiramente fui ao site do zabbix na seção de downloads ver o que eu encontrava, na seção Distributions existe um link para o cvs do fedora, entrei na pasta do EL-5, já que estou usando CentOS 5.2, e foi lá que encontrei os arquivos bases, os quais adaptei para minhas necessidades. São eles zabbix-server.init e zabbix-agent.init.
Com os arquivos em mãos, precisei apenas acertar os caminhos do binário, arquivo de configuração e pidfile do zabbix.

Criando os arquivos:
# cd /etc.init.d/

# vi zabbix-server
#!/bin/sh

#

# chkconfig: - 85 15

# description: zabbix server daemon

#



### BEGIN INIT INFO

# Provides: zabbix

# Required-Start: $local_fs $network

# Required-Stop: $local_fs $network

# Default-Start:

# Default-Stop: 0 1 2 3 4 5 6

# Short-Description: start and stop zabbix server

# Description: Zabbix Server

### END INIT INFO



# zabbix details

ZABBIX=/usr/local/sbin/zabbix_server

CONF=/etc/zabbix/zabbix_server.conf

PIDFILE=/var/tmp/zabbix_server.pid



# Source function library.

. /etc/rc.d/init.d/functions



# Source networking configuration.

. /etc/sysconfig/network



# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0



[ -x $ZABBIX ] || exit 5

[ -e $CONF ] || exit 6



RETVAL=0



case "$1" in

start)

echo -n "Starting zabbix server: "

daemon $ZABBIX -c $CONF

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix

;;

stop)

echo -n "Shutting down zabbix server: "

killproc zabbix_server

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix

;;

restart|reload)

$0 stop

$0 start

RETVAL=$?

;;

status)

status zabbix_server

RETVAL=$?

;;

*)

echo "Usage: $0 {start|stop|restart|reload|status}"

exit 1

;;

esac



exit $RETVAL

# vi zabbix-agent

#! /bin/sh

#

# chkconfig: - 85 15

# description: zabbix agent daemon

#



### BEGIN INIT INFO

# Provides: zabbix-agent

# Required-Start: $local_fs $network

# Required-Stop: $local_fs $network

# Default-Start:

# Default-Stop: 0 1 2 3 4 5 6

# Short-Description: start and stop zabbix agent

# Description: Zabbix Agent

### END INIT INFO



# zabbix details

ZABBIX_AGENTD=/usr/local/sbin/zabbix_agentd

CONF=/etc/zabbix/zabbix_agentd.conf

PIDFILE=/var/tmp/zabbix_agentd.pid



# Source function library.

. /etc/rc.d/init.d/functions



# Source networking configuration.

. /etc/sysconfig/network



# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0



[ -x $ZABBIX_AGENTD ] || exit 5

[ -e $CONF ] || exit 6



RETVAL=0



case "$1" in

start)

echo -n "Starting zabbix agent: "

daemon $ZABBIX_AGENTD -c $CONF

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix-agent

;;

stop)

echo -n "Shutting down zabbix agent: "

killproc zabbix_agentd

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix-agent

;;

restart|reload)

$0 stop

$0 start

RETVAL=$?

;;

status)

status zabbix_agentd

RETVAL=$?

;;

*)

echo "Usage: $0 {start|stop|restart|reload|status}"

exit 1

;;

esac



exit $RETVAL

Tornando os arquivos executáveis:
# chmod +x zabbix-server
# chmod +x zabbix-agent

Criando os links simbólicos nos diferentes níveis de init:
# cd ../rc0.d/
# ln -s ../init.d/zabbix-server zabbix-server
# ln -s ../init.d/zabbix-agent zabbix-agent
# cp zabbix-* ../rc1.d/
# cp zabbix-* ../rc2.d/
# cp zabbix-* ../rc3.d/
# cp zabbix-* ../rc4.d/
# cp zabbix-* ../rc5.d/
# cp zabbix-* ../rc6.d/

Adicionando o serviço ao sistema:
# chkconfig –add zabbix-server
# chkconfig –add zabbix-agent

Selecionando o serviço para iniciar automáticamente:
# ntsysv

Marque as opções zabbix-agent e zabbix-server
Clique em OK

Referências:
Site Oficial Zabbix
CVS Fedora
Fórum CentOSBR
Viva o Linux