Windows Shadow Copies small Tega / контролирует теневые копии

Шаблоны под операционную систему Windows
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Windows Shadow Copies small Tega / контролирует теневые копии

Сообщение Артём Мамзиков »

Шаблон Windows Shadow Copies small Tega / контролирует теневые копии

СКАЧАТЬ
Шаблон для Windows теневых копий небольшая Tega.zip
Шаблон для Windows теневых копий небольшая Tega.zip
(48.79 КБ) 11 скачиваний

UserParameter = tega.discovery.shadowcopies [*], powershell.exe -nologo -NoProfile -ExecutionPolicy

liboutput.ps1

Код: Выделить всё

#version 1.2


$needVersion=3
#основной объект содержит все остальные поля и методы.
#список хэшей в котором хранятся значения
$LibOutput = new-object psobject
#хеш с необходимыми ключами и их значениями по умолчанию
$LibOutput|Add-Member -MemberType NoteProperty  -Name DefaultKeys @{}
#список хэшей, здесь как раз хранятся 1-й, 2-й и так далее элеметы. То есть, список, который содержит хэши
$LibOutput|Add-Member -MemberType NoteProperty  -Name HashesList @()

#список полей хэша для вывода
$LibOutput|Add-Member -MemberType NoteProperty  -Name SelectedKeys @()



#список полей для вывода. Содержатся преобразованные имена ключей в формате необходимом для zabbix. Например, ключ key преобразуется в #KEY
$LibOutput|Add-Member -MemberType NoteProperty  -Name TransformedKeys @()

#строка для вывода Json
$LibOutput|Add-Member -MemberType NoteProperty  -Name JsonStr ""

#имя поля, ключа по которому ищется нужная строка в HashesList
$LibOutput|Add-Member -MemberType NoteProperty  -Name SearchKey ""
#значение поля, ключа по которому ищется нужная строка в HashesList
#только при совпадении ключ-значение будет искаться нужное значение для вывода
$LibOutput|Add-Member -MemberType NoteProperty  -Name SearchValue ""

#имя поля, значение которого будет выводиться
$LibOutput|Add-Member -MemberType NoteProperty  -Name PrintKey ""

#строка для вывода только одного значения, столбца
$LibOutput|Add-Member -MemberType NoteProperty  -Name SingleStr ""

#строка для вывода, помещается либо JSON, либо одиночное значение
$LibOutput|Add-Member -MemberType NoteProperty  -Name OutputStr ""

#время валидности данных в кеше. Если 0, то кэш не используется
$LibOutput|Add-Member -MemberType NoteProperty  -Name Cache 0

#имя файла для хранения кэша
$LibOutput|Add-Member -MemberType NoteProperty  -Name CacheFile ""

#создание нового элемента, хэша в HashesList
$LibOutput|Add-Member -MemberType ScriptMethod -Name "CreateHash" -Value {
    $this.HashesList+= $this.DefaultKeys.Clone()
    #foreach ($i in $this.DefaultKeys) {
    #    ($this.HashesList[-1])[$i]=""
    #}
}

#вставка значения $val ключа $key в HashesList в хэш с индексом $index 
$LibOutput|Add-Member -MemberType ScriptMethod -Name "SetValueIndex" -Value {
   param(
          [Parameter(Mandatory=$True)]
          [Int64]$index,
          [Parameter(Mandatory=$True)]
          [string]$key,
          [Parameter(Mandatory=$True)]  
          [string]$val
       )
    
   if (($this.HashesList[$index]).ContainsKey($key)) {
        ($this.HashesList[$index])[$key]=$val
   } 
}

#вставка значения $val ключа $key в HashesList в хэш с самым большим индексом
$LibOutput|Add-Member -MemberType ScriptMethod -Name "SetValue" -Value {
   param(
          [Parameter(Mandatory=$True)]
          [string]$key,
          [Parameter(Mandatory=$True)]  
          [string]$val
       )
    
    $this.SetValueIndex(-1,$key,$val)
}

