Monitorando a alta disponibilidade e resiliência do site

 

Aplica-se a: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Tópico modificado em: 2015-03-09

Garantir que seus servidores estejam operando confiavelmente e que suas cópias de bancos de dados sejam íntegras são os principais objetivos das operações diárias de mensagens. Para ajudar a garantir a disponibilidade e a confiabilidade da sua organização do Microsoft Exchange Server 2010, você deve monitorar ativamente o hardware, o sistema operacional Windows e os serviços do Exchange 2010. Monitoramento proativo combinado com manutenção preventiva pode ajudá-lo a identificar possíveis erros antes que um problema sério interfira na operação da sua organização do Exchange.

Monitorar sua organização do Exchange envolve verificação regular em busca de problemas com os serviços ou dados. O monitoramento normalmente também inclui um sistema de notificação que envia alertas quando problemas ocorrem. O Windows Server 2008 e o Exchange 2010 incluem várias ferramentas e serviços para ajudar a garantir que sua organização do Exchange esteja funcionando sem problemas. As principais vantagens do monitoramento diário são:

  • Atender aos requisitos dos seus SLAs (acordos de nível de serviço)

  • Garantir a conclusão bem sucedida de tarefas administrativas específicas, como operações diárias de backup

  • Detectar e endereçar problemas, como aqueles que podem afetar o serviço de mensagens ou a disponibilidade dos dados

Dentro de uma organização do Exchange 2010, os procedimentos, as funções e as responsabilidades envolvidas em operações devem ser formalizadas. É importante entender a conexão entre as práticas e os procedimentos operacionais benéficos e uma infraestrutura adequada.. Os processos e procedimentos operacionais completos e bem documentados ajudam a garantir que todos os componentes no ambiente de uma organização do qual o Exchange depende sejam gerenciados de forma eficiente e efetiva.

O Exchange 2010 inclui várias ferramentas, scripts e recursos internos que podem ser usados como parte do monitoramento proativo regular quando o Exchange está configurado para alta disponibilidade ou resiliência de site. Os principais cmdlets de monitoramento para alta disponibilidade e resiliência do site são Get-MailboxDatabaseCopyStatus e Test-ReplicationHealth. Além de fornecer cmdlets que podem executar funções de monitoramento e reportar status, o Exchange 2010 também oferece um novo fluxo de log de eventos que aproveita as funcionalidades do canal crimson no Windows Server, além de scripts internos que podem coletar e analisar dados desses canais de eventos.

Você pode usar os detalhes deste tópico para monitorar a integridade e o status de cópias de bancos de dados de caixa de correio para grupos de disponibilidade de banco de dados (DAGs).

Sumário

Cmdlet Get-MailboxDatabaseCopyStatus

Cmdlet Test-ReplicationHealth

Log de Eventos do Canal Crimson

Script CollectOverMetrics.ps1

Script CollectReplicationMetrics.ps1

Script CheckDatabaseRedundancy.ps1

Cmdlet Get-MailboxDatabaseCopyStatus

Você pode usar o cmdlet Get-MailboxDatabaseCopyStatus para visualizar informações de status sobre cópias de bancos de dados de caixa de correio. Este cmdlet permite que você visualize informações sobre todas as cópias de um banco de dados em particular, informações sobre uma cópia específica de um banco de dados em um servidor específico, ou informações sobre todas as cópias de bancos de dados em um servidor. A tabela a seguir descreve os valores possíveis para o status de cópia de uma cópia de banco de dados de caixa de correio.

Status da cópia do banco de dados

Status da cópia do banco de dados Descrição

Falha

A cópia do banco de dados de caixa de correio está no estado de Falha porque não está suspensa, e ainda não pode copiar ou reproduzir arquivos de log. Enquanto estiver no estado de Falha e não estiver suspensa, o sistema verificará periodicamente se o problema que causou a alteração do status da cópia para Falha foi resolvido. Depois de o sistema detectar que o problema está resolvido, e de não encontrar outros problemas, o status da cópia automaticamente será alterado para Íntegra.

Propagação

A cópia do banco de dados de caixa de correio está sendo propagada, o índice de conteúdo para a cópia do banco de dados de caixa de correio está sendo propagado, ou ambos estão sendo propagados. Depois da conclusão bem-sucedida da propagação, o status de cópia deve mudar para Inicializando.

SeedingSource

