Я хочу настроить мониторинг системных ресурсов на своих серверах Windows. Я заметил, что обычно в Linux используется демон collectd для получения информации о системных показателях. Собранные данные можно прочитать с помощью logstash и в конечном итоге поместить в Elastic Search для просмотра с помощью Kibana.
Это хорошо и хорошо работает в мире Linux. Однако я застрял на сервере Windows, и мне нужен совет по выбору лучших инструментов для достижения аналогичного рабочего процесса. В качестве побочного узла я уже использую Nxlog для отправки журналов IIS в logstash.
Elastic теперь предлагает инструмент под названием топовый ритм это то, что вы ищете. Он отправляет статистику ЦП, памяти и диска непосредственно в Elasticsearch или в Logstash.
Примеры метрик есть на github по адресу эластичный / топбит.
Страница "Инструменты для работы с графитом" http://graphite.readthedocs.org/en/latest/tools.html перечислить несколько. Я пробовал сценарий PowerShell "Функции Graphite PowerShell" https://github.com/MattHodge/Graphite-PowerShell-Functions и это хорошо работает.
редактировать Я неправильно прочитал ваш вопрос, вы говорили только о Logstash и Kibana, но не о Graphite. Я не использую Logstash + Kibana для системных метрик, но использую Statsd + Graphite. Поэтому не уверен, что мой ответ верен для вас, но если вы используете ввод Graphite Logstash http://logstash.net/docs/1.4.2/ вы можете использовать эти инструменты.
Я использую Powershell 5
и Filebeat
чтобы решить эту проблему. Обратите внимание, что это не было проверено более нескольких часов, и это доказательство концепции.
#Version 0.2
#Todo:
#* Notify on fail
#Function to get Sql Server Counters
function Get-SqlServerData()
{
$Data = get-counter ($SqlServerCounterPrefix + ":Buffer Manager\Buffer cache hit ratio"),
($SqlServerCounterPrefix + ":Buffer Manager\Page life expectancy"),
($SqlServerCounterPrefix + ":Access Methods\Page splits/sec")
#$Data
$TransformedData = $Data.CounterSamples | Select-Object -Property Path, CookedValue
$object = New-Object psobject
$object | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $Data.Timestamp
foreach ($row in $TransformedData)
{
$path = $row.Path
$name = $path.Substring($path.LastIndexOf("\") + 1)
$object | Add-Member -NotePropertyName $name -NotePropertyValue $row.CookedValue
}
$object
}
#Parameters
$SqlServerCounterPrefix = '\MSSQL$MSSQL_2008'
$Type = "SQLServerStatistics"
$Data = Get-SqlServerData
$Path = "Z:\Temp\PowershellTest\"
$AddTimeStamp = $false
$NumberOfDaysToKeepFiles = 7
$FileExtension = "csv"
#Variables (do not change)
$Date = Get-Date -format yyyy-MM-dd
$Timestamp = Get-Date
$FilenameRegex = "^" + $Type + "_(?<Date>\d{4}-\d{2}-\d{2})(?:\(\d\))?\." + $FileExtension + "$"
$Suffix = ''
$Counter = 0
$Done = $false
if ($AddTimeStamp -eq $true)
{
$Data | ForEach-Object {
$_ | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $Timestamp
}
}
#Try to export file if it fails (the headers have changed) add a (number)
while($Done -eq $false -and $Counter -le 9)
{
Try
{
$Filename = $Type + "_" + $Date + $Suffix + "." + $FileExtension
Write-Host "Trying to write $Filename"
$FilePath = $Path + $Filename
$Data | Export-Csv -Path $FilePath -Delimiter ";" -NoTypeInformation -Append
$Done = $true
}
Catch [Exception]
{
Write-Host "Failed to create file " + $_.Exception.GetType().FullName, $_.Exception.Message
$Counter++
$Suffix = '(' + $Counter + ')'
}
}
#Notify if we failed
if ($Done -eq $false)
{
#Todo: Notify that we failed
}
#Cleanup
$Files = Get-ChildItem $Path -Filter ("*." + $FileExtension)
$Files | Foreach-Object {
$FilePath = $_.FullName
$Filename = [System.IO.Path]::GetFileName($FilePath)
$Match = [regex]::Match($Filename, $FilenameRegex)
Write-Host $FilePath
Write-Host $Filename
if ($Match.Success -eq $true)
{
Write-Host $Match.Groups["Date"].Value
$FileDate = [datetime]::ParseExact($Match.Groups["Date"].Value, "yyyy-MM-dd", $null)
$TimeSince = New-TimeSpan -Start $FileDate -End (Get-Date).Date
if ($TimeSince.TotalDays -ge $NumberOfDaysToKeepFiles)
{
Remove-Item $FilePath
}
}
}
Это создаст файл csv в каталоге $ Path, если вы измените счетчики, он создаст новый файл с (1-9)
во имя.
Обновленную версию можно найти по адресу: https://gist.github.com/AnderssonPeter/8261e255630d6f672ba5bc80f51b017f
Сейчас есть плагин ввода logstash для монитора производительности Windows.