#получение значения ключа $key в HashesList в хэш с индексом $index 
$LibOutput|Add-Member -MemberType ScriptMethod -Name "GetValueIndex" -Value {
   param(
          [Parameter(Mandatory=$True)]
          [Int64]$index,
          [Parameter(Mandatory=$True)]
          [string]$key
          
       )
    
   if (($this.HashesList[$index]).ContainsKey($key)) {
        ($this.HashesList[$index])[$key]
   } 
}

#получение значения ключа $key в HashesList в хэш с самым большим индексом
$LibOutput|Add-Member -MemberType ScriptMethod -Name "GetValue" -Value {
   param(
          [Parameter(Mandatory=$True)]
          [string]$key
          
       )
    
   if (($this.HashesList[-1]).ContainsKey($key)) {
        ($this.HashesList[-1])[$key]
   } 
}



#подготовка JsonStr
$LibOutput|Add-Member -MemberType ScriptMethod -Name "PreparePrintJSON" -Value {
    $this.TransformedKeys = @()
    $keys=@()
   
    if ($this.SelectedKeys.Count -ne 0) {
        foreach ($i in $this.SelectedKeys) {
          if ($this.DefaultKeys.ContainsKey($i) -eq $true) {
                $keys+=$i
            } 
        }
    } else {
        $keys=$this.DefaultKeys.Keys.clone()

    }

#   $this.TransformedKeys=+@{}
    foreach ($i in $this.HashesList) {
        $this.TransformedKeys+=@{}
        
        foreach ($h in $keys) {
            ($this.TransformedKeys[-1])["{#"+$h.ToUpper()+"}"]=$i[$h]
        }
    }
    if ($this.TransformedKeys.Length -eq 0){
        $this.TransformedKeys = "[]";
    }
    #если в массиве один элемент, то добавляем квадратные скобки, иначе zabbix не воспримет	
    $leftBracket=""
    $rightBracket=""

    if ($this.TransformedKeys.length -eq 1) {
    	$leftBracket="["
        $rightBracket="]"
    }


    $this.JsonStr="{`"data`":"+$leftBracket+($this.TransformedKeys|ConvertTo-Json -compress)+$rightBracket+"}"
}

#возврат одного значения
#при SearchKey=SearchValue возвращаем значение для PrintKey
$LibOutput|Add-Member -MemberType ScriptMethod -Name "PreparePrintSingle" -Value {
    
    $this.SingleStr=""
    foreach ($h in $this.HashesList) {
        if (($h.ContainsKey($this.SearchKey)) -and ($h[$this.SearchKey] -eq $this.SearchValue) -and ($h.ContainsKey($this.PrintKey))) {
           $this.SingleStr+=$h[$this.PrintKey]
        }
    }

}

#для отладочного вывода
$LibOutput|Add-Member -MemberType ScriptMethod -Name "DebugOutput" -Value {
    
    foreach ($i in $this.TransformedKeys) {
        $i
        "-"
    }
}

#подготовка строки вывода OutputStr. Если установлены значения SearchKey, SearchValue и PrintKey, то выводится одиночное значение, иначе все значения в формате Json
$LibOutput|Add-Member -MemberType ScriptMethod -Name PrintOutputStr -Value {
    
    if (($this.SearchKey) -and ($this.SearchValue) -and ($this.PrintKey)) {
        $this.PreparePrintSingle()
        $this.OutputStr=$this.SingleStr
    } else { 

    $this.PreparePrintJSON()
    $this.OutputStr=$this.JsonStr
    }
    $this.OutputStr;
}

#чтение кэша
$LibOutput|Add-Member -MemberType ScriptMethod -Name "GetCache" -Value {       
   
    $this.HashesList= Import-Clixml $this.CacheFile  
   
}

#запись кэша
$LibOutput|Add-Member -MemberType ScriptMethod -Name "SetCache" -Value {    
    
    $this.HashesList|Export-Clixml $this.cachefile
}


#получение данных либо из кэша, либо из переопределенного пользователем метода Get
$LibOutput|Add-Member -MemberType ScriptMethod -Name "GetData" -Value {
   #вызывать ли Get. 0 нет 
   $gd=0 
   #если кэш не включен
   if ($this.Cache -eq 0) {
   #то вызываем
    $gd=1
   } else {
        #иначе пробуем получить данные из кэша
        $l=""
        $d=$this.cache
        try {
            $l=get-ChildItem $this.cachefile
            #если между нынешним моментом и последней записью в кэш-файл прошло меньше секунд, чем указано в $this.cachе, то берем данные из кэша. Иначе $gd=1
            $d=((get-date)-($l.LastWriteTime)).totalseconds
            if ($d -le $this.cache) {
                $this.GetCache()
            } else {
                $gd=1
            }
        } catch {
            #если ошибка обращения к файлу кэша, например, он не существует, то $gd=1    
            $gd=1
            
        }
    }
    #если cache отключен, не удалось прочитать файл кэша или кэш просрочен, то получаем данные при помощи Get(). Пользователю его необходимо переопределить. Get() передается список неименованных параметров, сам с ними работает.
    #просто все параметры переданные в Get-Data полностью передаются в Get
    if ($gd -eq 1) {
        $this.Get($args)
        #если режим кеширования включен, то записывем файл кэша
        if ($this.cache) {
            try {
                $this.SetCache()
            } catch {
            
            }

        }
    }
      
}

#метода предназначен для получения данных. Необходимо переопределить.
#экземпляр объекта MainHashRename|Add-Member -MemberType ScriptMethod -Name "Get" -Force -Value {}
#-Force обязательно
$LibOutput|Add-Member -MemberType ScriptMethod -Name "Get" -Value {
    "--"
}


if ($host.version.major -lt $needVersion) {
	try {
		Assert-True $false
	} catch {
		"Version power shell is:" 
		$host.version
		"Version must be great or equal:" 
		$needVersion
		Assert-True $false
	}
	
}

shadow_copies.ps1

Код: Выделить всё

#version 1.1
#peremena version
#Tega Ltd.
###Проверка теневых копий


#названия ключей и их значения по умолчанию
#Name - Win32_Volume.name имя устройства вида C:\, если буква не назначена, то вида \\?\Volume{e55fd581-b220-11e4-824e-806e6f6e6963}\
#DeviceID - Win32_Volume.deviceID ID устроства вида \\?\Volume{e55fd581-b220-11e4-824e-806e6f6e6963}\ 
#DriveLetter Win32_Volume.DriveLetter - буква устройства вида C: или пустая строка, если буква не назнечена
#ShadowCopiesOn - 1 если создание копий включено, 0 - если создание копий выключено
#DiffVolume - DiffVolume.name Win32_ShadowStorage.DiffVolume.Name Win32_Volume.name Буква или DeviceID куда делаются теневые копии. Теневые копии могут делаться на отличный том. 
#AllocatedSpace Win32_ShadowStorage.AllocatedSpace выделнное место под теневые копии
#UsedSpace Win32_ShadowStorage.UsedSpace использованное место под локальные копии
#MaxSpace Win32_ShadowStorage.MaxSpace маскимальное место под теневые копии
#UsedPercentage (UsedSpace/AllocatedSpace)*100
#Count количество теневых копий
#InstallDate наиболее свежая теневая копия
#Date дата создания теневой копии
#AgeInHours возраст теневой копии в часах


[CmdletBinding()]
Param (
[Parameter(Mandatory=$false)]
[int64]$minVolumeSize=10000000000,

[Parameter(Mandatory=$false)]
[string]$SearchKey="",

[Parameter(Mandatory=$false)]
[string]$SearchValue="",

[Parameter(Mandatory=$false)]
[string]$PrintKey="",

[Parameter(Mandatory=$false)]
[String]
$SelectedKeys="",


[Parameter(Mandatory=$false)]
[int64]
$Cache=0,

[Parameter(Mandatory=$false)]
[String]
$CacheFile="",

[Parameter(Mandatory=$false)]
[switch]
$Help,

[Parameter(Mandatory=$false)]
[switch]
$DebugPrint
)

#$DebugPrint=1

#подключаем библиотеку
try {

    . ".\liboutput.ps1"
} catch {
    "Library is not found"
    exit;
}

#создаем новый экземпляр объекта
$ShadowCopies=$LibOutput.psobject.copy()



$ShadowCopies.DefaultKeys=@{'Name'="";'DeviceID'="";'DriveLetter'=""; 'ShadowCopiesOn'=0; 'DiffVolume'=""; 
                            'AllocatedSpace'=0; 'UsedSpace'=0; 'MaxSpace'=0; 'UsedPercentage'=-1; 'Count'=0; 
                            'InstallDate'=""; 'Date'="";'AgeInHours'=0; 'AllocatedPercentage'=-1}


#Печатаем помощь и выходим
if ($Help) {
    "Parametrs:"
    
    
    $MyInvocation.mycommand.name + " [-Cache TTL] [-CacheFile file] [-minVolumeSize size]"
    $MyInvocation.mycommand.name + " [-Cache TTL] [-CacheFile file] [-minVolumeSize size] -SelectedKeys key1, key2, key3 and so on"
    $MyInvocation.mycommand.name + " [-Cache TTL] [-CacheFile file] [-minVolumeSize size] -SearchKey key -SearchValue value -PrintKey key1"
    $MyInvocation.mycommand.name + " -Help"
    ""
    "Without parametrs - Values is printed in JSON"
    "-SelectedKeys - Values of the selected keys is printed in JSON"
    "-SearchKey key -SearchValue value -PrintKey key1 - Value key1 is printed with key=value. Example: -SearchKey Name -SearchValue C:\ -PrintKey UsedSpace will be printed 4414046208"
    " "
    "-Cache - TTL cache data, seconds"
    "-CacheFile - cache file name. Default " + $MyInvocation.mycommand.name + ".xml"
    "-minVolumeSize - Minimal size volume"
    " "
    "-Help - this message"
    "-DebugPrint - debug information"
    " "
    "Keys and default value"
    $ShadowCopies.DefaultKeys;
    exit;
}



$aSelectedKeys=@()


#если необходимо напечатать несколько ключей из всего множества, то их передаем как значения ключа -SelectedKeys через запятые
#-SelectedKeys name, driveletter
if ($SelectedKeys) {
    $aSelectedKeys=@($SelectedKeys.Split(","))
    for ($i=0; $i -lt $aSelectedKeys.count;$i++) {
        $aSelectedKeys[$i]=$aSelectedKeys[$i].trim();
    }

}

#Если нужно вывести одно значение определенного ключа для опредленной определнной пары ключ-значение
#Например, нужно вывести значение ключа "shadowcopyon" для ключа "drive" со значение "c:\"
#то указываем
#-SearchKey drive -SearchValue c:\ -PrintKey shadowcopyon
#тогда будет напечатано значение ключа shadowcopyon при drive=c:\

$ShadowCopies.SearchKey=$SearchKey
$ShadowCopies.SearchValue=$SearchValue
$ShadowCopies.PrintKey=$PrintKey
#список ключей, если печатаем не все ключи, только указанные
$ShadowCopies.SelectedKeys=$aSelectedKeys
#время акутальности кэша. Если разница между временем записи и временем обращение больше чем указано, то данные запрашиваются заново, иначе берутся из файла кэша
$ShadowCopies.Cache=$Cache
#имя файла кэша
if ($CacheFile -eq "") {
    $ShadowCopies.CacheFile=$MyInvocation.mycommand.name+".xml"  
} else {
    $ShadowCopies.CacheFile=$CacheFile
}



#метод которые заменяет стандартный Get в MainHashRename. Собственно, здесь и получают данные

#первый аргумент метода размер, меньше которого устройства не рассматриваются.
$ShadowCopies|Add-Member -MemberType ScriptMethod -Name "Get" -Force -Value {
    
    #минимально интересный размер устройства, аргумент метода
    $ms=1
    if ($args[0]) {
        $ms=[int64]([string]$args[0])
    }
    
    #получаем все тома, которые поддерживаются теневое копирование
    $ShadowVolumeSupport=get-wmiobject -Class win32_ShadowVolumeSupport

    #идем по всем отношениям "том поддерживающий теневое копирование - провайдер теневого копирования"
    foreach ($svs in $ShadowVolumeSupport) {
        

        #если провайдер не системный, то не рассматриваем
        if (([wmi]$svs.Antecedent).Type -ne 1) {
            continue
        }
    
        #сохраняем объекты, содержищиеся в ассоциированном классе win32_shadowvolumesupport 
        #сохраняем том
        $Volume=[wmi]$svs.Dependent
        
        #сохраняем провайдера теневых копий
        $ShadowProvider=[wmi]$svs.Antecedent

        #Если рассматриваемые том меньшего объема, чем указан
        if ($Volume.Capacity -lt $ms) {
            continue;
        }
        
        #создаем новый элемент списка как хеш DefaultKeys
        $this.CreateHash()
        
        ###из volume заполняем некоторые значения хэша
        $this.SetValue("Name",$Volume.Name)
        $this.SetValue("DeviceID",$Volume.DeviceID)
	$this.SetValue("DriveLetter",$Volume.DriveLetter)

	#$Volume.Name
	#$Volume.DeviceID
        #получаем ссылающийся на класс win32_volume класс win32_shadowstorage. Класс win32_shadowstorage связывает том для которого делаются теневые копии и том, на котором хранятся теневые копии
        #из самого объекта win32_shadowstorage получаем информацию о выделенном пространстве под теневые копии, максимальном пространстве и использованном пространстве под теневые копии
        $ShadowStorage=%{Get-WmiObject -Query "REFERENCES OF {Win32_volume.DeviceID=`"$($volume.DeviceID.replace('\','\\'))`"} WHERE ResultClass=Win32_ShadowStorage"}
        
       
	#если полученный объект не пустой и выделенное место больше 0, то считаем, что создание копий включено
        if ($ShadowStorage -and $ShadowStorage.AllocatedSpace -gt 0) {
            $this.SetValue("ShadowCopiesOn",1)
            
        } else {
            $this.SetValue("ShadowCopiesOn",0)
	    continue
        }
        #$Volume.DeviceID
	#$Volume.DriveLetter
	#$this.GetValue("ShadowCopiesOn")

        #получаем объект Win32_Volume для того тома, на котором хранятся теневые копии. Они могу не совпадать с томом для которого делаются теневые копии.
        $DiffVolume=[wmi]$ShadowStorage.DiffVolume

        ###из ShadowStorage 
        $this.SetValue("UsedSpace",$ShadowStorage.UsedSpace)
        $this.SetValue("AllocatedSpace",$ShadowStorage.AllocatedSpace)
        $this.SetValue("MaxSpace",$ShadowStorage.MaxSpace)
	
        try {
            $this.SetValue("UsedPercentage",[math]::round((($ShadowStorage.UsedSpace/$ShadowStorage.AllocatedSpace)*100),0))
        }
        catch {
            #$ShadowCopies.ValueInsert("ShadowCopyUsedPercentage",100)
        }

        try {
            $this.SetValue("AllocatedPercentage",[math]::round((($ShadowStorage.MaxSpace/$Volume.Capacity)*100),0))
            #$this.SetValue("AllocatedPercent",$Volume.Capacity)
        }
        catch {
            #$ShadowCopies.ValueInsert("ShadowCopyUsedPercentage",100)
        }

    
        

        #получаем DeviceID тома на котором хранятся теневые копии
        $this.SetValue("DiffVolume",$DiffVolume.Name)
        
        #####Получаем Win32_ShadowCopy, который содержит свойства теневых копий через ассоциированный класс Win32_ShadowFor.
        #Класс Win32_ShadowFor связывает Win32_Volume для тома на котором хранятся теневые копии и класс Win32_ShadowCopy, который содержит свойства теневых копиий.
        
        $sc=%{Get-WmiObject -Query "Associators Of {Win32_volume.DeviceID=`"$($volume.DeviceID.replace('\','\\'))`"} WHERE AssocClass=Win32_ShadowFor"}
    
        $count=0
        #бежим по копиям, их можно посчитать и найти наиболее свежую
        foreach ($s in $sc) {
            $count++
            
            if ($this.GetValue("InstallDate") -lt $s.InstallDate) {
                    $this.SetValue("InstallDate",$s.InstallDate)
              }
              
        }
    
        $this.SetValue("Count",$count)
        
        
        $di=$this.GetValue("InstallDate") -replace "\..+$",""
        
        #конвертация даты
        $d=New-Object DateTime
        if ([datetime]::tryparseexact($di,'yyyyMMddHHmmss',[System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimestyles]::None, [ref]$d)){
            $this.SetValue("Date",$d.ToString())
        }
        
        #возраст теневой копии в часах
        $this.SetValue("AgeInHours",[math]::round((((Get-Date)-$d).totalhours),0))
    }
}




#получение данных через getdata
#может принимать список неименованных параметров. Данные получаются либо из кэша, либо из переопределенного выше метода get
$ShadowCopies.GetData($minVolumeSize)

#формируем строку вывода
$ShadowCopies.PrintOutputStr()
#выводим строку
#$ShadowCopies.OutputStr

if ($DebugPrint) {
	$ShadowCopies.DebugOutput()
}
Контролируемый parametrs:
1) Тень копии включены / выключено. Существует триггер.
2) Количество теневых копий.
3) Возраст теневых копий, часов. Существует триггер.
4) Последняя дата теневой копии.
5) выделено пространство теневых копий по объему. Процент емкости тома. Существует триггер.
6) используется пространство теневых копий. Существует триггер.

