quinta-feira, 11 de março de 2010

Consistência de hive do registro de contador de desempenho

O MS SQL Server 2008 e o Windows 7 resolveram me stressar um pouco:

 

Consistência de hive do registro de contador de desempenho

 

clip_image002

image

Isso acontece porque o aplicativo tentou acessar uma chave no registro responsável pelo contador de desempenho e não encontrou essa chave.

Se você teve esse mesmo erro ao tentar instalar o SQL Server 2008, não se desespera e não fique no google 2 horas procurando a solução como eu fiz.

O “fix” para esse problema é muito simples, mas até chegar a esse ponto, tive que percorrer inúmeros foruns e sites de support da microsoft.

 

1- Faça um programa de console qualquer em C# para imprimir o resultado do seguinte código:

using System;
using System.Globalization;

namespace teste
{
    class Program
    {
        static void Main(string[] args)
        {
            String result= (string.Format("{0,3}", CultureInfo.InstalledUICulture.Parent.LCID.ToString("X")).Replace(" ", "0"));
            Console.WriteLine(result);
        }
    }
}

 

O resultado da minha execução foi 016, então vamos levar esse valor em consideração no nosso exemplo.

2- Vá até o regedit na chave

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

image

 

3- Crie uma nova chave com o valor que foi retornado do aplicativo console, no meu caso, 016

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\016

4- Agora basta ir a chave 009 que se encontra no mesmo caminho, e copiar os registros Counter e Helper para dentro da nova chave que acabou de ser criada.

Pronto!

Agora basta rodar de novo o instalador do SQL 2008 e tudo vai funcionar perfeitamente.

ERRO 80072f7d no MSN

ERRO 80072f7d no MSN

Este erro é provocado pela existência de firewall (normalmente da NVIDIA, pois a do Windows está aberta ao MSN)

Devemos configurar ou desisntalar (mais drástico) a firewall da Nvidia

  • nVidia (Forceware) Network Access Manager
  • nVidia Firewall

quinta-feira, 4 de março de 2010

Monitorando redes e servidores com Nagios

Um dos melhores programas de monitoramento de hosts e serviços open source é o Nagios, essa incrível e, a princípio, complicada ferramenta. Existe muita documentação sobre o Nagios, porém poucas reúnem todo o processo, desde a instalação, configuração e testes. Por isso, depois de enfrentar dificuldades, resolvi publicar minhas descobertas.

Por: Ricardo Gavioli

Fonte: http://www.vivaolinux.com.br/artigo/Monitorando-redes-e-servidores-com-Nagios/

 

Apresentação e motivação

Muitos administradores e estudantes ouvem falar (bem) sobre o Nagios. Porém, as corretas instalações e configurações nem sempre são alcançadas, devido ao grande número de funções e serviços que o Nagios oferece. 

Depois de apanhar muito durante a instalação e, principalmente, na configuração dessa ferramenta, resolvi fazer um apanhado de todos os meus passos para chegar até um sistema de monitoramento e notificações otimizado e bem configurado. 

Preparação do ambiente

Este artigo foi estruturado utilizando:
  • Pentium 4 3.0 GHz
  • 512MB RAM
  • HD 40GB
  • Linux Debian Etch
  • Nagios 2.9
  • Apache2
Antes de iniciarmos os trabalhos com o Nagios, primeiro devemos realizar a preparação do ambiente, para que não tenhamos problemas futuros nem necessidades de recompilação. 

O Nagios é uma ferramenta para uso totalmente via Web. Por isso é importante que seu Apache esteja instalado e funcionando, assim como seu MTA (para envio das notificações). 

Para o correto funcionamento do Nagios, é importante que os seguintes pacotes estejam instalados:
  • openssl (para monitoramento de hosts remotos)
  • libssl-dev (para compilação do NRPE, explicado adiante)
  • mcrypt (criptografia de envio dos dados remotos)
  • build-essential (para compilação dos pacotes)
  • nmap (para testes das portas)
  • xinetd (para iniciar o serviço NRPE)
  • apache2 (óbvio)
  • gd (para geração dos mapas de status)
  • libjpeg e libpng (criação das imagens dos mapas)
No Debian: 

# apt-get install openssl libssl-dev mcrypt build-essential nmap xinetd apache2 libjpeg62 libjpeg-dev libpng12-0 libpng12-dev libgd2-xpm libgd2-xpm-dev fontconfig 

Pacotes Nagios

