Да, это возможно. Вот резюме на основе этой статьи.
Выберите счетчики, которые вы хотите проанализировать
Экспортируйте все счетчики на локальном компьютере в локальную папку.
typeperf -q > counters.txt
Отредактируйте экспортированный файл и оставьте только те счетчики, которые вы хотите отобрать. Я оставил два ниже:
\Processor(*)\% Processor Time
\Memory\Pages/sec
Собирать информацию
Здесь вы будете собирать данные, которые вы хотите проанализировать, используя logman.
Создать коллекцию.
logman create counter MyCollection -s %computername% -cf counters.txt
Начать запись
logman MyCollection start
Как только вы собрали репрезентативный образец, прекратите выборку.
logman MyCollection stop
По умолчанию на серверах Vista и Windows 2008 ваши счетчики монитора производительности будут храниться в% systemdrive%\PerfLogs\Admin и будут названы в честь имени вашей коллекции (в нашем случае они будут называться MyCollection.blg. Итак, вам нужно перейти к эта папка.
cd %systemdrive%\PerfLogs\Admin
Загрузить на SQL Server
Создайте источник данных ODBC. Предупреждение: собственный клиент SQL Server нельзя использовать с perfmon. Perfmon - это инструмент Windows, который можно использовать только с DSN, которые используют драйвер MDAC SQLODBC, включенный в Windows.
Я создал источник данных ODBC с именем relogDSN. ServerName - это имя сервера, на котором я собирал данные. Это имя будет записано в созданную таблицу DisplayToID SQL Server, и я могу запросить ее, когда захочу посмотреть на свои счетчики.
relog MyCollection_000001.blg -f SQL -o SQL:relogDSN!ServerName
Анализ данных
Ваши счетчики будут сохранены в таблицах CounterDetails, CounterData и DisplayToID, вот пример запроса SQL.
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))