Instalação do Rsyslog
Esta instalação será dirigida à distribuição
CentOS 6.0, via YUM.
Antes de instalar o Rsyslog, deverá ser verificado se há o serviço syslog. Caso haja, o syslog deverá ser desinstalado para que o Rsyslog seja instalado.
Para instalar o Rsyslog:
# yum install rsyslog
Com o serviço do Rsyslog instalado, agora será necessário configurar para iniciar a utilização.
Configuração do servidor
Rsyslog é configurado através do arquivo
rsyslog.conf, normalmente encontrado em
/etc.
Mas, antes de inciar a configuração do arquivo
rsyslog.conf, que será direcionada a um banco de dados, será necessário que haja um banco de dados instalado e ativo, para que seja criado o banco e suas tabelas default.
O script de criação do banco de dados original, que vem no pacote durante a instalação, está disponível no arquivo
/usr/share/doc/rsyslog-versão/createDB.sql:
CREATE DATABASE 'Syslog' WITH ENCODING 'SQL_ASCII';
\c Syslog;
CREATE TABLE SystemEvents
(
ID serial not null primary key,
CustomerID bigint,
ReceivedAt timestamp without time zone NULL,
DeviceReportedTime timestamp without time zone NULL,
Facility smallint NULL,
Priority smallint NULL,
FromHost varchar(60) NULL,
Message text,
NTSeverity int NULL,
Importance int NULL,
EventSource varchar(60),
EventUser varchar(60) NULL,
EventCategory int NULL,
EventID int NULL,
EventBinaryData text NULL,
MaxAvailable int NULL,
CurrUsage int NULL,
MinUsage int NULL,
MaxUsage int NULL,
InfoUnitID int NULL ,
SysLogTag varchar(60),
EventLogType varchar(60),
GenericFileName VarChar(60),
SystemID int NULL
);
CREATE TABLE SystemEventsProperties
(
ID serial not null primary key,
SystemEventID int NULL ,
ParamName varchar(255) NULL ,
ParamValue text NULL
);
Este arquivo está na linguagem
SQL padrão, logo, é compatível com qualquer banco que trabalhe com essa linguagem.
* Um ponto importante a ressaltar é quanto a codificação do banco utilizado pelo Rsyslog, que é por padrão
SQL_ASCIII.
Por padrão, de instalação do PostgreSQL, caso não seja setado uma codificação padrão, a "LATIN1" é considerada default por conter todos os caracteres das línguas européias (o português está incluso nesse grupo), mas a maioria dos bancos utilizam "UTF-8", pela interoperabilidade dos símbolos (podendo conter caracteres de todas línguas).
Ao tentar criar um banco na codificação "SQL_ASCII" numa instalação que já possui um padrão de codificação diferente dessa, apresentará erros.
Para sanar este erro, basta que crie o banco "SYSLOG" (conforme arquivo de criação do banco
createDB.sql) em outra template que não a principal (onde foi criado o banco postgres).
Na instalação, por default, são criados mais duas templates: a "template0" e a "template1". Crie o banco em uma delas.
A modificação sugerida para o PostgreSQL 9.1 segue abaixo:
CREATE DATABASE 'Syslog' WITH ENCODING 'SQL_ASCII' TEMPLATE=template0;
\c Syslog;
CREATE TABLE SystemEvents
(
ID serial not null primary key,
CustomerID bigint,
ReceivedAt timestamp without time zone NULL,
DeviceReportedTime timestamp without time zone NULL,
Facility smallint NULL,
Priority smallint NULL,
FromHost varchar(60) NULL,
Message text,
NTSeverity int NULL,
Importance int NULL,
EventSource varchar(60),
EventUser varchar(60) NULL,
EventCategory int NULL,
EventID int NULL,
EventBinaryData text NULL,
MaxAvailable int NULL,
CurrUsage int NULL,
MinUsage int NULL,
MaxUsage int NULL,
InfoUnitID int NULL ,
SysLogTag varchar(60),
EventLogType varchar(60),
GenericFileName VarChar(60),
SystemID int NULL
);
CREATE TABLE SystemEventsProperties
(
ID serial not null primary key,
SystemEventID int NULL ,
ParamName varchar(255) NULL ,
ParamValue text NULL
);
Após criar o banco e as tabelas, algumas configurações deverão ser feitas no arquivo
rsyslog.conf. Inicialmente iremos habilitar o suporte a banco de dados.
Suporte de banco de dados em Rsyslog é integrado por módulos (plugin) carregáveis. Para usar a funcionalidade de banco de dados, o plugin do banco de dados deve ser habilitado no arquivo de configuração antes que a primeira tabela do banco de dados seja usada.
Isto é feito através da configuração da diretiva abaixo, no inicio do arquivo de configuração:
$ModLoad ompgsql
Neste caso estaremos habilitando o suporte ao banco de dados PostgreSQL, escolhido como padrão. Vários bancos de dados são suportados. A lista e as especificações estão disponíveis no site:
Em seguida nós precisamos dizer ao Rsyslogd para gravar dados no banco de dados. Como usamos o esquema padrão, não precisamos definir um modelo para isso.
Podemos usar a
hardcoded (rsyslogd lida com o modelo adequado de um link). Então, tudo o que precisamos fazer, por exemplo, para o PostgreSQL, é adicionar uma linha simples seletor para
/etc/rsyslog.conf:
*.* :ompgsql:database-server,database-name,database-userid,database-password
Onde:
- database-server : É o nome ou o endereço IP do servidor;
- database-name : É o nome do banco onde as tabelas foram criadas;
- database-userid : É o nome do usuário que tem acesso ao banco;
- database-password : É é a senha do usuário.
Com estas configurações feitas, basta iniciar o serviço do Rsyslog e verificar a entrada de dados na tabela do banco de dados.
Toda esta entrada de dados pode ser configurada de acordo com a necessidade e do ambiente em questão. Neste caso, os logs serão originados de dois sistemas operacionais distintos, sendo um Windows Server 2003 e um
GNU/Linux Red Hat 5.5 Enterprise Edition.
Os principais logs do GNU/Linux serão enviados ao servidor centralizado, como o
/var/log/messages, e outros específicos como do DHCP, Squid e Apache.
No Windows serão enviados os logs do "System Events Reports".