Графики:
1) Количество теневых копий
2) используется пространство теневых копий


Шаблон контролирует теневые копии.
Минимальная версия 3.0 является PowerShell

Проверка вывода должен работать сценарий как администратор:
powershell.exe -nologo -NoProfile -ExecutionPolicy Обходной -command "& {Set-Location 'полный путь к сценарию, например: C: \ Zabbix \ сценарий';. \ shadow_copies.ps1}"
powershell.exe -nologo -NoProfile -ExecutionPolicy Обходной -command "& {Set-Location 'полный путь к сценарию, например: C: \ Zabbix \ сценарий';. \ shadow_copies.ps1 -debugprint}"

в Zabbix агент конфигурации:
UserParameter = tega.discovery.shadowcopies [*], powershell.exe -nologo -NoProfile -ExecutionPolicy Обходной -command «& {Set-Location 'полный путь к сценарию, например: C: \ Zabbix \ сценарий';. \ Shadow_copies.ps1 $ 1 }»

Контролируемый parametrs:
1) Тень копии включены / выключено. Существует триггер.
2) Количество теневых копий.
3) Возраст теневых копий, часов. Существует триггер.
4) Последняя дата теневой копии.
5) выделено пространство теневых копий по объему. Процент емкости тома. Существует триггер.
6) используется пространство теневых копий. Существует триггер.

