Arquitetura e processamento do coletor de dados

O coletor de dados é integrado ao SQL Server Agent e ao Integration Services e usa-os intensivamente. Antes de trabalhar com o coletor de dados, você precisa entender determinados conceitos relacionados a cada um desses componentes do SQL Server.

O SQL Server Agent é usado para programar e executar trabalhos de coleção. Você precisa entender os seguintes conceitos:

  • Trabalho

  • Etapa do trabalho

  • Agenda do trabalho

  • Subsistema

  • Contas Proxy

Para obter mais informações, consulte Automatizando tarefas administrativas (SQL Server Agent).

O Integration Services (SSIS) é usado para executar pacotes que coletam dados de provedores de dados individuais. Você precisa estar familiarizado com as seguintes ferramentas e conceitos do SSIS:

  • Pacote SSIS

  • Configurações de pacote SSIS

Para obter mais informações, consulte Pacotes do Integration Services.

Arquitetura do coletor de dados

A ilustração a seguir mostra o modelo de arquitetura para coleta e armazenamento de dados.

Arquitetura do coletor de dados

Conforme exibido na ilustração, os componentes do modelo são agrupados nas seguintes categorias:

  • Os componentes de armazenamento são bancos de dados que contêm informações de configuração e os dados coletados.

  • Os componentes de execução são usados para coleção e armazenamento de dados.

  • Os componentes API são usados para habilitar a interação entre as interfaces do usuário e o coletor de dados.

  • Os componentes clientes são as interfaces de usuário para o coletor de dados.

As seções a seguir fornecem mais detalhes sobre estas categorias e componentes.

Armazenamento

O coletor de dados armazena dados em dois locais: no banco de dados msdb e no data warehouse de gerenciamento.

ObservaçãoObservação

O coletor de dados implementa a separação de esquema de usuário que foi introduzida no SQL Server 2005. Para obter mais informações, consulte Separação do esquema de usuário.

Banco de dados msdb do sistema

O coletor de dados usa o banco de dados msdb para armazenar informações de configuração, de tempo de execução, de auditoria e de histórico de coleta. Este banco de dados deve estar presente na instância do SQL Server que executa o coletor de dados. O uso do msdb fornece os seguintes benefícios:

  • Todos os dados necessários para configurar e executar o coletor de dados estão em um local.

  • A configuração de coleta de dados pode ser implantada por vários servidores sem precisar usar o sistema de arquivos.

  • O coletor de dados pode usar os mecanismos de segurança existentes no SQL Server para proteger os dados. Além disso, as funções de banco de dados podem fornecer segurança granular e não há necessidade de implementar encadeamento de banco de dados cruzado.

  • Considerando que o msdb é um banco de dados relacional, é possível assegurar a integridade referencial dos dados de configuração e em tempo de execução.

Além de armazenar informações específicas do coletor, o msdb é usado também para armazenar informações de trabalho do SQL Server Agent e informações do pacote SSIS.

Configuração de coleta de dados

As tabelas e exibições relacionadas à configuração de coleta de dados incluem informações sobre conjuntos de coletas, tipos de coletores e itens de coleta. As tabelas e as exibições também contêm parâmetros do coletor de dados globais, como o local do data warehouse de gerenciamento. As funções de banco de dados do coletor de dados e do data warehouse de gerenciamento também são armazenadas aqui. Para obter mais informações sobre as colunas de cada exibição da configuração da coleta de dados, consulte Exibições do Coletor de Dados (Transact-SQL).

Observação importanteImportante

Não modifique os dados das tabelas de configuração. Os dados dessas tabelas devem ser inseridos, atualizados e excluídos de maneiras específicas impostas por procedimentos armazenados. Nomes e definições de tabelas podem ser alterados quando você atualiza o aplicativo e podem ser alterados em versões futuras. Em vez de usar as tabelas diretamente, use os procedimentos armazenados documentados e as exibições fornecidas com o coletor de dados para acessar dados do aplicativo e da instância.

SQL Server Agent Jobs

As informações de trabalho do SQL Server Agent são armazenadas no msdb usando um esquema separado. Essas informações de trabalho são criadas ou atualizadas sempre que os conjuntos de coleta são adicionados, removidos ou alterados. Quando um conjunto de coleta é iniciado, o SQL Server Agent usa essas informações para executar os trabalhos do coletor de dados.