Utilizaremos nessa instalação três pacotes fornecidos no site www.nagios.org/download:
  • nagios-2.9
  • nagios-plugins-1.4.9
  • nrpe-2.8.1
Abaixo os links para download desses pacotes. Se esses links estiverem quebrados, acesse o site www.nagios.org/download e baixe a última versão destes. 

Nagios: Nagios Plugins: NRPE: Antes de começar, precisamos também criar o usuário e os diretórios que serão utilizados. 

Adicionar usuário nagios: 

# adduser nagios 

Criar o diretório de instalação: 

# mkdir /usr/local/nagios 

Acertar a permissão no diretório: 

# chown -R nagios. /usr/local/nagios 

Criar o grupo de acesso via Web: 

# groupadd nagcmd 

Definir os usuários do Apache e Nagios como integrantes desse grupo: 

# usermod -G nagcmd www-data (verifique se esse é o seu usuário do Apache2)
# usermod -G nagcmd nagios 

 

Mãos à obra

 
No diretório onde você baixou os pacotes (aconselho /root/nagios), descompacte o Nagios: 

# tar zxvf nagios-2.9.tar.gz
# cd nagios-2.9
 

Finalmente, vamos começar!!! 

Primeiro, criaremos o Makefile para instalação. Um simples "./configure" já resolve todos os problemas... mas, caso você queira alterar alguma opção, segue as opções padrão mais utilizadas: 

# ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmurl=/nagios/ --with-nagios-user=nagios --with-nagios-grp=nagios --with-gd-lib=/usr/lib --with-gd-inc=/usr/lib 

Ao final, será exibido um resumo das opções selecionadas acima. 

Agora, compilamos o Nagios: 

# make all 

Se não ocorrer nenhum erro, seguimos agora com a instalação propriamente dita. 

# make install 

Este comando criará todas as subpastas necessárias e instalará o programa principal. 

Em seguida podemos instalar os scripts de inicialização de serviço (em /etc/init.d). 

# make install-init 

Crie também os arquivos de configuração padrão de exemplo (serão muito úteis): 

# make install-config 

E por fim, para realizar algumas configurações via web e hosts remotos, acionamos o modo de comando remoto: 

# make install-commandmode 

Pronto!!! Nosso Nagios já está instalado e pronto para ser configurado. 

Mas primeiro, vamos aos plugins... 

 

Instalação dos plugins e NRPE

Plugins são os scripts que o Nagios executa (também podem ser executados manualmente) para verificar o status de um host ou serviço. Existem vários plugins neste pacote, e podemos ainda criar plugins personalizados... mas essa é uma outra história. 

Os plugins ficam, por padrão, dentro de /usr/local/nagios/libexec. 

Primeiro, descompacte o arquivo baixado: 

# tar zxvf nagios-plugins-1.4.9.tar.gz 

Agora, vamos criar o Makefile: 

# cd nagios-plugins-1.4.9
# ./configure
# make all
# make install
 

Pronto, os plugins já estão instalados e prontos para serem acessados. 

O único problema dos plugins é que a maioria deles são para uso local no servidor, para monitoramento de uso de disco, partições, usuários logados, processos, cpu, memória, etc. 

Para realizar o monitoramento desses recursos em hosts remotos (outras máquinas linux ou Unix), utilizamos o NRPE (Nagios Remote Plugin Executor). 

Para isto, não é preciso instalar o Nagios nos hosts remotos, apenas os plugins e o NRPE. 

Para instalar o NRPE, primeiro descompacte o arquivo: 

# tar zxvf nrpe-2.8.1.tar.gz 

Vamos ao Makefile: 

# ./configure 

À compilação: 

# make all 

À instalação do plugin "check_nrpe" dentro de libexec: 

# make install-plugin 

O daemon do serviço: 

# make install-daemon 

O arquivo de configuração padrão: 

# make install-daemon-config 

E a criação do serviço dentro do xinetd: 

# make install-xinetd 

Pronto. Plugin e daemon instalados, arquivo de configuração e serviço xinetd criados. 

Vamos agora apontar o número da porta no arquivo /etc/services. 

# vi /etc/services 

Insira a linha: 

nrpe 5666/tcp # NRPE

Salve e saia. Reinicie o serviço XINETD. 

# /etc/init.d/xinetd restart 

Pronto, o NRPE já está, ou deveria estar rodando. 

Para testar, utilize: 

# nmap localhost -p 5666 

