Хорошо, поэтому у меня есть хороший скрипт .ps1, который получает набор счетчиков и записывает его в файл круглого журнала с максимальным размером 1 ГБ. Он работает хорошо и делает всех счастливыми.Использование скользящего файла журнала в сценарии Powershell, который собирает счетчики производительности
Способ, которым он запущен, в настоящее время является файлом .bat, который проходит через скрипт, а затем хранит экземпляр Powershell.exe в скрытом окне. Это позволяет ему работать ненавязчиво.
Однако мне действительно не нравится идея файла журнала «Circular». Я хватаю много информации, и на некоторых из этих серверов это означает, что даже ограничение 1 ГБ будет получать довольно часто. Я запускаю тест, чтобы узнать, сколько времени это займет, но можно предположить, что работающий файл журнала может работать лучше.
У меня есть функция, которую я обнаружил, чтобы определенный файл проверялся на размер и при необходимости создавал новый файл, но я не совсем уверен, как периодически вызывать эту функцию (например, один раз в день или час или что-то) из сценария Powershell, который в основном является огнем и забыт.
Чтобы еще больше усложнить ситуацию, мои эксперименты с началом работы и остановкой в этом контексте, похоже, не так хорошо работали. Он вообще не создавал бы файлы журналов.
Код:
# This script tracks performance counters useful for tracking performance on a SQL server in a rolling .csv file
located at a directory of your choosing. It is written for Powershell v.2
$Folder="C:\Perflogs\BBCRMLogs" # Change the bit in the quotation marks to whatever directory you want the log file
# stored in
$Computer = $env:COMPUTERNAME
$1GBInBytes = 1GB
$p = LOTS OF COUNTERS GO HERE;
# If you want to change the performance counters, change the above list. However, these are the recommended counters for
a client machine.
$dir = test-path $Folder
IF($dir -eq $False)
{
New-Item $Folder -type directory
get-counter -counter $p -SampleInterval 60 -Continuous | Export-Counter $Folder\SQL_log.csv -Force -FileFormat CSV
-Circular -MaxSize $1GBInBytes
}
Else
{
get-counter -counter $p -SampleInterval 60 -Continuous | Export-Counter $Folder\SQL_log.csv -Force -FileFormat CSV
-Circular -MaxSize $1GBInBytes
}
Острые глаза заметить функцию для прокатки отсутствует. Это происходит потому, что выше сценарий моя версия, функция Я использую здесь:
http://sysbrief.blogspot.com/2011/05/powershell-log-rotation-function.html
Любые идеи? Я бы предпочел не запускать отдельный экземпляр Powershell, чтобы выступать в качестве слушателя, или периодически запускать функцию пользователем, но я открыт для любой идеи.
Было бы лучше настроить задание Windows, чтобы периодически запускать функцию в PowerShell и рулон файла журнала?
Это красиво просто и имеет большой смысл. Однако я все еще не совсем уверен, что делает $ _. Это просто какой-то заполнитель? –
'$ _' представляет объект, выводимый Get-Counter. Мы вставляем в конвейер для проверки размера файла, но нам нужно убедиться, что объект, выводимый Get-Counter, переводит его вниз по конвейеру в Export-Counter. –
Ах, имеет смысл. Спасибо за разъяснения. –