SQL Server Integration Services Packages

Os pacotes do SSIS são armazenados no msdb usando tabelas de armazenamento existentes do SSIS. O coletor de dados usa estes pacotes para coletar dados e transferi-los ao data warehouse de gerenciamento.

Auditing and History

O armazenamento dedicado é fornecido para salvar registros detalhados de auditoria e histórico das execuções de coleta de dados. O componente tempo de execução do coletor de dados e os pacotes SSIS geram eventos durante a coleta de dados. Estas informações são usadas para monitorar e solucionar problemas do processo de coleta.

Data warehouse de gerenciamento

O data warehouse de gerenciamento é um banco de dados relacional que contém todos os dados retidos. Esse banco de dados pode estar no mesmo sistema do coletor de dados ou pode estar em outro computador.

Execução

Os componentes da categoria de execução são executados na memória e são responsáveis pela coleta e armazenamento de dados.

SQL Server Agent

O SQL Server Agent é o host do componente em tempo de execução do coletor de dados. A coleta de dados é agendada como um trabalho do SQL Server Agent. Quando o trabalho é executado, ele chama o componente de tempo de execução do coletor de dados que usa os parâmetros exigidos para criar e executar um conjunto de coletas.

Componente de tempo de execução do coletor de dados

O componente em tempo de execução do coletor de dados é hospedado por um processo independente denominado Dcexec.exe. Esse componente gerencia a coleta de dados baseado nas definições fornecidas em um conjunto de coleta e pode aceitar qualquer conjunto de coleta como entrada. O componente de tempo de execução do coletor de dados é responsável por carregar e executar os pacotes do SSIS que fazem parte de um conjunto de coleta.

Um conjunto de coleta é executado em um dos seguintes modos de coleta e carregamento:

  • Modo de não armazenamento em cache. A coleta e o carregamento dos dados estão na mesma agenda. Os pacotes iniciam, coletam e carregam dados na freqüência configurada e executam até que sejam concluídos. Depois que os pacotes terminam, são descarregados da memória.

  • Em modo de armazenamento em cache. A coleta e o carregamento dos dados estão em agendas diferentes. Os pacotes coletam e armazenam dados em cache até que eles recebam um sinal para sair de uma tarefa de fluxo de controle de loop. Isso garante que o fluxo de dados possa ser executado repetidamente, o que habilita a coleta de dados contínua.

ObservaçãoObservação

O componente de tempo de execução do coletor de dados pode executar somente a coleta de dados ou o carregamento de dados. Ele não pode executar essas tarefas simultaneamente.

Componente de tempo de execução SSIS

O componente de tempo de execução do coletor de dados invoca os pacotes SSIS utilizados pelo coletor de dados. Os pacotes são executados durante o processo.

As duas tarefas mais importantes dos pacotes do SSIS são a coleta de dados e o carregamento de dados que são executadas por pacotes separados.

  • O pacote de coleta reúne dados de um provedor de dados e os mantém em armazenamento temporário. Se for configurado para assim proceder, este pacote também acrescentará informações adicionais aos dados que coleta, como a hora do instantâneo ou informações sobre a fonte dos dados.

  • O pacote de carregamento lê os dados no armazenamento temporário, processa-os conforme necessário (por exemplo, removendo pontos de dados desnecessários, normalizando os dados e a agregação de dados) e, em seguida, carrega os dados no data warehouse de gerenciamento. O carregamento é feito como uma inserção em massa para minimizar o impacto no desempenho do servidor.

A separação da coleta de dados e do carregamento de dados oferece mais flexibilidade e eficiência. Esse design oferece suporte a cenários em que são capturados instantâneos de dados em intervalos freqüentes (por exemplo, a cada 15 segundos), mas os dados coletados precisam ser carregados somente a cada hora. A freqüência da coleta e do carregamento de dados deve ser determinada pelos requisitos de monitoramento de uma instalação específica do SQL Server.

Armazenamento temporário

O armazenamento temporário é usado durante a coleta de dados para armazenar valores de propriedades expostos por conjuntos de coleta ou calculados de forma dinâmica. Estes valores podem ser dados brutos obtidos durante o processo de coleta, ou dados processados, como dados agregados.