A cópia do banco de dados de caixa do correio está sendo usada como uma fonte de uma operação de propagação de cópia de banco de dados.

Suspensa

A cópia do banco de dados de caixa de correio está no estado Suspensa como resultado de um administrador ter suspendido manualmente a cópia do banco de dados, executando o cmdlet Suspend-MailboxDatabaseCopy.

Íntegra

A cópia do banco de dados de caixa de correio está copiando e reproduzindo arquivos de log com sucesso, ou copiou e reproduziu com sucesso todos os arquivos de log disponíveis.

ServiceDown

O serviço de Replicação do Microsoft Exchange está indisponível ou está sendo executado no servidor que hospeda a cópia do banco de dados de caixa de correio.

Inicializando

A cópia do banco de dados de caixa de correio estará no estado Inicializando quando uma cópia de banco de dados for criada, quando o serviço de Replicação do Microsoft Exchange estiver iniciando ou tiver iniciado recentemente e durante as transições de Suspensa, ServiceDown, Falha, Propagação, SinglePageRestore, LostWrite, ou Desconectada para outro estado. Neste estado, o sistema está verificando se o banco de dados e o fluxo de log estão em um estado consistente. Na maioria dos casos, o status da cópia permanecerá no estado Inicializando por aproximadamente 15 segundos, mas em todos os casos geralmente não deve ficar neste estado por mais de 30 segundos.

Ressincronizando

A cópia do banco de dados de caixa de correio e seus arquivos de log estão sendo comparados com a cópia ativa do banco de dados para verificar se há divergência entre as duas cópias. O status da cópia permanecerá neste estado até que alguma divergência seja detectada e resolvida.

Montada

A cópia ativa está online e aceitando conexões de clientes. Apenas a cópia ativa da cópia do banco de dados de caixa de correio pode ter o status de cópia Montada.

Desmontada

A cópia ativa está offline e não aceita conexões de clientes. Apenas a cópia ativa da cópia do banco de dados de caixa de correio pode ter o status de cópia Desmontada.

Montando

A cópia ativa está sendo colocada online e ainda não aceita conexões de clientes. Apenas a cópia ativa da cópia do banco de dados de caixa de correio pode ter o status de cópia Montando.

Desmontando

A cópia ativa está sendo colocada offline e está encerrando as conexões de clientes. Apenas a cópia ativa da cópia do banco de dados de caixa de correio pode ter o status de cópia Desmontando.

DesconectadaEÍntegra

A cópia do banco de dados de caixa de correio não está mais conectada à cópia ativa do banco de dados e estava no estado Íntegra quando a perda da conexão aconteceu. Este estado representa a cópia do banco de dados em relação à conectividade com sua cópia de banco de dados de origem. Pode ser informado durante falhas de rede do DAG entre a cópia de origem e a cópia de banco de dados de destino.

DesconectadaERessincronizando

A cópia do banco de dados de caixa de correio não está mais conectada à cópia ativa do banco de dados e estava no estado Ressincronizando quando a perda da conexão aconteceu. Este estado representa a cópia do banco de dados em relação à conectividade com sua cópia de banco de dados de origem. Pode ser informado durante falhas de rede do DAG entre a cópia de origem e a cópia de banco de dados de destino.

FalhaESuspensa

Os estados Falha e Suspensa foram definidos simultaneamente pelo sistema porque uma falha foi detectada, e porque a resolução da falha explicitamente exige a intervenção do administrador. Um exemplo é se o sistema detectar divergências irreversíveis entre o banco de dados de caixa de correio ativo e a cópia do banco de dados. Diferente do estado Falha, o sistema não verificará periodicamente se o problema foi resolvido e não recuperará automaticamente. Ao invés disso, um administrador deve intervir para resolver a causa da falha subjacente antes que a cópia do banco de dados possa passar para um estado de integridade.

SinglePageRestore

Este estado indica que uma operação de restauração de página única está ocorrendo na cópia do banco de dados de caixa de correio.

O cmdlet Get-MailboxDatabaseCopyStatus também inclui um parâmetro chamado ConnectionStatus, que retorna detalhes sobre as redes de replicação em uso. Se este parâmetro for utilizado, dois campos de saída adicionais, IncomingLogCopyingNetwork e SeedingNetwork, serão preenchidos na saída da tarefa.

Exemplos de Get-MailboxDatabaseCopyStatus

