Como os dados do contador de desempenho do Windows podem ser salvos diretamente nas tabelas do SQL Server?

0

Gostaria de registrar os dados de um determinado conjunto de contadores de desempenho do Windows diretamente nas tabelas do SQL Server. O Windows fornece uma maneira de fazer isso sem escrever um aplicativo personalizado para fazer isso?

Em caso afirmativo, há algum problema sério ao fazer isso?

    
por BrianCooksey 09.09.2013 / 22:15

2 respostas

1

não há uma maneira interna no Windows de gravar os PerfCounters em um banco de dados SQL. Você deve codificar uma ferramenta que faz isso.

    
por 10.09.2013 / 06:25
1

Sim, é possível. Aqui está um currículo baseado em this artigo.

Selecione os contadores que você deseja analisar

Exporte todos os contadores da máquina local para uma pasta local.

typeperf -q  > counters.txt

Edite o arquivo exportado e deixe apenas os contadores que deseja amostrar. Eu deixei os dois abaixo:

\Processor(*)\% Processor Time
\Memory\Pages/sec

Coletar dados

Aqui você coletará os dados que deseja analisar usando o logman.

Crie uma coleção.

logman create counter MyCollection -s %computername% -cf counters.txt

Iniciar registro

logman MyCollection start

Depois de coletar uma amostra representativa, pare a refrigeração.

logman MyCollection stop

Por padrão, nos servidores Vista e Windows 2008, os contadores do monitor de desempenho serão armazenados em% systemdrive% \ PerfLogs \ Admin e será nomeado após o nome da sua coleção (no nosso caso eles serão chamados MyCollection.blg Então, você precisa ir para esta pasta.

cd %systemdrive%\PerfLogs\Admin

Carregar no SQL Server

Crie uma fonte de dados ODBC. Aviso : o SQL Server Native Client não pode ser usado com o perfmon. Perfmon é uma ferramenta do Windows que só pode ser usada com DSNs que usam o driver MDAC SQLODBC incluído no Windows.

Eu criei uma fonte de dados ODBC chamada relogDSN. ServerName é o nome do servidor no qual colecionei os dados. Esse nome será gravado na tabela do SQL Server DisplayToID que é criada e eu posso consultá-la quando quiser ver meus contadores.

relog MyCollection_000001.blg -f SQL -o SQL:relogDSN!ServerName

Analisando dados

Seus contadores serão salvos nas tabelas CounterDetails, CounterData e DisplayToID, eis uma consulta SQL como exemplo.

SELECT MachineName,
   CONVERT(DATETIME, CONVERT(VARCHAR(16), CounterDateTime)) as [Date],
   AVG(CounterValue) as Average,
   MIN(CounterValue) as Minimum,
   MAX(CounterValue) as Maximum
FROM CounterDetails
   JOIN CounterData ON CounterData.CounterID = CounterDetails.CounterID
   JOIN DisplayToID ON DisplayToID.GUID = CounterData.GUID
GROUP BY MachineName,
   CONVERT(DATETIME, CONVERT(VARCHAR(16), CounterDateTime)) 
    
por 27.11.2013 / 02:46