Графики:
1) Количество теневых копий
2) используется пространство теневых копий

Для настройки шаблона макросы используются.

{$} CACHE_TIME_TWSCST Cache TTL. 0 - кэш выключена, секунды
Гурт для триггеров:
{$ MAX_ALLOCATED_PERCENT_TWSCST} Выделенного пространство теневых копий на томе, процент емкости объема
{$ MAX_USED_PERCENT_TWSCST} Использованное пространство теневых копий, проценты емкости для хранения теневых копий
{$ MIN_SIZE_TWSCST} минимальный размер объема для работы шаблона, байты
{$ SHADOWCOPY_AGE_TWSCST} Возраст теневых копий, часы

Шаблон использует shadow_copies.ps1 для получения данных.
контролирует теневые копии
контролирует теневые копии
Макросы
{$TWSCST_CACHE_TIME} => 0
{$TWSCST_MAX_ALLOCATED_PERCENT} => 10
{$TWSCST_MAX_USED_PERCENT} => 99
{$TWSCST_MIN_SIZE} => 10000000000
{$TWSCST_SHADOWCOPY_AGE} => 50


Группы элементов данных
Теневые копии


Правила обнаружения
Откройте для себя теневые копии Прототипы элементов данных 6 Прототипы триггеров 4 Прототипы графиков 2 Прототипы узлов сети tega.discovery.shadowcopies["-minVolumeSize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME}"] 3600 Zabbix агент (активный) Активировано
контролирует теневые копии - Прототипы
контролирует теневые копии - Прототипы
Прототипы элементов данных
Выделенное пространство теневых копий по объему, в процентах {#NAME} allocatedpercentage[{#NAME}] 3600 90d 10d Вычисляемое Теневые копии Да

Возраст теневых копий на {#NAME} tega.discovery.shadowcopies["-minvolumesize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME} -SearchKey Name -SearchValue '{#NAME}' -PrintKey ageinhours"] 3600 90d 10d Zabbix агент (активный) Теневые копии Да

Количество теневых копий на {#NAME} tega.discovery.shadowcopies["-minvolumesize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME} -SearchKey Name -SearchValue '{#NAME}' -PrintKey count"] 3600 90d 10d Zabbix агент (активный) Теневые копии Да

Дата последней теневой копии {#NAME} tega.discovery.shadowcopies["-minvolumesize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME} -SearchKey Name -SearchValue '{#NAME}' -printkey date"] 3600 90d Zabbix агент (активный) Теневые копии Да

Включены копии теней {#NAME} tega.discovery.shadowcopies["-minvolumesize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME} -SearchKey Name -SearchValue '{#NAME}' -printkey shadowcopieson"] 3600 90d 10d Zabbix агент (активный) Теневые копии Да

Используемое пространство теневых копий, в процентах {#NAME} usedpercentage[{#NAME}] 3600 90d 10d Вычисляемое Теневые копии Да


Прототипы триггеров
Высокая Включение/выключение теневых копий {#NAME} {Windows Shadow Copies small Tega:tega.discovery.shadowcopies["-minvolumesize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME} -SearchKey Name -SearchValue '{#NAME}' -printkey shadowcopieson"].last()}=0 Да

Средняя Возраст теневых копий на {#NAME}
Зависит от:
контролирует теневые копии: Включение/выключение теневых копий {#NAME}
{Windows Shadow Copies small Tega:tega.discovery.shadowcopies["-minvolumesize {$TWSCST_MIN_SIZE} -cache {$TWSCST_CACHE_TIME} -SearchKey Name -SearchValue '{#NAME}' -PrintKey ageinhours"].last()}>{$TWSCST_SHADOWCOPY_AGE} Да

Высокая Выделенное пространство теневых копий {#NAME}
Зависит от:
контролирует теневые копии: Включение/выключение теневых копий {#NAME}
{Windows Shadow Copies small Tega:allocatedpercentage[{#NAME}].last()}>{$TWSCST_MAX_ALLOCATED_PERCENT} Да

Высокая Используемое пространство теневых копий {#NAME}
Зависит от:
контролирует теневые копии: Включение/выключение теневых копий {#NAME}
{Windows Shadow Copies small Tega:usedpercentage[{#NAME}].last()}>{$TWSCST_MAX_USED_PERCENT} Да


Прототипы графиков
Используемое пространство теневых копий, в процентах {#NAME} 900 200 Нормальный
Количество теневых копий на {#NAME} 900 200 Нормальный


Мои Преобразования
количество слов: 1553

Вернуться в «Windows, Server»