Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение
Сколько потребляет данное устройство?
Как долго устройство сможет работать на аккумуляторе автомобиля, так что бы автомобиль потом завелся без проблем?
Полезное и нужное устройство. К тому же автор не только сделал устройство, но и организовал рекламу, сервис и даже узаконил продукт.
Я правильно понимаю, что сейчас идет разработка устройства для инсталляций (встроенные в стену система слива)?

P.S. Статья имеет много лишнего контента. Читал статью «по диагонали». Тем не менее смысл был понятен. ИМХО.
Попробую. Ни разу еще не писал статьи для Хабра.
Скрипт для сбора статистики почтового трафика (отправлено / получено) в байтах на Exchange за дельту времени и отправка в PRTG
###################################################################################
# Скрипт для сбора статистики почтового трафика (отправлено / получено) в байтах
# на Exchange за дельту времени.
###################################################################################
#
#Сохраняем ошибки в файл "TrafficExchange2XML-Error.xml" и продолжаем выполнение скрипта "continue"
trap {$_ | Export-Clixml TrafficExchange2XML-Error.xml; continue}
#Отключаем вывод Warning, предварительно запомним текущее значение, для того что бы вернуть его обратно.
$CurrentWarningPreference = $WarningPreference
$WarningPreference = "SilentlyContinue"
#Подключаемся к Exchange
#Если консоль Exchange Management Shell установлена
#add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 
#Если консоль Exchange Management Shell НЕ установлена.
$session=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange/powershell
Import-PSSession $session
#Получаем все CAS сервера
#Если работает авто определение
#$CASs = (Get-ClientAccessServer).Name
#Если НЕ работает авто определение
$CASs = "CAS01", "CAS02", "CAS03"
#Дельта времени подсчета.
$DeltaTime = New-TimeSpan -Hours 1
#Переменные для подсчета почтового трафика
[int]$ReceivedTOTAL = 0
[int]$SentTOTAL = 0
#Для каждого CAS сервера расчитываем трафик за период времени $DeltaTime
ForEach ($CAS in $CASs)
      {
      $Received = Get-MessageTrackingLog -Server $CAS -ResultSize unlimited -Start ((Get-Date) - $DeltaTime) -End (Get-Date) -EventId RECEIVE | Measure-Object TotalBytes -sum
      $Send = Get-MessageTrackingLog -Server $CAS -ResultSize unlimited -Start ((Get-Date) - $DeltaTime) -End (Get-Date) -EventId SEND | Measure-Object TotalBytes -sum
      $ReceivedTOTAL = $ReceivedTOTAL + $Received.Sum
      $SentTOTAL = $SentTOTAL + $Send.Sum
      }
#Выводим результат в XML формате для PRTG.
write-host '<?xml version="1.0" encoding="Windows-1252" ?>'

write-host '<prtg>'

write-host	'<result>'
write-host		'<channel>Exchange received traffic</channel>'
write-host		'<customUnit>Bytes</customUnit>'
write-host		'<value>'$ReceivedTOTAL'</value>'
write-host	'</result>'

write-host	'<result>'
write-host		'<channel>Exchange send traffic</channel>'
write-host		'<customUnit>Bytes</customUnit>'
write-host		'<value>'$SentTOTAL'</value>'
write-host	'</result>'

write-host '</prtg>'
#Разрываем сессию с CAS сервером Exchange.
Remove-PSSession $session
#Возвращаем вывод Warning
$WarningPreference = $CurrentWarningPreference

Дельта не рассчитывается. Она устанавливается в ручную. Например, нужно знать сколько писем пришло за 1 час. 1 час это и будет дельта. Ее мы задаем в скрипте, и в настройке сенсора в PRTG, поле «Scanning Interval». Предыдущее значение скрипт не хранит. Он все время рассчитывает за дельту времени. В моем случае за один час назад (дельта). Как только скрипт рассчитал значение, он их передает в PRTG через «write-host» в формате XML. Смотрите код выше. PRTG строит графики, и хранит последние полученные значения. Смотрите мой скриншот. Период хранения полученной информации, задается настройками PRTG.

Если есть интерес, могу завтра выложить полный код скрипта.
Скрипт работает на сервере PRTG. Скрипт подключается к Exchange через командлеты

$session=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange/powershell
Import-PSSession $session

Скрипт делает расчет только за указанную дельту времени (я установил 1 час), и рассчитывает только две переменные. Сколько получено байт "$ReceivedTOTAL" и сколько отправлено байт "$SentTOTAL"
Вывод результата нужно делать через «write-host» но при этом в формате XML.
#Выводим результат в XML формате для PRTG.
write-host '<?xml version="1.0" encoding="Windows-1252" ?>'

write-host '<prtg>'

write-host	'<result>'
write-host		'<channel>Exchange received traffic</channel>'
write-host		'<customUnit>Bytes</customUnit>'
write-host		'<value>'$ReceivedTOTAL'</value>'
write-host	'</result>'

write-host	'<result>'
write-host		'<channel>Exchange send traffic</channel>'
write-host		'<customUnit>Bytes</customUnit>'
write-host		'<value>'$SentTOTAL'</value>'
write-host	'</result>'

write-host '</prtg>'


В PRTG создаешь группу которая прослушивает любой действующий IP, т.к. сенсор в этой группе будет запускать PowerShell скрипт, а скрипт сам подключается к Exchange. Т.е. нам не важен какой IP будет прослушивать данная группа. Я использовал IP 127.0.0.1
Далее в группе создаешь сенсор «XML Custom EXE/Script Sensor». В поле «EXE/Script» указываешь скрипт PowerShell, предварительно выложив его на сервере PRTG по пути «c:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML». В поле «Scanning Interval» выставляешь с какой периодичностью будет запускаться скрипт. Периодичность равна дельте времени в скрипте.
И Все. Ждешь когда накопится статистика.

Вроде мы ничего не забыл. С удовольствием отвечу на Ваши вопросы если, что то не понятно.
Спасибо за статью.
Делал что то подобное на PowerShell и прикручивал к система мониторинга PRTG для визуализации.

image

Информация

В рейтинге
Не участвует
Откуда
Среднеуральск, Свердловская обл., Россия
Зарегистрирован
Активность

Специализация

System Software Engineer
Lead
От 100 000 ₽
PowerShell
Microsoft Exchange Server
Windows administration
System administration
Active Directory
Virtualization systems
Hyper-V
Asterisk
Mikrotik
Network monitoring