monitoramento de serviços de bancos de dados - nagios

Post on 17-Dec-2014

1.351 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Monitoramento de serviços de bancos de dados SQL Server e Oracle usando o Nagios

TRANSCRIPT

Monitoramentode

serviços de bancos de dados(Oracle, SQL Server)

Eduardo LegattiDatabase Administrator

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.)

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.

Visão Geral do NagiosNagios é 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

Visão Geral do Nagios

Arquivos de Configuração

Estrutura Básica

Status dos Hosts

Status dos Hosts

Status dos Hosts

Status dos Hosts

Status dos Serviços

Status dos Serviços

Status dos Serviços

Status dos Serviços

Status dos Serviços

Status dos Serviços

Status dos Serviços

Status dos Serviços

Notificações

Notificações

Google Talk / Hangout

NotificaçõesSMS

NotificaçõesEmail

Notificações

Nagios PluginsSQL Server

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.

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.

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.

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.

Monitoramento - SQL ServerAcompanhamento da instância através de monitoramentos específicos em intervalos de tempo

Nagios PluginsOracle

Plugins - Oracle

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

Plugins - OracleOracle 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).

Plugins - OracleOracle 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}

Plugins - OracleOracle 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}

Plugins - OracleOracle 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}

Plugins - OracleOracle 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).

Plugins - OracleOracle 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}

Plugins - OracleOracle 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 <= 95and (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}

Plugins - OracleOracle 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')

Plugins - OracleOracle 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

Plugins - OracleOracle 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.

Monitoramento - OracleAcompanhamento da instância através de monitoramentos específicos em intervalos de tempo

Obrigado!

top related