quinta-feira, 18 de março de 2010

Ping em Vb.net

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/2009/12/ping-em-vbnet.html

Segue um código para executar uma operação de ping em um endereço remoto.
Essa funcionalidade é útil para testar a disponibilidade de um determinado serviço.


Dim Ping As Ping = New Ping()
Dim PingReply As PingReply = Ping.Send("127.0.0.1")
If PingReply.Status <> IPStatus.Success Then
     Response.write("Serviço fora do ar")
End If

É necessário importar os seguintes Namespaces:

Imports System.net
Imports System.net.NetworkInformation

Um abraço e até próxima!!

Acessando o Active Directory (LDAP) com ASP.Net - Parte 4 - Adicionando Dados a um atributo

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/search/label/Active%20Directory

Segue mais um código para manipulação de informações em base LDAP utilizando o .net.

O código é bem parecido com o código para atualização de dados. Mas ao invés de alterarmos um valor existente, iremos adicionar um novo valor ao atributo.

Dim recurso As New DirectoryEntry("LDAP://10.190.1.25")
Dim busca As New DirectorySearcher(recurso)
Dim resultado As SearchResult

'Você pode alterar o critério da busca para o critério que for melhor para sua aplicação.
busca.Filter = "(sAMAccountName=RafaelMaia)"
resultado = busca.FindOne()


'Adicionando o valor
Dim oDe As DirectoryEntry = Resultado.GetDirectoryEntry
oDe.Properties("mail").add("rafael@email.com.br")
oDe.CommitChanges()
oDe.Close()



Um abraço e até a próxima!!

Acessando o Active Directory (LDAP) com ASP.Net - Parte 3 - Alterando dados do usuário

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/search/label/Active%20Directory

Voltando ao assunto Active Directory.
Hoje estarei publicando um código para alteração dos atributos de um usuário em uma base LDAP.

A primeira coisa a fazer é carregar os dados do usuário que queremos alterar os dados.


Dim recurso As New DirectoryEntry("LDAP://10.190.1.25")
Dim busca As New DirectorySearcher(recurso)
Dim resultado As SearchResult
busca.Filter = "(sAMAccountName=RafaelMaia)"
resultado = busca.FindOne()

Em seguida, iremos para a alteração de fato.


Dim oDe As DirectoryEntry = Resultado.GetDirectoryEntry
oDe.Properties("mail")(0) = "rafael@email.com.br"
oDe.CommitChanges()
oDe.Close()


Pronto! O código acima altera o atributo "mail" diretamente na sua base LDAP.
Para alterar qualquer outro atributo basta trocar o nome da propriedade "mail" por qualquer outra propriedade.

Não esqueçam de importar o namespace System.DirectoryServices e das permissões necessárias para efetuar essas operações no LDAP.

Um abraço e até a próxima!!

Acessando o Active Directory (LDAP) com ASP.Net - Parte 2 - Adicionando e Removendo um usuário de um grupo

 

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/2009/10/acessando-o-active-directory-ldap-com.html


Hoje estarei dando continuidade ao assunto Active Directory.
Em uma das aplicações que estive desenvolvendo foi necessário manipular o grupo ao qual um usuário pertence.

Segue o código para adicionar e remover um usuário de um grupo no Active Directory.

Adicionando usuário ao grupo:


        Dim rootEntry As New DirectoryEntry("LDAP://10.190.1.25")
        Dim Mysearcher As New DirectorySearcher(rootEntry)
        Mysearcher.SearchRoot = rootEntry
        Mysearcher.Filter = "(&(objectCategory=group)(CN=Grupo_Teste))"
        Dim result As SearchResult = Mysearcher.FindOne()
        Dim g As DirectoryEntry = result.GetDirectoryEntry()

        Dim busca As New DirectorySearcher(rootEntry)
        busca.Filter = "(sAMAccountName=RafaelMaia)"
        result = busca.FindOne()

        Dim user As DirectoryEntry = result.GetDirectoryEntry()

        g.Invoke("Add", New [Object]() {user.Path})
        g.CommitChanges()

        g.Close()
        g.Dispose()

        user.Close()
        user.Dispose()

        Mysearcher.Dispose()
        rootEntry.Close()
        rootEntry.Dispose()

No código acima estou adicionando o usuário RafaelMaia ao grupo Grupo_Teste.
Se você tentar adicionar um usuário a um grupo que ele já pertence, ocorrerá uma exception.

Por isso, é importante validar se o usuário já pertence ao grupo antes de adicioná-lo.
Isso pode ser feito facilmente utilizando o código postado no artigo anterior.
Basta consultar os dados do usuário e verificar a propriedade "MemberOf".
Esta propriedade retorna um array de string contendo todos os grupos que o usuário pertence.