API

A categoria API inclui a biblioteca de classes e o modelo de objeto usado para configurar, manter, e estender o coletor de dados. O acesso do cliente ao banco de dados do sistema deve ser feito por meio do API.

Class Library

O coletor de dados tem seu próprio namespace e é independente do SQL Server Management Objects (SMO).

Stored Procedures and Views

Os procedimentos armazenados e as exibições fornecem acesso de Criação, Leitura, Atualização e Exclusão aos dados da configuração do coletor de dados e do data warehouse de gerenciamento.

Cliente

O coletor de dados usa o SQL Server Management Studio e uma interface de linha de comando do Windows Powershell™ como clientes para configurar e usar o coletor de dados. Você pode usar o SQL Server Management Studio para fazer o seguinte:

  • Configurar a coleta de dados usando o Assistente para Configurar a Coleta de Dados no Pesquisador de Objetos.

  • Habilitar ou desabilitar a coleta de dados usando o Pesquisador de Objetos.

  • Iniciar ou parar um conjunto de coleta específico usando o Pesquisador de Objetos.

  • Exibir ou configurar a coleta de dados ou as propriedades do conjunto de coleta de dados usando o Pesquisador de Objetos.

  • Exibir os relatórios com base em dados históricos armazenados no data warehouse de gerenciamento. Esse banco de dados pode estar localizado na instância local ou em outro servidor. O último é recomendado.

Você pode usar a interface de linha de comando do Windows Powershell para fazer o seguinte:

  • Iniciar ou parar um conjunto de coleta.

  • Adicionar ou remover um conjunto de coleta.

  • Alterar as propriedades editáveis de um conjunto de coleta.

Interação e processamento de componente

A tabela a seguir descreve a interação entre os diversos componentes na arquitetura do coletor de dados.

Componente

Componente

Descrição

SQL Server Management Studio

Coletor de dados API

O cliente se comunica com a API para configurar o coletor de dados.

SQL Server Management Studio

Data warehouse de gerenciamento

O cliente possui acesso de Leitura ao data warehouse de gerenciamento e pode obter os dados coletados.

SQL Server Management Studio, cliente de console

Coletor de dados API

Ambos os clientes podem configurar o coletor de dados programaticamente usando o API.

Coletor de dados API

Procedimentos armazenados e exibições

A API usa os procedimentos armazenados que possuem acesso de Leitura e Gravação às informações de configuração do coletor de dados e do data warehouse de gerenciamento.

msdb - Definição de trabalho

SQL Server Agent

O SQL Server Agent pode ler a definição do trabalho. A definição do trabalho contém as informações da agenda de trabalho e da configuração do trabalho.

SQL Server Agent

Componente de tempo de execução do coletor de dados

O SQL Server Agent invoca o coletor de dados em resposta à definição do trabalho.

Componente de tempo de execução do coletor de dados

msdb - pacotes do SSIS

O coletor de dados carrega os pacotes SSIS e pode usar o SSIS para executar estes pacotes.

Componente de tempo de execução do coletor de dados

msdb - auditoria e histórico

O coletor de dados possui acesso de Gravação a essa parte do msdb, portanto, ele pode registrar os eventos gerados durante a coleta de dados.

SSIS

Data warehouse de gerenciamento

O pacote do SSIS possui acesso de Gravação no data warehouse de gerenciamento, portanto, ele pode carregar os dados coletados.

SSIS

Armazenamento temporário

Durante o processo de coleta, o SSIS pode criar, usar e excluir qualquer armazenamento temporário necessário.

msdb - configuração da coleta de dados

msdb - definição de trabalho

As informações de configuração da coleta de dados são mapeadas para a definição de trabalho. Para obter mais informações, consulte "Conjunto de coleta e mapeamento de trabalhos” a seguir.

Conjunto de coleta e mapeamento de trabalhos

Um elemento fundamental da arquitetura do coletor de dados é o mapeamento entre os conjuntos de coleta definidos na configuração do coletor de dados e os trabalhos na definição de trabalho.