Os exemplos seguintes usam o cmdlet Get-MailboxDatabaseCopyStatus. Cada exemplo redireciona os resultados para o cmdlet Format-List para exibir a saída em formato de lista.

Este exemplo retorna informações de status para todas as cópias do banco de dados DB2.

Get-MailboxDatabaseCopyStatus -Identity DB2 | Format-List

Este exemplo retorna o status para todas as cópias de banco de dados no servidor de Caixa de Correio MBX2.

Get-MailboxDatabaseCopyStatus -Server MBX2 | Format-List

Este exemplo retorna o status para todas as cópias de banco de dados no servidor de Caixa de Correio local.

Get-MailboxDatabaseCopyStatus -Local | Format-List

Este exemplo retorna as informações de status, envio de logs e rede de propagação para o banco de dados DB3 no servidor de Caixa de Correio MBX1.

Get-MailboxDatabaseCopyStatus -Identity DB3\MBX1 -ConnectionStatus | Format-List

Para mais informações sobre o uso do cmdlet Get-MailboxDatabaseCopyStatus, consulte Get-MailboxDatabaseCopyStatus.

Cmdlet Get-MailboxDatabaseCopyStatus

Cmdlet Test-ReplicationHealth

Você pode usar o cmdlet Test-ReplicationHealth para visualizar informações de status da replicação contínua sobre cópias de bancos de dados de caixa de correio. Este cmdlet pode ser usado para verificar todos os aspectos do status da replicação e da reprodução para fornecer uma visão geral completa de um servidor de Caixa de Correio em um DAG.

O cmdlet Test-ReplicationHealth é projetado para o monitoramento proativo da replicação contínua e do pipeline de replicação contínua, da disponibilidade do Active Manager e da integridade e status do serviço de cluster, quorum e componentes de rede subjacentes. Pode ser executado local ou remotamente em qualquer servidor de Caixa de Correio em um DAG. O cmdlet Test-ReplicationHealth executa os testes descritos na tabela a seguir.

Testes do cmdlet Test-ReplicationHealth

Nome do teste Descrição

ClusterService

Verifica se o serviço de Cluster está em execução e acessível no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

ReplayService

Verifica se o serviço de Replicação do Microsoft Exchange está em execução e acessível no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

ActiveManager

Verifica se a instância do Active Manager em execução no membro especificado do DAG (ou, se nenhum membro do DAG estiver especificado, no servidor local) está em uma função válida (primária, secundária ou autônoma).

TasksRpcListener

Verifica se o servidor de tarefas de chamada de procedimento remoto (RPC) está em execução e acessível no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

TcpListener

Verifica se o ouvinte da cópia do log do TCP está em execução e acessível no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

DagMembersUp

Verifica se todos os membros do DAG estão disponíveis, em execução e acessíveis.

ClusterNetwork

Verifica se todas as redes gerenciadas por cluster no membro do DAG especificado (ou, se nenhum membro do DAG estiver especificado, no servidor local) estão disponíveis.

QuorumGroup

Verifica se o grupo de cluster padrão (grupo de quorum) está em um estado íntegro e online.

FileShareQuorum

Verifica se o servidor testemunha e o diretório testemunha e o compartilhamento configurado para DAG estão acessíveis.

DBCopySuspended

Verifica se alguma cópia de banco de dados de caixa de correio está no estado Suspensa no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

DBCopyFailed

Verifica se alguma cópia de banco de dados de caixa de correio está no estado Falha no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

DBInitializing

Verifica se alguma cópia de banco de dados de caixa de correio está no estado Inicializando no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

DBDisconnected

Verifica se alguma cópia de banco de dados de caixa de correio está no estado Desconectada no membro do DAG especificado ou, se nenhum membro do DAG estiver especificado, no servidor local.

DBLogCopyKeepingUp

Verifica se a cópia e inspeção de log pelas cópias passivas de bancos de dados no membro do DAG especificado (ou, se nenhum membro do DAG estiver especificado, no servidor local) estão aptas para prosseguir com a atividade de geração de log na cópia ativa.

DBLogReplayKeepingUp

Verifica se a atividade de reprodução para as cópias passivas de bancos de dados no membro do DAG especificado (ou, se nenhum membro do DAG estiver especificado, no servidor local) está apta para prosseguir com a atividade de cópia e inspeção de log.

Exemplo de Test-ReplicationHealth

Este exemplo usa o cmdlet Test-ReplicationHealth para testar a integridade da replicação para o servidor de Caixa de Correio MBX1.