Se retornar o status 5666/tcp open, o NRPE está rodando. Se o status estiver como closed, verifique a configuração do serviço nrpe no xinetd está como disable = no. 

Nos clientes

Para fazer a instalação nos hosts remotos, altere também o serviço no xinetd, para permitir a conexão do Nagios Server ao NRPE: 

# vi /etc/xinetd.d/nrpe 

Altere a linha: 

only from = 127.0.0.1 

para 

only from = 127.0.0.1 <ip_nagios_server>

Salve e saia. Reinicie o serviço XINETD. 

# /etc/init.d/xinetd restart 

Para permitir que o servidor Nagios execute os plugins remotamente no cliente, o arquivo /usr/local/nagios/etc/nrpe.cfg nos clientes deve estar correto, e com todos os comandos a serem executados já definidos. 

Por exemplo: 

Se a linha de comando local do plugin "check_swap" é: 

# /usr/local/nagios/libexec/check_swap -w 20% -c 10% 

Então, a definição do comando no NRPE.CFG deverá ser: 

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

E no servidor, esse comando deverá ser definido em services.cfg como: 

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

No servidor, a verificação deste serviço, dentro de services.cfg será: 

define service{
use local-service
host_name proxy
service_description SWAP
check_command check_nrpe!check_swap
contact_groups <nome_do_grupo>
}

Vamos agora à parte mais demorada, as configurações do Nagios... 

# /usr/local/nagios/libexec/check_http -h 

No caso do plugin check_http, a opção "-H" define o IP do HTTP server a ser testado: 

# /usr/local/nagios/libexec/check_http -H <ip_httpserver> 

Com esta linha de comando, a definição do comando dentro de commands.cfg, será: 

define command{
command_name check_http
command_line check_http -H $HOSTADDRESS$
}

Na linha acima, a variável $HOSTADDRESS$ será informada pelo Nagios no momento da verificação desse serviço. 

O arquivo commands.cfg original já possui muitos comandos predefinidos, por isso não daremos tanta atenção a este arquivo agora. 

services.cfg

Definição dos serviços de monitoramento. Utilizando a definição do comando check_http em commands.cfg, podemos ativar o monitoramento de um servidor http, utilizando a seguinte configuração, dentro de services.cfg: 

Primeiro, definimos um template (padrão), afim de diminuir o número de linhas nesse arquivo, podendo aplicar esse template aos serviços desejados. 

define service{
name local-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 1
contact_groups <nome_do_grupo>
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}

Agora, definimos o serviço HTTP a monitorar: 

define service{
use local-service # (nome do template)
host_name site
service_description Servidor HTTP
check_command check_http!<ip_http_server>
contact_groups <Grupo de Contato>
}

Repare que na linha "check_command", deverá ser colocado o nome do serviço plugin "check_http", seguido de (!) exclamação e o IP do servidor, que será o valor da variável $HOSTADDRESS$ declarada no arquivo commands.cfg. 

Adicione também no arquivo commands.cfg, a definição do plugin NRPE: 

define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

contacts.cfg

Definição dos contatos para envio de notificações e alertas. 

define contact{
contact_name <login>
alias <Nome_Completo>
service_notification_period <Periodos definidos em TIMEPERIODS.CFG>
host_notification_period <Periodos definidos em TIMEPERIODS.CFG>
service_notification_options w,u,c,r #( w=warning / u=unknown / c=critical / r=recoveries / n=none)
host_notification_options d,u,r #( d=down / u=notify / r=recoveries / n=none )
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email email@seudominio.com.br
}

contactgroups.cfg

Definição dos grupos de contatos, facilitando a configuração para envio de notificações e alertas. 

define contactgroup{
contactgroup_name <grupo>
alias <nome do grupo>
members <Logins definidos no arquivo contacts.cfg>
}

hosts.cfg

Configuração dos hosts que serão monitorados. 

Pode ser definido um host padrão (template) e utilizado para todos os hosts, diminuindo muito o número de linhas no arquivo hosts.cfg. 

define host{
name generic-host
event_handler_enabled 1
flap_detection_enabled 1
max_check_attempts 5
notification_interval 20
notification_options d,u,r
notification_period 24x7
notifications_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 # não deve ser registrado, pois não é um host, apenas um template
}

define host{
use generic-host # nome do template criado acima
address <ip_servidor>
alias <Nome do Servidor>
check_command <comando pre-definido em services.cfg>
host_name <Host_Name_do_servidor>
}