Um conjunto de coleta é um grupo de itens que são instâncias dos tipos de coletores que são definidos usando os pacotes do SSIS. Como uma instância na memória, todo conjunto de coleta tem um tempo de vida, o qual é descrito com mais detalhes posteriormente neste tópico. Cada conjunto de coleta é executado pelo componente de tempo de execução do coletor dados quando este é invocado por um trabalho SQL Server. Os exemplos a seguir ilustram como os conjuntos de coleta são mapeados para trabalhos.

Conjuntos de coleta

Exemplo 1

Este conjunto de coleta de exemplo, “Dados de Desempenho de Base", contém uma coleta separada e pacotes de carregamento para dar suporte a diferentes agendas dos pacotes de coleta e de carregamento.

Conjunto de coleta: Nome = "Dados de desempenho de base"

Item de coleta: Nome = "SQL_RE_Active_Requests_History"

Pacote de coleta: ARH_Collect.dtsx

Pacote de carregamento: ARH_Upload.dtsx

Freqüência de coleta: 1 segundo

Item de coleta: Nome = "SQL_RE_Wait_Statistics"

Pacote de coleta: WS_Collect.dtsx

Pacote de carregamento: WS_Upload.dtsx

Freqüência de coleta: 15 segundos

Item de coleta: Nome = "SQL_RE_Performance_Counters"

Pacote de coleta: PC_Collect.dtsx

Pacote de carregamento: PC_Upload.dtsx

Entrada: Contador - Bloqueios: Esperas de travas atuais

Freqüência de coleta: 15 segundos

Item de coleta: Nome = "WIN_OS_Performance_Counters"

Pacote de coleta: OS_PC_Collect.dtsx

Pacote de carregamento: OS_PC_Upload.dts

Entrada: Contador - Processo: % de tempo do processador

Freqüência de coleta: 15 segundos

Agenda de carregamento: a cada 30 minutos

Exemplo 2

Este conjunto de coleta de exemplo, "Dados de Configuração do Servidor", contém um único pacote que obtém os instantâneos baseados no Transact-SQL e os carrega no data warehouse de gerenciamento à medida em que são obtidos.

Conjunto de coleta: Nome = "Dados de configuração do servidor"

Item de coleta: Nome = "SQL_RE_TSQL"

Pacote de carregamento e de coleta: TSQL_Upload.dtsx

Entrada: Consulta Transact-SQL para tamanhos de banco de dados

Freqüência de coleta: <nenhuma>

Item de coleta: Nome = "SQL_RE_TSQL"

Pacote de carregamento e de coleta: TSQL_Upload.dtsx

Entrada: Consulta Transact-SQL para opções de configuração

Freqüência de coleta: <nenhuma>

Agenda do carregamento: a cada 24 horas

Trabalhos

Quando são criados os conjuntos de coleta exibidos nos exemplos anteriores, são criados trabalhos do SQL Server Agent para executar a coleta de dados. As regras a seguir orientam a criação de trabalhos:

  • As coletas de dados de diferentes conjuntos de coleta são executadas como trabalhos separados.

  • Conjuntos de coleta que usam o modo de coleta de armazenamento em cache são agendados como trabalhos que iniciam quando o SQL Server Agent inicia. Estes trabalhos são executados continuamente e são controlados pelo componente de tempo de execução do coletor de dados.

  • Os conjuntos de coleta que usam o modo de coleta de não armazenamento em cache são agendados como trabalhos normais do SQL Server Agent. Estes trabalhos usam um cronograma do SQL Server Agent que corresponde ao cronograma definido no conjunto de coleta. A duração real da execução pode ser personalizada pelo usuário.

Os exemplos a seguir ilustram trabalhos que usam as regras precedentes. Esses trabalhos podem executar os exemplos de conjunto de coleta fornecidos.

Exemplo 1 de trabalhos para conjunto de coleta

Dois trabalhos são usados para controlar esse conjunto de coleta: um para a coleta e um para o carregamento.

Trabalho 1, Nome = “Coleta de dados de desempenho de base"

Categoria: "Coletor de dados"

Etapa do trabalho 1:

Conjunto de coleta: Nome = Dados de desempenho de base"

Modo de coleta: somente coleta, execução contínua

Pacotes executados: ARH_Collect, WS_Collect, PC_Collect, OS_PC_Collect