Test-ReplicationHealth -Identity MBX1

Cmdlet Get-MailboxDatabaseCopyStatus

Log de Eventos do Canal Crimson

O Windows Server 2008 inclui duas categorias de logs de eventos: Logs do Windows e logs de Aplicativos e Serviços. A categoria de logs do Windows inclui os logs de eventos disponíveis nas versões anteriores do Windows: Logs de eventos de Aplicativo, Segurança e Sistema. Também inclui dois novos logs: o log de Instalação e log ForwardedEvents. Os logs Windows têm por objetivo armazenar eventos de aplicativos e eventos herdados que se aplicam a todo o sistema.

Logs de Aplicativos e Serviços são uma categoria nova de logs de eventos. Estes logs armazenam eventos de um único aplicativo ou componente, ao invés de eventos que possam ter impacto em todo o sistema. Esta nova categoria de logs de eventos é referenciada como um canal crimson do aplicativo.

A categoria de logs de Aplicativos e Serviços inclui quatro subtipos: Logs Admin, Operacional, Analítico e Depuração. Os eventos nos logs Admin são de particular interesse se você usa os registros do log de eventos para solucionar problemas. Os eventos no log Admin devem fornecer orientação sobre como responder aos eventos. Os eventos no log Operacional também são úteis, mas podem exigir mais interpretação. Os logs Admin e Depuração não são tão amigáveis. Os logs Analíticos (que por padrão estão ocultos e desabilitados) armazenam eventos que rastreiam um problema, e geralmente um alto volume de eventos é registrada. Logs de Depuração são usados por desenvolvedores quando depuram aplicativos.

O Exchange 2010 registra eventos no canal crimson na área de logs de Aplicativos e Serviços. Você pode exibir esses canais executando estas etapas:

  1. Abra o Visualizador de Eventos.

  2. Na árvore do console, navegue até Logs de Aplicativos e Serviços > Microsoft > Exchange.

  3. Em Exchange, selecione um canal crimson: HighAvailability ou MailboxDatabaseFailureItems.

O canal HighAvailability contém eventos relacionados à inicialização e desligamento do serviço de Replicação do Microsoft Exchange, e os vários componentes executados dentro do serviço de Replicação do Microsoft Exchange, como o Active Manager, a API da replicação síncrona de terceiros, o servidor de tarefas RPC, o ouvinte de TCP e o gravador do Serviço de Cópias de Sombra de Volume (VSS). O canal HighAvailability também é usado pelo Active Manager para registrar eventos relacionados ao monitoramento de funções do Active Manager e eventos de ação de banco de dados, como uma operação de montagem de banco de dados e truncamento de log, e para registrar eventos relacionados ao cluster subjacente do DAG.

O canal MailboxDatabaseFailureItems é usado para registrar eventos associados a qualquer falha que afete um banco de dados de caixa de correio replicado.

Cmdlet Get-MailboxDatabaseCopyStatus

Script CollectOverMetrics.ps1

O Exchange 2010 inclui um script chamado CollectOverMetrics.ps1, que pode ser encontrado na pasta Scripts. CollectOverMetrics.ps1 lê logs de eventos de membros do DAG para reunir informações sobre operações de banco de dados  (como montagens, movimentações e failovers de banco de dados) abrangendo um período de tempo específico. Para cada operação, o script retorna as seguintes informações:

  • Identidade do banco de dados

  • Hora de início e término da operação

  • Servidores em que o banco de dados estava montado no início e no término da operação

  • Motivo para a operação

  • Se a operação foi bem-sucedida, incluindo os detalhes de erros no caso de falha da operação

O script grava essas informações em arquivos .csv com uma operação por fila. Ele grava um arquivo .csv separado para cada DAG.

O script suporta parâmetros que permitem personalizar seu comportamento e sua saída. Por exemplo, os resultados podem ser restritos a um subconjunto especificado usando os parâmetros Database ou ReportFilter. Somente as operações que correspondem a esses filtros serão incluídas no relatório HTML do resumo. Os parâmetros disponíveis estão listados na tabela a seguir.

Parâmetros do script CollectOverMetrics.ps1

Parâmetro Descrição

DatabaseAvailabilityGroup

Especifica o nome do DAG do qual você deseja coletar métricas. Se este parâmetro for omitido, o DAG do qual o servidor local é membro será usado. Caracteres curinga podem ser usados para coletar informações e gerar relatórios sobre vários DAGs.

