ΠΠ°ΡΠΊΠΎΡΠΎ ΠΏΡΠ΅Π΄ Π½Π°Ρ Π²ΡΠ·Π½ΠΈΠΊΠ½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π΄Π° ΡΠ»Π΅Π΄ΠΈΠΌ ΡΡΠΎΠΊΠ° Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠΈΡΠ΅ Ρ Windows. ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΡΠ°Π²Π°Ρ Π° Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΡΠΎΡΠ½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈΡΡ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΏΠΎΠ΄Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΊΠΎΠ»Π΅Π³Π° Ρ Π΄ΡΠ»Π³Π° Π±ΡΠ°Π΄Π° Π±Π΅ΡΠ΅ Π² ΠΎΡΠΏΡΡΠΊ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈ Π΄Π²Π°ΠΌΠ°ΡΠ° Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ·ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΌΠΈΡΠ»ΠΈΠΌ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π²ΡΠΏΡΠΎΡ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Ρ Π½Π°Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ΅ Π²Π½Π΅Π΄ΡΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ NetXMS, ΡΡ ΡΡΠ°Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΈ, Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ°.
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ Π±Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ Π² ΡΠ°ΠΊΡΠ² Π²ΠΈΠ΄:

Π ΡΠ°ΠΌΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ.
ΠΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ. Π NetXMS Π½ΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ Π±ΡΠΎΡΡ Π·Π° ΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, Π·Π°ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π° Powershell, Π²ΡΠ΅ ΠΏΠ°ΠΊ Π΅ Windows. Π‘ΠΊΡΠΈΠΏΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΡΡΠΎΠΊΠ° Π½Π° ΡΡΡ
Π½Π°ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ Π² Π΄Π½ΠΈ ΠΈ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ ΡΠΎΠ²Π° ΡΠΈΡΠ»ΠΎ Π² NetXMS. Π§ΡΠ΅Π· Π½Π΅Π³ΠΎΠ²ΠΈΡ Π°Π³Π΅Π½Ρ. Π’ΠΎΡΠ½ΠΎ Ρ Π½Π΅Π³ΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ.
ΠΡΡΠ²ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ, Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ. ΠΡΠΎΡΡΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π±ΡΠΎΡ Π΄Π½ΠΈ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Ρ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠ° Π΄Π°ΡΠ°.
ΠΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ ΡΡΡΠ²ΡΡΡΡ NetXMS Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈ ΠΎΡ Π°Π³Π΅Π½ΡΠ°. Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΎΡΡΡΡΡΠ²ΠΈΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° Π°Π³Π΅Π½ΡΠ° nxagentd.conf Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅Π΄ Π·Π° Π²ΡΠ½ΡΠ½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΠΈΠΌΠ΅ΡΠΎ HTTPS.CertificateExpireDateSimple, Π² ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΠΎΡΠ²Π°ΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°:
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"ΠΠ°ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡΡ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π±ΡΠ°Π²ΡΠΌΠ΅ Π·Π° , Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π΅ Π±ΠΈΠ²Π° Π΄Π° Π·Π°Π±ΡΠ°Π²ΡΠΌΠ΅ Π΄ΡΡΠ³ΠΈΡΠ΅ β-NoLogo -NoProfile -NonInteractiveβ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΏΡΡΠ½Π°Ρ Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ° ΡΠ΅ΡΠΈΠΌΠΎΡΡ Π½Π° ΠΊΠΎΠ΄Π°.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π°Π³Π΅Π½ΡΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΊΠ°:
#
# NetXMS agent configuration file
# Created by agent installer at Thu Jun 13 11:24:43 2019
#
MasterServers = netxms.corp.testcompany.ru
ConfigIncludeDir = C:NetXMSetcnxagentd.conf.d
LogFile = {syslog}
FileStore = C:NetXMSvar
SubAgent = ecs.nsm
SubAgent = filemgr.nsm
SubAgent = ping.nsm
SubAgent = logwatch.nsm
SubAgent = portcheck.nsm
SubAgent = winperf.nsm
SubAgent = wmi.nsm
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΈ Π΄Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π°Π³Π΅Π½ΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΡ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° NetXMS: ΠΎΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° (Edit agentβs configuration file), ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΉΡΠ΅, ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ Save&Apply, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ, Π²ΡΡΡΠ½ΠΎΡΡ, ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΡΡΠΎΡΠΎ. ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° (Poll > Configuration), Π°ΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ°ΡΠ΅. Π‘Π»Π΅Π΄ ΡΠ΅Π·ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
Π ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° NetXMS ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² Data Collection Configuration Π½Π°ΡΡΠ½ΠΈΡ ΡΡΡΠ²ΡΡ, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ»Π΅Π΄ΠΈΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ°, ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° Π³ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΠΌ Π² ΡΠ°Π±Π»ΠΎΠ½ΠΈ). ΠΠ·Π±ΠΈΡΠ°ΠΌΠ΅ HTTPS.CertificateExpireDateSimple ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ°, Π²ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΎ ΠΈΠΌΠ΅, ΡΠΈΠΏ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ Integer ΠΈ Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ, 30 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΡΠΎΠ²ΠΎ, Π·Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ.
ΠΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌβ¦ Π½Π΅, Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ ΡΠ°Π½ΠΎ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ, Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΠΈΡΠΎ. ΠΡΠΎΡΡΠΎ Π·Π°ΡΠΎΡΠΎ ΡΠΊΡΠΈΠΏΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½. ΠΠ·ΠΏΡΠ°Π²ΡΠΌΠ΅ ΡΠΎΠ²Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½Π΅. Π‘ΠΊΡΠΈΠΏΡΡΡ ΡΠ΅ Π²ΡΡΡΠ° ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ»ΠΎ, Π±ΡΠΎΡ Π½Π° Π΄Π½ΠΈΡΠ΅, ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°. ΠΠ°ΠΉ-ΠΌΠ°Π»ΠΊΠ°ΡΠ° ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅. ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΊΡΠΈΠΏΡ:
try {
# ΠΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ
$lmCertificates = @( Get-ChildItem -Recurse -path 'Cert:LocalMachineMy' -ErrorAction Stop )
# ΠΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π»ΠΈΠΏΡΠ²Π°Ρ, Π²ΡΡΡΠ°ΠΌΠ΅ "10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ"
if ($lmCertificates.Count -eq 0) { return 3650 }
# ΠΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π΄Π°ΡΠ°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ
$expirationDates = @( $lmCertificates | ForEach-Object { return $_.NotAfter } )
# ΠΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠ°ΡΠ° Π΄Π°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ
$minExpirationDate = ($expirationDates | Measure-Object -Minimum -ErrorAction Stop ).Minimum
# ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠ°ΡΠ° Π΄Π°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π² Π±ΡΠΎΠΉ ΠΎΡΡΠ°Π²Π°ΡΠΈ Π΄Π½ΠΈ Ρ Π·Π°ΠΊΡΡΠ³Π»ΡΠ½Π΅ ΠΊΡΠΌ ΠΏΠΎ-Π½ΠΈΡΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ
$daysLeft = [Math]::Floor( ($minExpirationDate - [DateTime]::Now).TotalDays )
# ΠΡΡΡΠ°ΠΌΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ°
return $daysLeft
}
catch {
return -1
}ΠΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:

723 Π΄Π½ΠΈ, Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΎΡΡΠ°Π²Π°Ρ ΠΏΠΎΡΡΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΠΎΠ³ΠΈΡΠ½ΠΎ, Π·Π°ΡΠΎΡΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΡΠΎΠ²ΠΈΡ ΡΡΠ΅Π½Π΄ Π½Π° Exchange Π³ΠΈ ΠΏΡΠ΅Π·Π°Π²Π΅ΡΠΈΡ
ΡΡΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ.
Π’ΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΏΡΠΎΡΡ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π½ΡΠΊΠΎΠΉ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ²ΡΡΠ²Π° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ ΠΈ ΠΎΡ Π½Π΅Π³ΠΎ, Π½ΠΎ Π½ΠΈΠ΅ ΠΈΡΠΊΠ°Ρ ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅. ΠΠΎΡΡΠ°Π²ΠΈΡ ΠΌΠ΅ ΡΠΈ Π·Π° Π·Π°Π΄Π°ΡΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π½Π° ΡΡΡΠ²Π΅ΡΠ° ΠΏΠΎΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ ΠΎΡΡΠ°Π²Π°Ρ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
ΠΡΠΎΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΡΠ½ΠΎΠ²ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π°Π³Π΅Π½ΡΠ° ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π΄Π° Ρ ExternalParameter ΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π΅ Π΄ΡΡΠ³ΠΈ:
ExternalList = HTTPS.CertificateNames: powershell.exe -File "serversharenetxms_CertExternalNames.ps1"
ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -File "serversharenetxms_CertExternalParameter.ps1" -CertificateId "$1"Π ExternalList ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΠ΅Π΄ΠΎΠ²Π΅. Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅. Π’ΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠ°. ΠΠΌΠ΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΡΠΊΠ° Π΅ HTTPS.CertificateNames.
Π‘ΠΊΡΠΈΠΏΡΡΡ NetXMS_CertNames.ps1:
#Π‘ΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΈΠΌΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²
$nameTypeList = @(
[System.Security.Cryptography.X509Certificates.X509NameType]::SimpleName,
[System.Security.Cryptography.X509Certificates.X509NameType]::DnsName,
[System.Security.Cryptography.X509Certificates.X509NameType]::DnsFromAlternativeName,
[System.Security.Cryptography.X509Certificates.X509NameType]::UrlName,
[System.Security.Cryptography.X509Certificates.X509NameType]::EmailName,
[System.Security.Cryptography.X509Certificates.X509NameType]::UpnName
)
#ΠΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ
$certList = @( Get-ChildItem -Path 'Cert:LocalMachineMy' | Where-Object { $_.HasPrivateKey -eq $true } )
#ΠΡΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ², ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ "ΠΠΌΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° - ΠΠ°ΡΠ° - Thumbprint" ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π΅Ρ
foreach ($cert in $certList) {
$name = '(unknown name)'
try {
$thumbprint = $cert.Thumbprint
$dateExpire = $cert.NotAfter
foreach ($nameType in $nameTypeList) {
$name_temp = $cert.GetNameInfo( $nameType, $false)
if ($name_temp -ne $null -and $name_temp -ne '') {
$name = $name_temp;
break;
}
}
Write-Output "$($name) - $($dateExpire.ToString('dd.MM.yyyy')) - [T:$($thumbprint)]"
}
catch {
Write-Error -Message "Error processing certificate list: $($_.Exception.Message)"
}
}Π Π²Π΅ΡΠ΅ Π² ExternalParameter ΠΠΈΠ΅ ΠΏΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π½Π° Π²Ρ ΠΎΠ΄Π° Π½ΠΈΠ·ΠΈ ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ° ExternalList, Π° Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡΡΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½ΠΈ Π·Π° Π²ΡΡΠΊΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ Π΅ Thumbprint Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ HTTPS.CertificateExpireDate Π² ΡΠΎΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ΄ΡΡΠΆΠ° Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ° (*). Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° Π²ΡΠ½ΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡΠΈΡ CertificateId.
Π‘ΠΊΡΠΈΠΏΡΡΡ NetXMS_CertExpireDate.ps1:
#ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ $CertificateId
param (
[Parameter(Mandatory=$false)]
[String]$CertificateId
)
#ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅
if ($CertificateId -eq $null) {
Write-Error -Message "CertificateID parameter is required!"
return
}
#ΠΠΎ Thumbprint ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π² $CertificateId ΠΈΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Expiration Date
$certId = $CertificateId;
try {
if ($certId -match '^.*[T:(?<Thumbprint>[A-Z0-9]+)]$') {
$thumbprint = $Matches['Thumbprint']
$certificatePath = "Cert:LocalMachineMy$($thumbprint)"
if (Test-Path -PathType Leaf -Path $certificatePath ) {
$certificate = Get-Item -Path $certificatePath;
$certificateExpirationDate = $certificate.NotAfter
$certificateDayToLive = [Math]::Floor( ($certificateExpirationDate - [DateTime]::Now).TotalDays )
Write-Output "$($certificateDayToLive)";
}
else {
Write-Error -Message "No certificate matching this thumbprint found on this server $($certId)"
}
}
else {
Write-Error -Message "CertificateID provided in wrong format. Must be FriendlyName [T:<thumbprint>]"
}
}
catch {
Write-Error -Message "Error while executing script: $($_.Exception.Message)"
}Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π ΠΏΠΎΠ»Π΅ΡΠΎ Parameter ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡ HTTPS.CertificateExpireDate(*) ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ° ΠΈ, (Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!) ΡΠΌΠ΅Π½ΡΠΌΠ΅ Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ°ΡΠ° Ρ {instance}. Π’ΠΎΠ·ΠΈ Π²Π°ΠΆΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π±ΡΠΎΡΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΈΠ½ΡΡΠ°Π½Ρ (ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ). ΠΡΡΠ°Π½Π°Π»ΠΎΡΠΎ ΡΠ΅ Π·Π°ΠΏΡΠ»Π²Π°, ΠΊΠ°ΠΊΡΠΎ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π²Π°ΡΠΈΠ°Π½Ρ:

ΠΠ° Π΄Π° ΠΈΠΌΠ° ΠΎΡ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π±ΡΠΎΡΡΠΈΡΠ΅, Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° Instance Discovery ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Agent List ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ° ΠΈ Π² ΠΏΠΎΠ»Π΅ΡΠΎ List Name Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡ ExternalList ΠΎΡ ΡΠΊΡΠΈΠΏΡΠ° β HTTPS.CertificateNames.
ΠΠΎΡΡΠΈ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, ΠΌΠ°Π»ΠΊΠΎ Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ°ΠΌΠ΅ ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΡΡΠ½ΠΎ Poll > Configuration ΠΈ Poll > Instance Discovery, Π°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°ΠΊΠ°ΠΌΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΡΡΡ ΡΡΠΎΠΊΠΎΠ²Π΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ:
Π’ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° Π»ΠΈ Π΅? Π, Π΄Π°, Π½ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π° ΠΏΠ΅ΡΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΠ·ΠΌΠ° Π³Π»Π΅Π΄Π° Π½Π° ΡΠΎΠ·ΠΈ Π½Π΅Π½ΡΠΆΠ΅Π½ Thumbprint Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π±ΡΠΎΡΡΠ° Ρ ΡΡΠΆΠ½ΠΈ ΠΎΡΠΈ ΠΈ Π½Π΅ ΠΌΡ Π΄Π°Π²Π° Π΄Π° Π·Π°Π²ΡΡΡΠΈ ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°Ρ ΡΠ°Π½ΠΈΠΌ, ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΎΡΠ²Π°ΡΡΠΌΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° Π±ΡΠΎΡΡΠ° ΠΈ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° Instance Discovery Π² ΠΏΠΎΠ»Π΅ΡΠΎ βInstance discovery filter scriptβ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° (Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ Π΅Π·ΠΈΠΊ Π½Π° NetXMS) ΡΠΊΡΠΈΠΏΡ:
instance = $1;
if (instance ~= "^(.*)s-s[T:[a-zA-Z0-9]+]$")
{
return %(true, instance, $1);
}
return true;ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠΈΠ»ΡΡΠΈΡΠ° Thumbprint:

Π Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΎΡΡΠΈΠ»ΡΡΠΈΡΠ°Π½ΠΈΡΡ, Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° General Π² ΠΏΠΎΠ»Π΅ΡΠΎ Description ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ CertificateExpireDate: {instance} Π½Π° CertificateExpireDate: {instance-name}:

ΠΡΠΈΡΠΊΠΎ, Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΠΊΡΠ°ΠΉ ΠΎΡ ΠΠΠΠ:
ΠΡΠ°ΡΠΈΠ²Π° ΡΠ°Π±ΠΎΡΠ° Π½Π°Π»ΠΈ?
ΠΡΡΠ°Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΈΠ·Π²Π΅ΡΡΠΈΡ, Π·Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ», ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠΎΠΊΡΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π°Π±Π»ΠΈΠΆΠ°Π²Π° Π»ΠΎΠ³ΠΈΡΠ½ΠΈΡ ΡΠΈ ΠΊΡΠ°ΠΉ.
1. ΠΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΡΡΠ±ΠΈΡΠΈΠ΅ (Event Template), Π·Π° Π΄Π° ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π±ΡΠΎΡΡΠ° Π΄ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΎΡ Π½Π°Ρ ΠΏΡΠ°Π³. Π Event Configuration ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄Π²Π° Π½ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Ρ ΠΈΠΌΠ΅Π½Π°, Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ CertificateExpireDate_Threshold_Activate ΡΡΡ ΡΡΠ°ΡΡΡ Warning:

ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ CertificateExpireDate_Threshold_Deactivate ΡΡΡ ΡΡΠ°ΡΡΡ Normal.
2. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° Π±ΡΠΎΡΡΠ° ΠΈ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° Tresholds Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΠΏΡΠ°Π³Π°:

ΠΊΡΠ΄Π΅ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ CertificateExpireDate_Threshold_Activate ΠΈ CertificateExpireDate_Threshold_Deactivate, Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½ΠΈΡ (Samples) 1 (ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π·Π° ΡΠΎΠ·ΠΈ Π±ΡΠΎΡΡ Π½ΡΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅), ΡΡΠΎΠΉΠ½ΠΎΡΡ 30 (Π΄Π½ΠΈ), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ, Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ. ΠΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ Π·Π°Π΄Π°Π²Π°ΠΌ Π²Π΅Π΄Π½ΡΠΆ Π½Π° Π΄Π΅Π½ (86400 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ), ΠΈΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΠΏΠΈΠΌ Π² ΠΈΠ·Π²Π΅ΡΡΠΈΡ (ΠΊΠΎΠ΅ΡΠΎ, ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π²Π΅Π΄Π½ΡΠΆ ΡΠ΅ ΡΠ»ΡΡΠΈ, ΠΈ ΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΊΠ°ΡΠ° ΠΊΡΡΠΈΡ ΠΏΡΠ΅Π»ΠΈΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π· ΡΠΈΠΊΠ΅Π½Π΄Π°). ΠΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, 60 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ.
3. Π Action Configuration ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΡΠΎΠ·ΠΈ:

ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ %m, %S ΠΈ Ρ.Π½. β ΠΌΠ°ΠΊΡΠΎΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²Π΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ Π½Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° ΡΡΡ
ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² NetXMS.
4. Π, Π½Π°ΠΊΡΠ°Ρ, ΡΡΡΠ΅ΡΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ, Π² Event Processing Policy ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° Alarm ΠΈ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΈΠΌΠ΅ΠΉΠ»:
ΠΠ°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅. Π©Π΅ Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊ ΠΏΡΠ°Π³ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°. ΠΠ°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠΈΡΡ ΠΌΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈΠ·ΡΠΈΡΠ° ΡΠ»Π΅Π΄ 723 Π΄Π½ΠΈ, Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°Π΄Π°Π΄ΠΎΡ 724. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°ΠΊΡΠ² Π°Π»Π°ΡΠΌ:

ΠΈ ΡΠ°ΠΊΠΎΠ²Π° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅ΠΉΠ»:

ΠΡΠΎ, ΡΠ΅Π³Π° Π½Π°ΠΈΡΡΠΈΠ½Π° Π²ΡΠΈΡΠΊΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈ ΡΠ°Π±Π»ΠΎ, Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΡΠΎΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ, Π½ΠΎ Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΡΠΎΠ²Π° Π±ΠΈΡ
Π° Π±ΠΈΠ»ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π±Π΅Π·ΡΠΌΠΈΡΠ»Π΅Π½ΠΈ ΠΈ ΡΠΊΡΡΠ½ΠΈ ΠΏΡΠ°Π²ΠΈ Π»ΠΈΠ½ΠΈΠΈ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠΈ Π·Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎ, Π·Π° ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π΄ΡΡΠ³ ΠΏΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