hostgroups.cfg

Definição dos grupos de hosts. 

define hostgroup{
hostgroup_name <nome_do_grupo>
alias <Descrição do Grupo>
contact_groups <grupos_que_fazem_parte>
members <hosts_que_fazem_parte>
}

timeperiods.cfg

Declaração dos horários para monitoramento. 

define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}


define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}


define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
 

Iniciando pela primeira vez

Antes de iniciar o Nagios pela primeira vez, crie o diretório para envio de comandos internos do Nagios. 

# mkdir /usr/local/nagios/var/rw 

E defina suas permissões: 

# chown nagios. /usr/local/nagios/var/rw 

Verifique as configurações do Nagios, utilizando: 

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 

Se existirem erros de configuração, ele informará em quais linhas e arquivos estão os problemas a serem corrigidos. Tente corrigir todos estes erros, pois é possível que o Nagios não inicie devido a problemas de configurações. 

Depois de tudo acertado, basta iniciar o daemon do Nagios. 

# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg 

Ele pode também ser iniciado via serviço: 

# /etc/init.d/nagios restart 

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 

Para criar novos usuários: 

# htpasswd /usr/local/nagios/etc/htpasswd.users <usuario> 

O arquivo /usr/local/nagios/etc/cgi.cfg contém as configurações de acesso e visualização via Web-CGI. 

Descomente as linhas de autorização, e defina os usuários que podem acessar as funções. 

authorized_for_system_information=nagiosadmin, usuario
authorized_for_configuration_information=nagiosadmin, usuario
authorized_for_system_commands= nagiosadmin, usuario
authorized_for_all_services=nagiosadmin, usuario
authorized_for_all_hosts=nagiosadmin, usuario
authorized_for_all_service_commands=nagiosadmin, usuario
authorized_for_all_host_commands=nagiosadmin, usuario

Reinicie o Nagios e tente acessar novamente as páginas do sistema. 

# /etc/init.d/nagios restart 

http://<ip_do_servidor>/nagios 

Coloque o usuários nagiosadmin, e a senha definida. 

Pronto, você está acessando as páginas de monitoramento do Nagios!!! 

 

Onde está a dificuldade?

O Nagios é uma poderosíssima ferramenta para monitoramento de hosts e serviços. 

Suporta envio de alertas e notificações por e-mail, permite visualização em tempo real do status dos hosts e serviços e os problemas apresentados, possui um excelente sistema de logs, históricos, gráficos de disponibilidade, mapas da rede em 2D e 3D (desde que configurado corretamente). 

Muitos administradores apanham muito para acertar sua configuração. 

Porém, o grande mistério do Nagios não está em seus arquivos de configuração, e sim em seus conceitos. 

A separação das configurações em diversos arquivos ajuda muito na visualização e alteração das configurações, mesmo que seja possível declarar todos os comandos, serviços, hosts e períodos dentro de um único arquivo (como pode ser visto no arquivo "localhost.cfg", criado por padrão). 

Depois que a lógica do Nagios é compreendida (criação de templates, grupos,etc.), sua configuração passa a ser muito simples. 

A única parte realmente demorada do trabalho, é a criação dos hosts... Como essa criação é feita de forma praticamente manual, host a host, serviço a serviço, acaba gerando uma certa frustração no administrador, principalmente se você está acostumado com o maravilhoso "apt-get" do Debian, onde qualquer coisa instalada já está funcionando sem grandes configurações. 

Mas como todos sabemos, o mundo Linux não é criado de forma rápida ou simples (pra isso existe o Windows...). Tudo dá trabalho e exige massa cinzenta. 

E pode ter certeza... o resultado final compensa as horas (ou dias) gastos. 

Conclusão

Todos os nomes de arquivos de configuração citados neste artigo são sugeridos pela documentação do Nagios. 

Porém, servem apenas como orientação. Nada te impede de criar um arquivo chamado FINANCEIRO.CFG e configurar os hosts e serviços do setor Financeiro de sua empresa nesse arquivo. 

O importante é que os arquivos utilizados estejam declarados dentro do arquivo de configuração NAGIOS.CFG, através da linha: 

cfg_file=/usr/local/nagios/etc/financeiro.cfg

Para maiores informações, links, documentação, downloads, fórum... Boa sorte!!! 

Ricardo Gavioli 

terça-feira, 2 de março de 2010