Database

Fornece uma lista de bancos de dados para os quais o relatório precisa ser gerado. Há suporte para caracteres curinga, por exemplo, -Database:"DB1","DB2" ou -Database:"DB*".

StartTime

Especifica a duração do período de tempo a relatar. O script coleta somente os eventos registrados durante esse período. Como resultado, o script pode capturar registros parciais da operação (por exemplo, apenas o final de uma operação no início do período ou vice-versa). Se nem StartTime nem EndTime forem especificados, o script adotará como padrão as últimas 24 horas. Se apenas um parâmetro for especificado, o período será de 24 horas, começando ou terminando no horário especificado.

EndTime

Especifica a duração do período de tempo a relatar. O script coleta somente os eventos registrados durante esse período. Como resultado, o script pode capturar registros parciais da operação (por exemplo, apenas o final de uma operação no início do período ou vice-versa). Se nem StartTime nem EndTime forem especificados, o script adotará como padrão as últimas 24 horas. Se apenas um parâmetro for especificado, o período será de 24 horas, começando ou terminando no horário especificado.

ReportPath

Especifica a pasta usada para armazenar os resultados do processamento de eventos. Se este parâmetro for omitido, a pasta Scripts será usada. Quando especificado, o script usa uma lista de arquivos .csv gerados por ele como dados de origem para gerar um relatório HTML resumido. O relatório é o mesmo que é gerado com a opção -GenerateHtmlReport. Os arquivos podem ser gerados abrangendo vários grupos de disponibilidade de banco de dados em muitos períodos de tempo diferentes, ou mesmo com horários sobrepostos. O script mescla todos esses dados.

GenerateHtmlReport

Especifica que o script colete todas as informações que gravou, agrupe os dados pelo tipo de operação e gere um arquivo HTML que inclua estatísticas para cada um desses grupos. O relatório inclui o número total de operações em cada grupo, o número de operações que falharam e estatísticas sobre o tempo gasto em cada grupo. O relatório também detalha os tipos de erros que resultaram em falha nas operações.

ShowHtmlReport

Especifica que o relatório gerado em HTML deve ser exibido em um navegador Web depois de ser gerado.

SummariseCSVFiles

Especifica que o script leia os dados de arquivos .csv existentes que foram gerados anteriormente por ele. Em seguida, esses dados são usados para gerar um relatório resumido semelhante ao relatório gerado pelo parâmetro GenerateHtmlReport.

ActionType

Especifica o tipo de ações operacionais que o script deve coletar. Os valores válidos para esse parâmetro são Move, Mount, Dismount e Remount. O valor Move refere-se a qualquer horário em que o banco de dados altera seu servidor ativo, seja por movimentos controlado ou por failovers. Os valores Mount, Dismount e Remount referem-se aos horários em que o banco de dados altera seu status de montagem sem ser movido para outro computador.

ActionTrigger

Especifica quais operações administrativas devem ser coletadas pelo script. Os valores válidos para esse parâmetro são Admin ou Automatic. Ações automáticas são aquelas executadas automaticamente pelo sistema (por exemplo, um failover quando um servidor fica offline). Ações administrativas são ações que foram executadas por um administrador usando o Shell de Gerenciamento do Exchange ou o Console de Gerenciamento do Exchange.

RawOutput

Especifica que o script grave os resultados que teriam sido gravados em arquivos .csv diretamente no fluxo de saída, como aconteceria com write-output. Essas informações podem ser canalizadas para outros comandos.

IncludedExtendedEvents

Especifica que o script colete os eventos que fornecem detalhes de diagnóstico do tempo gasto montando bancos de dados. Esse pode ser um estágio muito demorado se o log de eventos de Aplicativo nos servidores for muito grande.

MergeCSVFiles

Especifica que o script mescle todos os arquivos .csv contendo dados sobre cada operação em um único arquivo .csv.

ReportFilter

Especifica que um filtro deve ser aplicado às operações, usando os campos que aparecem nos arquivos .csv. Esse parâmetro usa o mesmo formato de uma operação Where, com cada elemento definido como $_ e retornando um valor booleano. Por exemplo: {$_DatabaseName -notlike "Mailbox Database*"} pode ser usado para excluir os bancos de dados padrão do relatório.

Exemplos de CollectOverMetrics.ps1