Removendo usuário do grupo:


        Dim rootEntry As New DirectoryEntry("LDAP://10.190.1.25")
        Dim Mysearcher As New DirectorySearcher(rootEntry)
        Mysearcher.SearchRoot = rootEntry
        Mysearcher.Filter = "(&(objectCategory=group)(CN=Grupo_Teste))"
        Dim result As SearchResult = Mysearcher.FindOne()
        Dim g As DirectoryEntry = result.GetDirectoryEntry()

        Dim busca As New DirectorySearcher(rootEntry)
        busca.Filter = "(sAMAccountName=RafaelMaia)"
        result = busca.FindOne()

        Dim user As DirectoryEntry = result.GetDirectoryEntry()

        g.Invoke("Remove", New [Object]() {user.Path})
        g.CommitChanges()

        g.Close()
        g.Dispose()

        user.Close()
        user.Dispose()

        Mysearcher.Dispose()
        rootEntry.Close()
        rootEntry.Dispose()


Reparem que os códigos são praticamente idênticos. Alterando somente a linha a seguir:
        g.Invoke("Remove", New [Object]() {user.Path})

Antes de excluir um usuário do grupo, verifique se o mesmo pertence realmente ao grupo em questão.
Caso tente excluir um usuário que não pertence ao grupo, ocorrerá uma exception.

É muito importante também que o usuário que está rodando sua aplicação tenha permissões para executar esta operação no active directory.

Um abraço e até a próxima!!

Acessando o Active Directory (LDAP) com ASP.Net - Parte 1 - Consultando dados de um usuário

Autor: Rafael Maia
Fonte:http://rafaelfranklinmaia.blogspot.com/search/label/Active%20Directory
É muito comum criarmos aplicações que façam uso da estrutura do Active Directory para autenticar usuários ou validar regras de acesso. Para isso, o .Net fornece classes para manipulação de dados dentro de bases LDAP (Lightweight Directory Access Protocol)

Segue um exemplo de como consultar dados de um usuário direto de uma base de dados LDAP:

        Dim de As New DirectoryEntry("LDAP://10.190.1.25") 'Endereço do active Directory
        Dim busca As New DirectorySearcher(de)
        Dim resultado As SearchResult
        busca.Filter = "(sAMAccountName=RafaelMaia)"
        resultado = busca.FindOne()
        Response.Write results.Properties("mail")(0)


O código acima irá consultar os dados do usuário RafaelMaia e escrever na tela o email do mesmo.
Pode-se acessar qualquer informação cadastrada no perfil do usuário no Active Directory.
Desde o Nome até telefones de contato. Só não se pode recuperar a senha do usuário, por razões óbvias.

É importante importar o namespace System.DirectoryServices.

Imports System.DirectoryServices


No link abaixo você pode visualizar uma lista completa de todas as propriedades do Active Directory.
http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm

A seguir um exemplo de como validar o login e senha de um usuário diretamente no AD.


Dim de As New DirectoryEntry(Nothing, "dominio\RafaelMaia", "senha_do_usuario")
        Try
            Dim o = de.NativeObject
            Dim ds As New DirectorySearcher(de)
            ds.Filter = "samaccountname=RafaelMaia"
            ds.PropertiesToLoad.Add("cn")
            Dim sr As SearchResult
            sr = ds.FindOne()
            If IsNothing(sr) Then Throw New Exception()
            Response.write("Login válido!")
        Catch ex As Exception
            Response.write("Login e/ou senha  inválidos!")
        End Try

Por agora é tudo

quarta-feira, 17 de março de 2010

Guia de resolução de problemas com Group Policy

Fonte: http://www.portaltecnologia.net/2010/02/15/guia-de-resolucao-de-problemas-com-group-policy/#more-1170

O Fabio Hara (dispensa apresentações), publicou recentemente uma série de artigos importantes sobre troubleshooting, com base nos tópicos abertos no Fórum Technet Brasil. Um dos maiores tópicos eram sobre GPOs ou Group Policies.

Esse primeiro documento que estou disponibilizando aqui faz parte dessa série, e trata-se como eu disse acima sobre GPOs.

Para fazer o download clique no link abaixo.

wordIcon

Para quem quiser ler aqui no blog todo o documento clique em CONTINUE READING.

Guia de resolução de problemas com Group Policy

Um dos maiores topicos dentro do Forum do TechNet Brasil (www.microsoft.com/brasil/technet) refere-se a Group Policy, ou mais conhecido como políticas de grupo. Mas o que é isso?