ImageX - Como criar uma imagem do Windows Vista com ImageX

Autor: Rogerio Molina

Fonte: http://green.com.br/bloginfra/index.php/tag/imagex/

 

1. Em nosso primeiro passo vamos baixar o AIK (Windows Automated Installation KIT) no link a abaixo.

 

http://www.microsoft.com/downloads/details.aspx?familyid=C7D4BC6D-15F3-4284-9123-679830D629F2&displaylang=pt-br  

 

 

2. Depois de instalado o AIK vamos executar o arquivo copype.cmd que se encontra em C:\Arquivos de programas\Windows AIK\Tools\PETools com esta sintaxe copype x86 c:\winpe  use a prompt de comando que se encontra em iniciar, todos o programas , Microsoft Windows AIK e prompt de comando das ferramentas do Windows, para executar este comando.

 

 

 

3. Depois da execução do comando foi criado um diretório chamado c:\winpe_86 , na unidade c: , agora o que precisamos é criar uma ISO para a gravação em CD, para criar a ISO basta apenas se dirigir a mesma prompt de comando que se encontra em iniciar, todos o programas , Microsoft Windows AIK e prompt de comando das ferramentas do Windows , e executar o comando ( oscdimg -n –bc:\winpe_86\etfsboot.com c:\winpe_86\ISO c:\winpe_86\winpe_86.iso)pronto já esta criado a imagem, use um software de gravação de CD  para transferir a imagem para um CD.

 

 

 

Agora se você deseja complementar o seu CD de boot com Windows PE adicione as ferramentas que você deseja, vou mostra como adicionar uma ferramenta de suma importância para quem precisar fazer uma imagem do Windows Vista, o IMAGEX, com ele você poderá criar facilmente uma Imagem do Windows vista e aplicar em diversos computadores.

 

 

Entre o passo numero 2 e 3 copie o arquivo imagex.exe que se encontra em “c:\program files\Windows AIK\Tools\x86\imagex.exe” para “c:\winpe_x86\iso\”  copie as ferramentas que desejar para o mesmo diretório, depois para finaliza crie um arquivo dentro do mesmo diretório chamado wimscript.ini use o bloco de notas para acrescentar estas linhas de comando dentro do arquivo wimscript.ini.

 

 

 

[ExclusionList]

 

ntfs.log

 

hiberfil.sys

 

pagefile.sys

 

“Informações de volume do sistema”

 

RECICLADOR

 

Windows\CSC

 

[CompressionExclusionList]

 

*.mp3

 

*.zip

 

*.cab

 

\WINDOWS\inf\*.pnfPronto agora faça o passo 3 para criar a ISO com as novas ferramentas.

 

Executando a criação da imagem

 

Criar e compartilhar em um micro (preferencialmente em um server) uma pasta para armazenar a imagem)

 

Instalar o Vista, configurar, fazer os Updates, etc

 

Inicializar o computador com o CD criado anteriormente

 

criar um mapeamento apontando para o compartilhamento criado anteriormente:

 

Ex. net use y: \\servidor\distributionshare Pa$$word /user:dominio\administrator

 

mudar a unidade para D:

 

Executar o seguinte comando para subir a imagem:

 

imagex /capture c: j:\Arquivodeimagem.wim “Windows Vista”

Para baixar a imagem criada

 

Iniciar o micro com o CD criado anteriormente

 

quando o prompt aparecer após a inicialização completa do Windows PE,

 

iniciar o utilitário DISKPART e executar a seguinte sequência:

 

            list disk         

          

            Select disk 0

 

            create partition primary

 

            select partition 1

 

            active

 

            format fs=ntfs quick

 

            list volume

 

            exit

 

            dir c:

 

Agora é hora de conectar no servidor onde se encontram as imagens WIM.

(Vale lembrar que você precisa de um servidor DHCP disponível na rede para entregar um IP para o Windows PE)

 

            net use y: \\servidor\distributionshare Pa$$word /user:dominio\administrator

 

para executar o download e a instalação da imagem execute o seguinte comando:

 

            imagex /info y:\imagem.wim

 

            imagex /apply y:\imagem.wim 1 c:\

 

Após a execução do imagex, configurar o boot store com o comando BCDEDIT

 

            bcdedit /set {bootmgr} device partition=c:

          

            bcdedit /set {default} device partition=c:

 

            bcdedit /set {default} osdevice partition=c:

 

Para reiniciar o computador digitar o comando E