O seguinte exemplo coleta métricas para todos os bancos de dados que correspondem a DB* (o que inclui um caractere curinga) em um DAG denominado DAG1. Depois da coleta das métricas, um relatório HTML é gerado e exibido.

CollectOverMetrics.ps1 -DatabaseAvailabilityGroup DAG1 -Database:"DB*" -GenerateHTMLReport -ShowHTMLReport

Os seguintes exemplos demonstram maneiras de filtrar o relatório HTML resumido. O primeiro usa o parâmetro Database, que recebe uma lista de nomes de bancos de dados. O relatório resumido resultante conterá dados apenas sobre esses bancos de dados. Os dois próximos exemplos usam a opção ReportFilter. O último exemplo filtra todos os bancos de dados padrão.

CollectOverMetrics -SummariseCsvFiles (dir *.csv) -Database MailboxDatabase123,MailboxDatabase456
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { $_.DatabaseName -notlike "Mailbox Database*" }
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { ($_.ActiveOnStart -like "ServerXYZ*") -and ($_.ActiveOnEnd -notlike "ServerXYZ*") }

Cmdlet Get-MailboxDatabaseCopyStatus

Script CollectReplicationMetrics.ps1

CollectReplicationMetrics.ps1 é outro script de métrica de integridade incluído no Exchange 2010. Esse script fornece uma forma ativa de monitoramento, porque coleta métricas em tempo real, enquanto o script é executado. CollectReplicationMetrics.ps1 coleta dados de contadores de desempenho relacionados à replicação de banco de dados. O script reúne dados de contador de vários servidores de Caixa de Correio, grava os dados de cada servidor em um arquivo .csv e pode então relatar diferentes estatísticas abrangendo todos esses dados (por exemplo, por quanto tempo cada cópia falhou ou foi suspensa, o comprimento médio da fila de cópia ou de repetição ou quanto tempo as cópias permaneceram fora de seus critérios de failover).

Você pode especificar os servidores individualmente ou DAGs inteiros. Você pode ou executar o script para coletar primeiro os dados e depois gerar o relatório, ou pode executá-lo apenas para coletar os dados ou para apenas para gerar um relatório sobre os dados que já foram coletados. É possível especificar a frequência de amostragem dos dados e a duração total da coleta de dados.

Os dados coletados de cada servidor são gravados em um arquivo chamado CounterData.<ServerName>.<TimeStamp>.csv. O relatório de resumo será gravado em um arquivo chamado HaReplPerfReport.<NomeDoDAG>.<TimeStamp>.csv, ou HaReplPerfReport.<TimeStamp>.csv caso o script não tenha sido executado com o parâmetro DagName.

O script inicia trabalhos de PowerShell para coletar os dados de cada servidor. Esses trabalhos são executados durante todo o período em que os dados estão sendo coletados. Se você especificar um grande número de servidores, esse processo pode usar uma quantidade considerável de memória. O estágio final do processo, quando os dados são processados em um relatório resumido, também pode ser bastante demorado para grandes quantidades de dados. É possível executar o estágio de coleta em um computador e depois copiar os dados para outro local para processamento.

O script CollectReplicationMetrics.ps1 suporta parâmetros que permitem personalizar seu comportamento e sua saída. Os parâmetros disponíveis estão listados na tabela a seguir.

Parâmetros do script CollectReplicationMetrics

Parâmetro Descrição

DagName

Especifica o nome do DAG do qual você deseja coletar métricas. Se esse parâmetro for omitido, o DAG do qual o servidor local é membro será usado.

DatabaseNames

Fornece uma lista de bancos de dados para os quais o relatório precisa ser gerado. Há suporte para caracteres curinga, por exemplo, -DatabaseNames:"DB1","DB2" ou -DatabaseNames:"DB*".

ReportPath

Especifica a pasta usada para armazenar os resultados do processamento de eventos. Se esse parâmetro for omitido, a pasta Scripts será usada.

Duration

Especifica a quantidade de tempo em que o processo de coleta deve ser executado. Os valores típicos seriam de uma a três horas. Durações maiores devem ser usadas somente com longos intervalos entre cada amostra ou como uma série de trabalhos mais curtos executados por tarefas agendadas.

Frequency

Especifica a freqüência na qual as métricas de dados são coletadas. Os valores típicos seriam de 30 segundos, um minuto ou cinco minutos. Sob circunstâncias normais, intervalos mais curtos que esses não mostrarão mudanças significativas entre cada amostra.

