O documento discute o monitoramento de bancos de dados Oracle e SQL Server usando a ferramenta open-source Nagios. Ele descreve os benefícios do monitoramento, apresenta o Nagios e seus arquivos de configuração, e discute vários plugins para monitorar serviços, processos, recursos e backups nos bancos de dados.
2. Agenda
• Benefícios do monitoramento remoto
• Visão geral da solução de monitoramento
• Nagios
– Arquivos de configuração
– Estrutura básica
– Status dos hosts (máquinas)
– Status dos serviços
– Notificações
– Plugins de banco de dados (SQL Server, Oracle.)
3. Benefícios do monitoramento remoto
• Eliminação de atividades manuais
– Com o monitoramento automatizado, muitas tarefas antes realizadas manualmente em
atividades de checkup, agora são executadas automaticamente.
• Manutenção proativa e detecção precoce
– Quando um problema surge, o monitoramento remoto envia um alerta para que se
possa tomar medidas imediatas e necessárias para garantir que o problema não resulte
em diminuição da produtividade e tempo de inatividade.
• Minimização da interrupção dos negócios
– Com o monitoramento preventivo através de diferentes graus de alertas é possível
detectar problemas que poderiam interromper drasticamente a continuidade dos
negócios da organização.
• Aplicação das melhores práticas, garantindo uma maior disponibilidade
do seu ambiente
– O monitoramento remoto pode fornecer às organizações conhecimentos essenciais
para a saúde de seus sistemas em geral a apontar aspectos que precisam ser
melhorados.
4. Visão Geral do Nagios
Nagios é um sistema open-source para monitoração de rede,
servidores e serviços.
• Monitoramento de serviços (smtp, pop3, 1433,1521, 3306, etc);
• Monitoramento de processos (sqlagent.exe, sqlservr.exe, etc);
• Monitoramento de recursos (cpu, memória, load, disco, etc);
• Disponível para monitoração em diversas plataformas: Linux,
Solaris, Windows, HPUX;
• Flexível: Uso de plugins;
• Plugins desenvolvidos para MySQL, Oracle, MS SQL Server,
MongoDB;
• Checagem de serviços paralelizadas;
• Notificação de contatos (pager, email, sms, gtalk);
• Solução open-source e customizável;
• Interface Web.
Características
26. Plugins - SQL Server
define command{
command_name check_port
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -t 60
}
define service {
use generic-db-service {generic-service, generic-sms-db-service}
host_name Server01, Server02, Server03
service_description SQL Server Port 1433
check_command check_port!1433
notification_period 12x5
}
Commands.cfg
Services.cfg
Realiza monitoramento da porta (LISTERNER) do SQL Server verificando se a mesma
possui conectividade.
27. Plugins - SQL Server
define command {
command_name check_sqlserver
command_line /usr/local/nagios/libexec/check_mssql_health -server
$HOSTADDRESS$ -port $ARG1$ -username $ARG2$ -password $ARG3$ -mode $ARG4$
}
define service {
use generic-db-service
host_name Server01, Server02, Server03
service_description SQL Server Backup Full
check_command check_sqlserver!1433!nagios!nagios!sql --name "select case when COUNT(*) > 0 then 6
else 0 end as 'STATUS' from DB.dbo.ALT_VW_MISSING_FULL_BACKUP" --name2
"[OK] - Backup Full encontrado nas ultimas 24h, [VIEW]
ALT_VW_MISSING_FULL_BACKUP"
notification_period 12x5
}
Commands.cfg
Services.cfg
Realiza monitoramento da frequência de backups FULL realizados nos bancos de dados. Este plugin
tem como base de informação, a view ALT_VW_MISSING_FULL_BACKUP criada especificamente
para este propósito. Um backup FULL não realizado nas últimas 24 hs irá gerar um alerta.
28. Plugins - SQL Server
define command {
command_name check_sqlserver
command_line /usr/local/nagios/libexec/check_mssql_health -server
$HOSTADDRESS$ -port $ARG1$ -username $ARG2$ -password $ARG3$ -mode $ARG4$
}
define service {
host_name Server01
service_description SQL Server Connectivity
check_command check_sqlserver!1433!nagios!nagios!sql --name "select case when COUNT(*) > 0 then 6 else 0 end as
'STATUS‘ from DB.dbo.ALT_VW_CONNECTDATABASE" --name2 "[OK] - conexao realizada com
sucesso, [CRITICAL] - conexao nao realizada, [VIEW] ALT_VW_CONNECTDATABASE"
use generic-db-service
notification_period 12x5
}
Commands.cfg
Services.cfg
Verifica se o banco de dados possui conectividade referente a acessos externos ao
servidor. Este plugin tem como base das informações, a view ALT_VW_CONNECT
DATABASE criada especificamente para este propósito.
29. Plugins - SQL Server
define command {
command_name check_sqlserver
command_line /usr/local/nagios/libexec/check_mssql_health –server
$HOSTADDRESS$ -port $ARG1$ -username $ARG2$ -password $ARG3$ -mode $ARG4$
}
define service {
host_name Server01, Server02, Server03
service_description SQL Server Memory Pressure
check_command check_sqlserver!1433!nagios!nagios!sql --name "SET ANSI_NULLS ON SET ANSI_PADDING ON
SET ANSI_WARNINGS ON SET ARITHABORT ON SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF SET QUOTED_IDENTIFIER ON select case when
COUNT(*) > 0 then 3 else 0 end as 'STATUS' from DB.dbo.ALT_VW_MEMORYPRESSURE“
--name2 "[OK] - Nao houve pressao de memoria nos ultimos 5 minutos, [WARNING] –
Houve pressao de memoria nos ultimos 5 minutos, [VIEW] ALT_VW_MEMORYPRESSURE"
use generic-db-service
notification_period 12x5
}
Commands.cfg
Services.cfg
Realiza monitoramento do uso de memória do SQL Server e verifica se ocorrências de falta de
memória estão ocorrendo tanto para o SQL Server quanto para o sistema operacional . Este plugin
tem como base das informações a view ALT_VW_MEMORY PRESSURE.
30. Monitoramento - SQL Server
Acompanhamento da instância através de monitoramentos específicos em intervalos de tempo
33. Plugins - Oracle
Independente da quantidade de bancos de dados monitorados, serão apresentados na
coluna “Status Information” apenas aqueles que apresentam algum tipo de problema. Se
mais de um banco aprestnar um problema os mesmos serão mostrados entre virgulas (,).
Exemplo: Oracle Connectivity: BD01,BD02,BD03
34. Plugins - Oracle
Oracle Active Instance
Verifica se o processo SMON da instância está em execução. Realiza uma checagem através do
arquivo /etc/oratab e compara com os arquivos SPFILEs encontrados (SMON = pfile). Se alguma
instância de banco de dados “cair” ou sofrer SHUTDOWN, o número de processos SMON em
execução será diferente do número de arquivos SPFILEs encontrados.
define service{
use generic-service
host_name Server01
service_description Oracle Instance
check_command check_by_ssh!/nagios/check_active_instance.sh '$ORACLE_HOME/dbs/spfile*.ora'!oracle
notification_interval 1
notification_period 24x7
check_interval 1
retry_interval 1
}
Realiza monitoramento no nível do sistema operacional (processo SMON).
35. Plugins - Oracle
Oracle Connectivity
Realiza teste de conectividade em todas as instâncias do servidor em questão.
Diferente do plugin Active Instance que verifica se o processo SMON de uma instância está
em execução através de uma checagem com a entrada no arquivo arquivo /etc/oratab e o
SPFILE, o plugin Oracle Connectivity realiza teste de conectividade para verificar se o banco
de dados está ativo e recebendo acessos externos.
Tem como vantagens realizar teste de conexão com um usuário do banco de dados e
verificar conectividade com o processo LISTENER.
define service{
use generic-service
host_name Server01
service_description Oracle Connectivity
check_command check_oracle_connectivity!oracle!server01!NONE
notification_interval 1
notification_period 24x7
check_interval 1
retry_interval 1
}
36. Plugins - Oracle
Oracle Process Count
Realiza verificação do número de processos de bancos de dados conectados em
todas as instâncias do servidor em questão.
O plugin Oracle Process Count tem como base de informação a view de desempenho
dinâmico V$PROCESS. O plugin é configurado de forma que um valor limite para WARNING e
um valor limite para CRITICAL sejam configurados. O monitoramento da quantidade de
processos conectados no banco de dados se faz necessária com o propósito de se evitar os
erros “ORA-00018: maximum number of sessions exceeded” ou “ORA-00020: maximum
number of processes exceeded” ocasionados por algum tipo de problema em alguma
aplicação ou na instância Oracle que abriu mais processos do que deveria.
define service{
use generic-service
host_name Server01
service_description Oracle Process Count
check_command check_database_process_oracle!oracle!server01!22!20!10!NONE
notification_interval 1
notification_period 24x7
check_interval 1
retry_interval 1
}
37. Plugins - Oracle
Oracle Alert Log File
Monitora erros (ORA-) no arquivo de alerta (alert log file) de cada banco de dados.
• Realiza o monitoramento no intervalo de tempo especificado.
• O caminho dos arquivos de alerta são mostrados (separados por vírgula) caso
mais de uma instância apresente a notificação.
• O utilitário ADRCI poderá ser utilizado para leitura do arquivo de log de alerta.
• Monitoramento preventivo e corretivo.
define service{
use generic-db-service
host_name Server01
service_description Oracle Alert Log File
check_command check_alertlogfile_oracle!oracle!server01!NONE
check_interval 10
notification_period 12x5
}
38. Plugins - Oracle
Oracle Checkup General
Monitora aspectos gerais dos bancos de dados.
• TABLESPACE USED 85%~96% (warning) e TABLESPACE USED 97%~100%
(critical) através da view DBA_TABLESPACE_ USAGE_METRICS.
• FRA USED 85%~96% (warning) e FRA USED 97%~100% (critical) através
da view V$RECOVERY_FILE_DEST.
• TEMP AUTOEXTEND ON e UNDO AUTOEXTEND ON.
• NOARCHIVELOG, FLASHBACK ON, RESTORE POINT.
• REDO LOG FILE (status).
• SCHEDULER JOB (disable, error, not executed).
39. Plugins - Oracle
Oracle Lock General
Monitora LOCKS que estejam ocorrendo no banco de dados. Tem como base de
informação a view dinâmica de desempenho V$SESSION.
Vantagens:
• Realiza o monitoramento no intervalo de tempo especificado.
• O caminho dos arquivos de alerta são mostrados (separados por vírgula) caso
mais de uma instância apresente a notificação.
• O utilitário ADRCI poderá ser utilizado para leitura do arquivo de log de alerta.
• >= 5 AND < 10 min (WARNING).
• > 10 min (CRITICAL).
define service{
use generic-db-service
host_name Server01
service_description Oracle Checkup Lock
check_command check_database_lock_oracle!oracle!server01!NONE
check_interval 10
}
40. Plugins - Oracle
Oracle Memory General
Monitora e coleta informações dos buffers de memória SGA e PGA verificando possíveis
ajustes necessários com base nas views V$SGA_TARGET_ADVICE e V$PGA_TARGET_ADVICE.
REGRAS
V$SGA_TARGET_ADVICE
(sga_size_factor=1.25 and estd_db_time_factor <= 0.80) or
(sga_size_factor=1.5 and estd_db_time_factor <= 0.70) or
(sga_size_factor=1.75 and estd_db_time_factor <= 0.50) or
(sga_size_factor=2 and estd_db_time_factor <= 0.30)
V$PGA_TARGET_ADVICE
pga_target_factor = 1 and estd_pga_cache_hit_percentage <= 95
and (pga_target_factor = 8 ) > 95
define service{
use generic-db-service
host_name Server01
service_description Oracle Checkup Memory
check_command check_database_memory_oracle!oracle!Server01!NONE
check_interval 10
}
41. Plugins - Oracle
Oracle Backup RMAN
Monitora os status dos backups RMAN realizados. O monitoramento é realizado no banco de
dados do catálogo de recuperação (Recovery Catalog) através de uma view especial chamada
RPT_VW_RMAN_BACKUP. Os bancos de dados a serem monitorados precisam estar
registrados no banco de dados de Catálogo do RMAN.
REGRAS
• nvl(status,'FAILED') in ('COMPLETED WITH ERRORS','FAILED','RUNNING WITH ERRORS')
• trunc(end_time) < trunc(sysdate)-2
• status in ('RUNNING','RUNNING WITH WARNINGS','COMPLETED WITH WARNINGS')
42. Plugins - Oracle
Oracle Validate RMAN
Monitora os status das validações que são realizadas nos backups RMAN. O monitoramento é
realizado no banco de dados do catálogo de recuperação (Recovery Catalog) através de uma
view especial chamada RPT_VW_RMAN_VALIDATE. Os bancos de dados a serem monitorados
precisam estar registrados no banco de dados de Catálogo do RMAN.
REGRAS
• status in ('RUNNING','RUNNING WITH WARNINGS','COMPLETED WITH WARNINGS')
• nvl(status,'FAILED') in ('COMPLETED WITH ERRORS','FAILED','RUNNING WITH ERRORS')
• trunc(end_time) < trunc(sysdate)-8
43. Plugins - Oracle
Oracle Dataguard
Monitora os status dos bancos de dados PRIMARY e PHYSICAL STANDBY.
VERIFICACAO ROLE PRIMARY
• Verificação do nível de sincronismo com o banco de dados STANDBY através da view V$ARCHIVE _DEST_STATUS.
VERIFICACAO ROLE STANDBY
• Verificação de GAPs através da view V$ARCHIVE_GAP.
• Verificação por status de GAP – (WAIT_FOR_GAP) através da view V$MANAGED_STANDBY.
• Verificação de Recovery Mode na view V$ARCHIVE_DEST_STATUS. MANAGED REAL TIME APPLY ou MANAGED.
• Verificação de ArchiveLog Deletion Policy através da view V$RMAN_CONFIGURATION (TO APPLIED ON STANDBY)
VERIFICACAO GENÉRICA PARA AMBOS (PRIMARY e PHYSICAL STANDBY)
• Mensagens de erro através da view V$DATAGUARD_STATUS (ERROR, FATAL) e CALLOUTs.
• Verificação do modo FORCE LOGGING habilitado através da view V$DATABASE.