Agenda: ao iniciar o Agent

Trabalho 2, Nome = “Carregamento de dados de desempenho de base"

Categoria: "Coletor de dados"

Etapa do trabalho 1:

Conjunto de coleta: Nome = “Dados de desempenho de base"

Modo de coleta: somente carregamento, execução simples

Pacotes executados: ARH_Upload, WS_Upload, PC_Upload, OS_PC_Upload

Agenda: A cada 30 minutos, iniciando às 12:00 AM PST

Trabalho para exemplo de conjunto de coleta 2

É criado um trabalho para controlar o conjunto de coleta.

Trabalho 3, Nome = "Dados de configuração de servidor"

Categoria = "Coletor de dados"

Etapa do trabalho 1:

Conjunto de coleta, Nome = "Dados de configuração do servidor"

Modo de coleta: coleta e carregamento, execução simples

Pacotes executados: TSQL_Upload, TSQL_Upload

Agenda: diariamente às 12:00 AM PST

ObservaçãoObservação

Cada um dos exemplos anteriores especifica o modo de coleta para o trabalho. Estas informações são usadas para gerenciar o processamento de coleta e de carregamento quando o conjunto de coleta estiver sendo executado.

O coletor de dados e os conjuntos de coleta

Como o coletor de dados e um conjunto de coleta são elementos de coleta de dados com os quais você interage, você deve entender seus estados válidos e o conceito de vida útil de um conjunto de coleta.

Estados válidos

Para ativar ou desativar a coleta de dados, você pode habilitar ou desabilitar a coleta de dados. Se desejar fazer qualquer alteração que afete os parâmetros de todo o coletor, como as alterações na cadeia de caracteres de conexão do data warehouse de gerenciamento, você deverá primeiro desabilitar a coleta de dados.

Se você desejar fazer qualquer alteração de configuração no conjunto de coleta, deverá primeiro parar o conjunto de coleta.

Se você desabilitar a coleta de dados quando os conjuntos de coleta estiverem em execução, esses conjuntos de coleta entrarão em um estado de pausa até que a coleta de dados seja habilitada novamente. Nesse ponto, os conjuntos de coleta continuam a execução. Qualquer conjunto de coleta que não estava sendo executado quando a coleta de dados foi desabilitada permanecerá parado. Você pode iniciar qualquer conjunto de coleta enquanto a coleta de dados estiver desabilitada. Porém, o conjunto de coleta não iniciará a execução até que você habilite a coleta de dados.

Vida útil do conjunto de coleta

Depois que um conjunto de coleta é iniciado, ele pode passar por várias transições durante sua vida útil. Essas possíveis transições e as ações que ocorrem durante elas incluem o seguinte:

  1. Construir

    • Um objeto do conjunto de coleta é criado na memória.

    • Todas as propriedades podem ser definidas e modificadas livremente.

  2. Adicionar tipo de coletor

    • Um item de coleta novo é adicionado ao conjunto de coleta.

    • O conjunto de coleta verifica se todos os itens de coleta fazem referência à mesma raiz de destino.

  3. Remover o tipo de coletor

    • Um item de coleta existente é removido do conjunto de coleta.
  4. Criar

    • O conjunto de coleta verifica se contém pelo menos um item de coleta.

    • As informações sobre todos os itens de coleta e suas propriedades, freqüências de coleta e todas as propriedades do conjunto de coleta são inseridas no armazenamento de configuração do coletor de dados.

    • O estado inicial do conjunto de coleta é definido para inativo.

    • O trabalho ou trabalhos do SQL Server Agent que executarão o conjunto de coleta serão criados e vinculados ao conjunto de coleta.

    • O estado inicial dos trabalhos do SQL Server Agent é definido como inativo.

  5. Iniciar

    • O estado do conjunto de coleta é alterado para em execução.

    • Os trabalhos associados do SQL Server Agent são habilitados.

    • Se um trabalho for sinalizado para ser executado na inicialização do Agent, ele será iniciado imediatamente.

  6. Parar

    • O estado do conjunto de coleta é alterado para interrompido.

    • Todos os trabalhos em execução para o conjunto de coleta são interrompidos e desabilitados.

    • Todos os trabalhos vinculados ao conjunto de coleta são definidos para inativo.

  7. Excluir

    • Todos os trabalhos vinculados ao conjunto de coleta são excluídos da memória.

    • Todos os objetos (itens de coleta, conjuntos de coleta) na configuração do coletor de dados vinculados ao conjunto de coleta serão excluídos.