A Group Policy permite controlar praticamente tudo em um desktop ou servidor membro. Ela fornece configurações automatizadas e são totalmente dependentes do Active Directory. Existem algumas implementações de Group Policy com ambientes Linux, mas no caso de ambientes Microsoft elas podem ser aplicaveis a aclientes windows 2000 em diante.

O que é importante ao tentar resolver um problema com Group Policy? Existem alguns passos iniciais que eu indico:

  1. DNS – como sempre DNS é tudo no Active Directory. Isto significa que:
    1. A estação deve apontar OBRIGATORIAMENTE  seu IP de DNS para o servidor DNS utilizado pelo Active Directory. NUNCA aponte para o seu DNS de internet
    2. O DNS do Active Directory deve ter obrigatoriamente 4 registros SRV na zona DNS: _MSDCS, _SITES, _TCP e _UDP.
    3. Bloqueio de portas – existem algumas portas que devem ser liberadas para que a autenticação entre a estação/servidor e o Domain Controller ocorra sem nenhum problema. Como testar? Simples: PortQRYUI (Port Query). Esta ferramenta grafica possui as queries prontas para pesquisa de dominio, etc. Excelente para detectar qual porta TCP/UDP esta bloqueada ou não.
      1. Link para download: http://www.microsoft.com/downloads/details.aspx?familyid=8355e537-1ea6-4569-aabb-f248f4bd91d0&displaylang=en
      2. Bloqueio de ICMP – Importantíssimo, pois as estações Windows XP e Windows 2000 utilizam pacotes ICMP para detectar a velocidade do link. Dependendo da velocidade alguns itens da GPO podem ser bloqueados, pois o Windows acha que esta passando por um link lento. A forma utilizada para detectar a velocidade é atraves do PING, portanto nunca bloqueie ICMP nos seus switchs e roteadores internos. O Windows Vista e o Windows 7 utilizam outro mecanismo para detectar a velocidade e não dependem do ICMP. Em todo caso lembre-se que algumas ferramentas de gerenciamento de desktops e de antivirus costumam utilizar ICMP, portanto pense bem se vale a pena ou não bloquear este tipo de pacote internamente.

Para facilitar selecionei varios links, alguns em portugues e outros em ingles. São links com materiais muito bons para resolver problemas de GPO.

  • Solucionando problemas de aplicativos da Diretiva de grupo
    • Artigo do suporte da Microsoft que aborda problemas com processamento de diretivas de grupo em clientes Windows 2000. Tambem serve como parametro para estações Windows XP
    • link: http://support.microsoft.com/kb/250842/pt-br
  • Utilitarios gratuitos para Group Policy
  • Blog sobre Group Policy
    • Segue um blog bem interessante especializado apenas em Group Policy
    • link: http://gpfaq.se/

Alem destes links tem meu CD de treinamento em Group Policy , para que voce possa conhecer mais detalhes sobre como funciona esta tecnologia:

CD de Treinamento de Group Policy no Windows Server 2003

Autor: Fabio Hara

Link: http://shop.linhadecodigo.com.br/treinamento.asp?id=2837

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

Vista erro 80070002 - Falha nas actualizações

Fonte: http://forum.zwame.pt/showthread.php?t=250240

Já há algum tempo que não consigo instalar qualquer update no meu Vista. Tentei seguir os passos que vêm no manual de ajuda (basicamente limpar o histórico de actualizações) e continua a dar falha com o erro 80070002.
Alguma ideia do que possa ser ou um tutorial que possa seguir no sentido de resolver o problema?

Possivel Solução:

tenta fazer o seguinte: em linha de comando como administrador faz "net stop WuAuServ" vê se faz com exito, se sim no menu iniciar procurar -%windir% - carrega enter - vai à pasta SoftwareDistribution e muda de nome para SDold, assim mantens os ficheiros antigos. Novamente na linha de comando faz "net start WuAuServ" - ver se faz com exito. Faz novamente os updates atraves do windows update e vê se já funciona. Caso não funcione será algo relacionado com o BITS (quase de certeza). Se for esse o caso acede à pasta ApplicationData (escondida por defeito) - Network - e se lá tiver algo como "Downloader" elimina. Reinicia o computador, pois deverá fazer com que o BITS reinicie automaticamente. Mas para teres a certeza que é algo relacionado com o BITS vai as ferramentas administrativas no painel de controlo - Serviços e procura por "Serviço De Transferência Em Segundo Plano" e certifica que está em automático(inicio atrasado) e que está ligado. Caso não esteja então é mesmo do BITS, e faz o que mencionei anteriormente. E vai novamente a Serviços e certifica-te que está ligado e automatico (inicio atrasado).

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