Olá a todos, espero que esta dica seja útil àqueles que querem monitorar servidores e estações
Windows pelo
Nagios.
O
nrpe_nt é um plugin que possibilita essa integração do Nagios com o Windows, mas você precisa instalar programas clientes nas estações que deseja monitorar.
A solução apresentada aqui usa scripts em WMI que possibilitam a criação de um "proxy NRPE", centralizando essa solução e minimizando a configuração.
Antes de mais nada:
Estou supondo que você já possui seu Nagios configurado. Caso precise de ajuda para configurá-lo, acesse
Melecio.org. Apesar de ser um tutorial para BSD, é muito bom para se entender como o Nagios funciona.
Usei o Fedora Core 5, mais os pacotes:
- nagios 2.4
- nrpe-2.3-2.2
- nt-pure-WMI
Você precisará instalar o NRPE apenas em um servidor, os scripts WMI permitem que você monitore os outros servidores Windows sem a necessidade da instalação do cliente em todas as máquinas.
Configurando o Nagios NRPE_NT no Windows
Fala o download o arquivo nrpe_nt-pure-WMI.zip no link:
Extraia o conteúdo desse arquivo na raiz do sistema (C:\nrpe_nt), acesso o diretório e edite o NRPE.CFG, alterando as seguintes linhas:
#PORTA TCP
server_port=5666
# IP LOCAL DO WINDOWS
#EX: server_address=A.B.C.D
server_address=192.168.1.1
#IP DO SERVIDOR NAGIOS
#EX: server_address=A.B.C.E
allowed_hosts=192.168.1.2
Depos, no Prompt do DOS, execute:
> nrpe_nt -i
Dessa maneira, o NRPE_NT será instalado como um serviço local, e você poderá iniciá-lo a partir do MMC Serviços do Windows.
Pronto! No Windows o serviço foi instalado e configurado, agora, é preciso configurar o seu servidor Nagios para que ele seja capaz de reconhecer esses comandos.
Configurando o NRPE no servidor Nagios
Faça o download do nrpe:
Instale-o.
No servidor Nagis você deverá editar o arquivo check_commands.cfg, adicionando as seguintes linhas (note que o IP descrito em todas as linhas é o IP do servidor Windows com o nrpe_nt instalado:
######## check_commands.cfg #####
#nagios-wmi-cpu check command definition
define command {
command_name check_wmi_cpu
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_cpu_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-disk check command definition
define command {
command_name check_wmi_disk
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_disk_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$ $USER9$
}
#nagios-wmi-disks check command definition
define command {
command_name check_wmi_disks
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_disk_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-mem check command definition
define command {
command_name check_wmi_mem
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mem_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#commands check_wmi_printque
define command {
command_name check_wmi_printque
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_printque_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-proc check command definition
define command {
command_name check_wmi_procs
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_process_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $USER9$
}
#commands check_wmi_swap
define command {
command_name check_wmi_swap
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_swap_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-exchange-mailbox-receiveq check command definition
define command {
command_name check_wmi_exchange_mailbox_receiveq
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_exc_mbx_rcvq_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-exchange-mailbox-sendq check command definition
define command {
command_name check_wmi_exchange_mailbox_sendq
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_exc_mbx_sendq_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#commands check_wmi_exchange_mta_workq
define command {
command_name check_wmi_exchange_mta_workq
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_exc_mta_workq_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#commands check_wmi_exchange_public_recieveq
define command {
command_name check_wmi_exchange_public_receiveq
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_exc_pub_rcvq_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#commands check_wmi_exchange_public_sendq
define command {
command_name check_wmi_exchange_public_sendq
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_exc_pub_sendq_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-mssql-buffer-cache-hit check command definition
define command {
command_name check_wmi_mssql_buff_cache_hit
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mssql_buf_cache_hit_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-mssql-latch-waits check command definition
define command {
command_name check_wmi_mssql_latch_waits
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mssql_latch_waits_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-mssql-lock-wait-time check command definition
define command {
command_name check_wmi_mssql_lock_wait_time
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mssql_lock_wait_time_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $USER9$
}
#nagios-wmi-mssql-log-growth check command definition
define command {
command_name check_wmi_mssql_log_growth
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mssql_log_growth_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$ $USER9$
}
#nagios-wmi-mssql-log-used check command definition
define command {
command_name check_wmi_mssql_log_used
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mssql_log_used_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$ $USER9$
}
#nagios-wmi-mssql-transactions check command definition
define command {
command_name check_wmi_mssql_transactions
command_line $USER1$/check_nrpe -H 192.168.1.1 -c check_mssql_transactions_auth -a $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$ $USER9$
}
############
### EOF ###
############
Edite o arquivo resources.cfg adicione a linha:
$USER9$=SENHADOADMINISTRADOR
Agora um exemplo de como adicionar essa checagem ao seu checkservices.cfg:
define service {
use generic-service
host_name estacao1
service_description CPU
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups administradores
notification_interval 0
notification_period 24x7
notification_options w,u,c,r
check_command check_wmi_cpu!estacao1!30!70!adminlocal
}
Dicas
Note que no nrpe.cfg temos duas versões de cada item monitorado, alguns usam uma autenticação, enquanto o outro assume que o servidor nrpe possui a mesma senha de administrador dos servidores monitorados, e por isso não são passadas informações para isso.
Nas definições do checkcommand acima todos usam a autenticação (por isso o _auth no final dos nomes dos scripts que acessam o servidor nrpe).
O último comando passado sempre será o nome do usuário, já o argumento password é passado pelo $USER9$, que fica armazenado no resources.cfg. Por isso armazenar este arquivo em um subdiretório seguro.
Uma vez que o servidor nrpe estiver no ar e as configurações do check command definidas, você poderá configurar seus serviços monitorados no services.cfg.
Cada um dos plugins pode ser executado via linha de comando e, caso precise de ajuda, faça-o com o argumento -help.
Antes de configurar o Nagios, sugiro que rode-os pelo prompt primeiro, e depois parta para a configuração.
Boa sorte.
Links
Fontes