Processamento de tempo de execução

A ilustração a seguir fornece uma exibição de alto padrão e simplificada do processamento de tempo de execução quando um conjunto de coleta é iniciado e os dados são coletados e carregados. Apesar desta ilustração mostrar a coleta de dados e o carregamento de dados como dois processos de trabalho separados, eles também podem ocorrer como um único trabalho, como mostram os exemplos anteriores.

Etapas de processamento de coleta e carregamento

Coleta de dados

Na ilustração anterior, as etapas do processo de coleta de dados têm o prefixo "C." As etapas de processamento são as seguintes:

  1. Um procedimento armazenado inicia o conjunto de coleta. O estado do conjunto de coleta no msdb é alterado para em Execução. Esta mudança de estado habilita os trabalhos do SQL Server Agent vinculados ao conjunto de coleta.

  2. O SQL Server Agent inicia o trabalho conforme segue:

    • Se o modo do conjunto de coleta estiver definido como armazenado em cache, o trabalho de coleta será iniciado imediatamente.

    • Se o modo do conjunto de coleta estiver definido como não armazenado em cache, o trabalho de coleta será iniciado de acordo com a agenda configurada.

  3. Quando um trabalho é iniciado, ele gera um processo para executar o componente de tempo de execução do coletor de dados (Dcexec.exe) e o informa para executar o pacote de coleta associado ao conjunto de coleta.

  4. Quando o Dcexec.exe é iniciado, ele lê a configuração do coletor de dados no msdb para localizar o modo de coleta a ser usado: armazenado em cache ou não armazenado em cache.

  5. O componente de tempo de execução do coletor de dados utiliza o componente de tempo de execução do SSIS para executar os pacotes de coleta definidos para o conjunto de coleta.

  6. Os pacotes de coleta são executados até receberem um sinal para serem interrompidos ou até atingirem um ponto de extremidade predefinido. Os pacotes de coleta salvam os dados coletados em uma área de preparação até serem carregados.

    ObservaçãoObservação

    O design do tipo de coletor para o conjunto de coleta determina o tipo de área de preparação utilizado. A área de preparação pode ser uma área de memória compartilhada, arquivos temporários ou uma fila de mensagens.

Carregamento de dados

Na ilustração anterior, as etapas do processo de carregamento de dados têm o prefixo "U". As etapas de processamento são as seguintes:

  1. Quando um carregamento é necessário, um procedimento armazenado inicia o trabalho que é tratado pelo SQL Server Agent.

  2. O SQL Server Agent inicia o trabalho conforme segue:

    • Se o usuário enviar uma solicitação de carregamento sob demanda, o trabalho de carregamento será iniciado imediatamente.

    • Se não houver nenhuma solicitação de carregamento sob demanda, o trabalho de carregamento será iniciado de acordo com o cronograma configurado para o conjunto de coleta.

  3. Quando um trabalho é iniciado, ele gera um processo para executar o componente de tempo de execução do coletor de dados (Dcexec.exe) e o avisa para executar o pacote de carregamento associado ao conjunto de coleta.

  4. Quando o Dcexec.exe é iniciado, ele lê a configuração do coletor de dados no msdb para descobrir como tratar o carregamento (por exemplo, a cadeia de conexão para o data warehouse de gerenciamento ou qualquer processamento de dados necessário).

  5. O componente de tempo de execução do coletor de dados utiliza o componente de tempo de execução SSIS para executar os pacotes de carregamento definidos para o conjunto de coleta.

  6. O pacote de carregamento lê os dados que são retidos na área de preparação e efetua as transformações necessárias, como normalização ou amostragem. Quando as transformações estiverem finalizadas, o pacote de carregamento se conecta ao data warehouse de gerenciamento e insere os dados.

  7. Depois que o carregamento estiver concluído, o processo termina mas o estado do conjunto de coleta permanece inalterado. O carregamento seguinte é iniciado de acordo com a agenda do conjunto de coleta.