Servers

Especifica a identidade dos servidores dos quais serão coletadas estatísticas. É possível especificar qualquer valor, incluindo caracteres curinga ou GUIDs.

SummariseFiles

Especifica uma lista de arquivos .csv para gerar um relatório resumido. Esses são os arquivos chamados CounterData.<CounterData>* gerados pelo script CollectReplicationMetrics.ps1.

Mode

Especifica os estágios de processamento que o script executa. É possível usar os seguintes valores:

  • CollectAndReport   Esse é o valor padrão. Esse valor significa que o script deve coletar os dados dos servidores e depois processá-los para produzir o relatório resumido.

  • CollectOnly   Esse valor significa que o script deve apenas coletar os dados e não produzir o relatório.

  • ProcessOnly   Esse valor significa que o script deve importar os dados de um conjunto de arquivos .csv e processá-los para produzir o relatório resumido. O parâmetro SummariseFiles é usado para fornecer ao script a lista de arquivos para serem processados.

MoveFilestoArchive

Especifica que o script deve mover os arquivos para uma pasta compactada após o processamento.

LoadExchangeSnapin

Especifica que o script deve carregar os comandos de Shell do Exchange. Esse parâmetro é útil quando o script precisa ser executado de fora do Shell de Gerenciamento do Exchange, como em uma tarefa agendada.

Exemplo de CollectReplicationMetrics.ps1

O seguinte exemplo coleta dados correspondentes a uma hora de todos os servidores no DAG "DAG1", amostrados em intervalos de um minuto, e gera um relatório resumido. Além disso, o parâmetro ReportPath é usado, o que faz com que o script coloque todos os arquivos no diretório atual.

CollectReplicationMetrics.ps1 -DagName DAG1 -Duration "01:00:00" -Frequency "00:01:00" -ReportPath

O seguinte exemplo lê os dados de todos os arquivos que correspondem a "CounterData*" e gera um relatório resumido.

CollectReplicationMetrics.ps1 -SummariseFiles (dir CounterData*) -Mode ProcessOnly -ReportPath

Cmdlet Get-MailboxDatabaseCopyStatus

Script CheckDatabaseRedundancy.ps1

Como seu nome sugere, a finalidade do script CheckDatabaseRedundancy.ps1 script é monitorar a redundância de bancos de dados de caixa de correio replicados, confirmando que há pelo menos duas cópias configuradas, íntegras e atualizadas, e alertar quando só existe uma cópia íntegra de um banco de dados replicado. Nesse caso, tanto cópias ativas como passivas são contadas ao determinar a redundância.

Quando a função de servidor Caixa de Correio é instalada, o script CheckDatabaseRedundancy.ps1 é configurado automaticamente pelo Exchange para ser executado como uma tarefa agendada chamada de Alerta de Cópia de Banco de Dados Um. Por padrão, a tarefa agendada do Alerta de Cópia de Banco de Dados Um é configurada para ser executada a cada 60 minutos. Você pode modificar esse comportamento e as configurações de tarefa agendada usando o Agendador de Tarefas do Windows. O script é projetado para a primeira verificação de associação do DAG, por isso, se o servidor de Caixa de Correio não é membro de um DAG, o script é encerrado imediatamente.

O script também pode ser executado interativamente a partir da pasta de scripts. Ao executar o script interativamente, você deve especificar um nome de banco de dados ou um nome de membro de DAG. Para especificar um banco de dados você usa o parâmetro MailboxDatabaseName e para especificar um membro de DAG o parâmetro MailboxServerName. Quando executado de modo interativo no console, o script executa a verificação de redundância apenas uma vez e produz a saída de CurrentState (vermelho ou verde) na tela.

Como outros scripts e cmdlets, CheckDatabaseRedundancy.ps1 também pode ser executado no modo de monitoramento e gerar eventos com a adição do parâmetro MonitoringContext. A tarefa agendada criada pelo Exchange executa o script em modo de monitoração. Esse modo também permite que o script seja invocado por uma solução de monitoramento, como o Microsoft System Center Operations Manager (SCOM). No modo de monitoramento, o script gera eventos de alerta vermelho e verde no log de eventos de Aplicativo do servidor local. Um evento de alerta vermelho (ID do evento 4113) é gerado apenas se o banco de dados tiver permanecido em estado “vermelho” por 20 minutos ou mais (duração total, não consecutiva) durante uma hora de execução do script, e um evento de alerta verde (ID do evento 4114) quando o banco de dados tiver permanecido em estado “verde” por 10 minutos consecutivos. Por padrão, quando um evento de alerta vermelho é gerado, ele continua a ser relatado a cada 15 minutos.

