Monitorando os Contadores do Perfmon, através do Power BI – Parte 3

parte3.png

No post Monitorando os Contadores do Perfmon, através do Power BI – Parte 2, foi explicado como fazer a importação dos dados coletados pelos contadores do perfmon, através do Relog, para o SQL Server.

Nesse post, vamos pegar os dados contidos nas tabelas: CounterData e CounterDetails, que sejam relevantes para o nosso cenário (Quais dados pegar, fica a critério de cada um)  e inseri-los em uma única tabela (que será criada).

Algumas etapas a serem feitas:

  • Criando da Tabela Manipula_Cont
CREATE TABLE [dbo].[Manipula_Cont] (
 [ID] [int] IDENTITY (1, 1) NOT NULL,
 [Data] [datetime] NULL,
 [Servidor] [varchar](35) NOT NULL,
 [CouterName] [varchar](35) NOT NULL,
 [Media] [float] NOT NULL,
 [Total] [float] NOT NULL,
 PRIMARY KEY CLUSTERED
 (
 [ID] ASC
 ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =      OFF, ALLOW_ROW_LOCKS = ON,
 ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
 ) ON [PRIMARY]
  • Visualização da tabela acima criada
SELECT *
 FROM Manipula_Cont
  • Inserção dos dados contindos nas tabelas CounterData e CounterDetails  na tabela  na Manipula_Cont.
INSERT Manipula_Cont(Servidor,CouterName,Data,Media,Total)
 SELECT MachineName,
 CounterName,
 DATEADD(MINUTE, CAST(SUBSTRING(CounterDateTime, 12, 2) AS INT) * 60 + CAST(SUBSTRING(CounterDateTime, 15, 2) AS INT), CAST(CAST(CONVERT(VARCHAR(10), CounterDateTime) AS DATE) AS DATETIME)) AS [Data],
 (SUM(CounterValue)/2) Media,
 SUM(CounterValue) Total
 FROM CounterData C1
 JOIN dbo.CounterDetails C2 on C2.CounterID = C1.CounterID
 GROUP BY DATEADD(MINUTE, CAST(SUBSTRING(CounterDateTime, 12, 2) AS INT) * 60 + CAST(SUBSTRING(CounterDateTime, 15, 2) AS INT), CAST(CAST(CONVERT(VARCHAR(10), CounterDateTime) AS DATE) AS DATETIME)),
 CounterName, MachineName,ObjectName
 ORDER BY 1 ASC
  • Visualização dos dados Tabela Manipula_Cont
SELECT *
 FROM Manipula_Cont

Nessa etapa, vamos separar os contadores(os que foram configurados) por categorias, e inseri-los em uma nova tabela, que será criada abaixo:

CREATE TABLE Class_Mani_Cont(
 CouterType varchar(50),
 CouterName varchar(50),
 )

Para essa série de posts, foram configuradas no perfmon as categorias abaixo:

  • System
  • Processor
  • Network
  • Memory
  • LogicalDisk

Inserção das Categorias e os Contadores na Tabela  Class_Mani_Cont

  • Categoria System
INSERT INTO Class_Mani_Cont  VALUES ('System','System Calls/sec'),
                                    ('System','Exception Dispatches/sec'),
                                    ('System','Processor Queue Length'),
                                    ('System','Context Switches/sec')
  • Categoria Processor
INSERT INTO Class_Mani_Cont VALUES ('Processor','% Processor Time'),
                                   ('Processor','% Privileged Time')
  • Categoria Network Interface
INSERT INTO Class_Mani_Cont VALUES ('Network Interface','Bytes Received/sec'),
                                   ('Network Interface','Bytes Sent/sec'),
                                   ('Network Interface','Bytes Total/sec')
  • Categoria Memory
INSERT INTO Class_Mani_Cont VALUES ('Memory','Pool Paged Bytes'),
                                   ('Memory','Pool Nonpaged Bytes'),
                                   ('Memory','% Committed Bytes In Use'),
                                   ('Memory','% Available MBytes'),
                                   ('Memory','Free System Page Table Entries'),
                                   ('Memory','Committed Bytes')
  • Categoria  LogicalDisk
INSERT INTO Class_Mani_Cont VALUES ('LogicalDisk','Disk Reads/sec'),
                                   ('LogicalDisk','Disk Read Bytes/sec'),
                                   ('LogicalDisk','Avg. Disk sec/Read'),
                                   ('LogicalDisk','Disk Writes/sec'),
                                   ('LogicalDisk','Current Disk Queue Length'),
                                   ('LogicalDisk','Avg. Disk sec/Write'),
                                   ('LogicalDisk','Disk Bytes/sec'),
                                   ('LogicalDisk','Disk Write Bytes/sec'),
                                   ('LogicalDisk','Disk Transfers/sec'),
                                   ('LogicalDisk','Avg. Disk sec/Transfer')
  • Visualização dos dados inseridos na Tabela Class_Mani_Cont
SELECT *
 FROM Class_Mani_Cont

Esse post, explicou como unir os dados relevantes das duas tabelas(CounterData e CounterDetails) em uma única tabela(Manipula_Cont), como também a separação dos contadores por categoria na tabela ( Tabela Class_Mani_Cont).

No próximo post, vamos criar no Power BI o dashboard  para o monitorando dos contadores do Perfmon.

Obs: Deixando bem claro que existe várias formas de fazer tanto a importação dos dados para o sql server, como também o tratamento dos dados  no sql server ou no Power BI.

Nessa série de post optei por fazer a importação dos dados via relog e o tratamento dos dados no sql server.

Monitorando os Contadores do Perfmon, através do Power BI – Parte 4 – Final, em Breve!

Script disponível no GitHub

Sobre Sulamita Dantas

MVP | Database Administrator | TOTVS Analyst | Business Intelligence Analyst
Esse post foi publicado em SQL Server 2012. Bookmark o link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s