Arquivo mensal: janeiro 2016

VMware – Erro no Event Viewer: Failed registration of app type 2

Estava observando erros frequentes no Event Viewer em alguns servidores Windows 2003 em hosts VMware ESXi 5.x.

A mensagem completa no Event Viewer:

Event Type: Warning
Event Source: VMware Tools
Event Category: None
Event ID: 1000
Date: 16/1/2016
Time: 15:18:23
User: SRV-DESKTOP-REM\user
Computer: SRV-DESKTOP-REM
Description:
[ warning] [vmusr:vmtoolsd] Failed registration of app type 2 (Signals) from plugin unity.

Após muitas informações desencontradas, o problema básico é que o arquivo tools.conf não é criado, é criado vazio ou seu conteúdo (em caso de upgrade do tipo de VM) está com valores incorretos.

Para as versões VMware 5.x o conteúdo correto é o seguinte:

[logging]
log = true

# Enable tools service logging to vmware.log
vmsvc.level = debug
vmsvc.handler = vmx

# Enable new "vmusr" service logging to vmware.log
vmusr.level = error
vmusr.handler = vmx

# Enable "Volume Shadow Copy" service logging to vmware.log
vmvss.level = debug
vmvss.handler = vmx

Ele deve ser salvo com o nome tools.conf na pasta apropriada do OS guest.

Windows XP and Windows Server 2000/2003:

C:\Documents and Settings\All Users\Application Data\VMware\VMware Tools\tools.conf

Windows Vista, Windows 7, and Windows Server 2008  :

C:\ProgramData\VMware\VMware Tools\tools.conf

Linux, Solaris e FreeBSD :

/etc/vmware-tools/tools.conf

Maiores detalhes:

https://communities.vmware.com/thread/419192

http://kb.vmware.com/kb/2036350

Passando uma variável shell Unix para uma query SQL

Resolvi alterar alguns scripts que coletavam dados de arquivos texto de log por meio de querys SQL em um banco de dados.

Os scripts rodam após a meia noite e os dados coletados são do dia anterior.

Não gostei muito da sintaxe dos comandos SQL para selecionar a data do dia anterior, ia ter que deixar os comandos num arquivo .sql externo, queria queries de uma linha dentro do shell.

Criar uma variável com a data do dia anterior é fácil com o uso do comando date em formato AAAA-MM-DD, mas estava com problemas para que o SQL abrisse a variável. A solução é o uso de aspas duplas para a query a ser executada e simples na parte do comando onde a variável deve ser convertida.

#!/bin/sh
 ontem=$(date +%F --date="1 days ago") 
# Extraindo dados do banco de dados MySQL 
/usr/bin/mysql -u db_user -pdb_password -e "select FromHost from SystemEvents WHERE ReceivedAt LIKE '%${ontem}%' " DataBaseName

Análise e visualização de arquivos de log

Por conta de alguns equipamentos remotos que gerencio comecei a fazer a coleta de logs em um único servidor Linux, o problema passou a ser como tratar e visualizar esses logs.

Algumas necessidades são cobertas por scripts que varrem os arquivos e enviam emails automáticos informando situações de maior severidade.

O que eu queria de verdade era poder analisar esses arquivos por meio de uma página onde eu pudesse fazer buscas por horário, equipamento, tipo de erro ou alguma combinação.

Para isso os arquivos deveriam ser consolidados em um banco de dados e uma interface web seria acrescentada.

A necessidade seria coberta com um conjunto de utilitários:

rsyslog – versão mais moderna do syslog original do Linux, com o recurso de acesso a um banco de dados SQL para consolidação dos dados.

MySQL – o banco de dados SQL escolhido. Poderia ser o PostgreSQL

LogAnalyzer – frontend em PHP para visualização e análise dos logs.

rsyslog – Instalação e configuração

A substituição do syslog pelo rsyslog é bem simples, basta instalar o pacote:

Comandos para CentOS e RedHat:

yum install rsyslog rsyslog-mysql

Comandos para Debian e Ubuntu:

apt-get install rsyslog rsyslog-mysql

Como e já tinha o MySQL configurado basta criar o banco de dados para o rsyslog. O rsyslog fornece um script pronto que cria um banco chamado Syslog:

# mysql < /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql

mysql> grant all on Syslog.* to syslogwriter@localhost identified by 'syslogwriter_password';
mysql> flush privileges ;

 

Como eu já usava o syslog para fazer a coleta copiei o arquivo /etc/syslog.conf para /etc/rsyslog.conf e adicionei adicionei as linhas necessárias para o rsyslog no início do arquivo:

# Use traditional timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog

# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides MySQL database support
$ModLoad ommysql

e no final do arquivo as linhas para acesso ao banco de dados:

# Logging mysql database
*.* >localhost,Syslog,syslogwriter,syslogwriter_password

Baixei e instalei o LogAnalyser

tar zxvf loganalyzer-3.6.5.tar.gz

cd loganalyzer-3.6.5
mkdir /var/www/html/syslog
cp -a src/* /var/www/html/syslog

cd /var/www/html/syslog
touch config.php
chmod 666 config.php

Abra um browser e abra a configuração inicial do LogAnalyzer:

http://localhost/loganalyzer/

Informe o nome do banco de dados, usuário e senha.

O resultado é muito bom:

Podemos selecionar por evento (ssh):

loganalyzer_1

Ter uma visão geral (observe que clicar sobre uma linha permite usar esse evento como filtro):

loganalyzer_2

E a página de estatísticas:

loganalyzer_3

Matt's Entropy

... seeding /dev/random, one blog post at a time.

Maravilhoso Mundo Novo

De volta ao Paraíso

androideia

Idéias e Android, necessariamente não nessa ordem.

Another Airgun Blog

Idéias e Android, necessariamente não nessa ordem.

Armas de Pressão - Modificações e afins

Metade da graça em atirar está em fazer ajustes na arma.