Além disso, o script possui algumas outras opções úteis. Por exemplo, é possível adicionar o parâmetro ShowDetailedErrors para obter maiores detalhes sobre quaisquer erros que ocorram e o parâmetro Verbose para obter informações adicionais para solução de problemas. O script também inclui um parâmetro SendSummaryMailTos que pode ser usado para enviar, após sua execução, um relatório resumido por email para uma lista de endereços de email especificados. Isso permite que administradores examinem rapidamente os relatórios a cada hora para ver se ocorreu algum problema de redundância. Se você usar a funcionalidade do email, precisará incluir o parâmetro SummaryMailFrom sempre que usar o parâmetro SendSummaryMailTos.

A Microsoft recomenda executar esse script regularmente como parte de suas operações de monitoramento normais, usando a tarefa automática agendada ou um sistema de monitoramento, como o SCOM. Para assegurar que a redundância do banco de dados não permaneça comprometida por longos períodos de tempo, execute o script a cada 60 minutos. O script inclui um parâmetro chamado TerminateAfterDurationSecs que, quando definido como -1 ou 0 ao executar o script, pode ser usado para executá-lo por uma período de tempo infinito.

Se você não estiver executando uma solução de monitoramento como o SCOM, recomendamos que permita a tarefa criada automaticamente para automatizar e agendar a execução do script.

Há problemas conhecidos no Agendador de Tarefas do Windows Server 2008 SP2 que podem fazer com que o Agendador de Tarefas falhe quando você tiver agendado uma tarefa de execução demorada. Estas questões não existem no Windows Server 2008R2; Assim, se possível, execute o script a partir de Windows Server 2008R2. Se você não puder executar o script a partir do Windows Server 2008 R2 e você estiver executando-o do Windows Server 2008 SP2, recomendamos duas modificações. Primeiro, em vez de executar o script com sua supressão transitória interna de 60 minutos, execute o script a cada 5 minutos usando os seguintes parâmetros:

CheckDatabaseRedundancy.ps1 -MonitoringContext -SleepDurationBetweenIterationsSecs:0 -TerminateAfterDurationSecs:1 -SuppressGreenEventForSecs:0 -ReportRedEventAfterDurationSecs:0 -ReportRedEventIntervalSecs:0 -ShowDetailedErrors

Segundo, se possível, use o SCOM para definir o comportamento de supressão transitória (por exemplo, se 3 eventos de alerta vermelho forem registrados em um período de 20 minutos, gerar um alerta; e se um evento de alerta verde for registrado, alterar CurrentState para verde).

Se a tarefa agendada do Alerta de Cópia de Banco de Dados Um é alterado ou removida, você pode excluir e reagendar executando o comando a seguir:

schtasks /create /TN "Check Database Redundancy" /TR "Powershell.exe -NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; 'C:\Program Files\Microsoft\Exchange Server\V14\Scripts\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue" /RU SYSTEM /SC HOURLY

Substitua os parâmetros no script acima pelos parâmetros de script que desejar usar. Os parâmetros adicionais para o script também são descritos no script.

Ao usar a ferramenta de linha de comando schtasks para criar uma tarefa agendada, a opção /TR é limitada a 261 caracteres. O exemplo acima excede esse limite. Se os parâmetros e caminhos usados fizerem com que a opção /TR exceda 261 caracteres, você terá que criar manualmente a tarefa agendada usando o miniaplicativo Agendador de Tarefas no menu Ferramentas Administrativas. Alternativamente, é possível copiar e colar o seguinte XML no Bloco de Notas, editá-lo adequadamente, salvá-lo como um arquivo XML e importá-lo usando o miniaplicativo Agendador de Tarefas.

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="https://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2010-05-11T15:55:47</Date>
    <Author>administrator</Author>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <Repetition>
        <Interval>PT1H</Interval>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2010-05-11T15:55:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>SYSTEM</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>Powershell.exe</Command>
      <Arguments>-NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Operations\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue</Arguments>
    </Exec>
  </Actions>
</Task>

Cmdlet Get-MailboxDatabaseCopyStatus

 © 2010 Microsoft Corporation. Todos os direitos reservados.