initial commit
This commit is contained in:
parent
94c231587c
commit
14dfaffc80
57
agents/plugins/SPH-Exchange-MailboxSize.ps1
Normal file
57
agents/plugins/SPH-Exchange-MailboxSize.ps1
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
|
#write-output "" # workaround to prevent the byte order mark to be at the beginning of the first section
|
||||||
|
#####################################################################################
|
||||||
|
# Exchange 2010 : per user mailbox size
|
||||||
|
# Author: Marius Pana
|
||||||
|
# Company: Spearhead Systems
|
||||||
|
# Date 12/16/14
|
||||||
|
#####################################################################################
|
||||||
|
|
||||||
|
add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
|
||||||
|
|
||||||
|
# measure time
|
||||||
|
#Measure-Command {$(Foreach ($mailbox in Get-Recipient -ResultSize Unlimited -RecipientType UserMailbox){
|
||||||
|
#$Stat = $mailbox | Get-MailboxStatistics | Select TotalItemSize
|
||||||
|
# New-Object PSObject -Property @{
|
||||||
|
# PrimarySmtpAddress = $mailbox.PrimarySmtpAddress
|
||||||
|
# TotalItemSize = $Stat.TotalItemSize.value.ToMB()
|
||||||
|
# }
|
||||||
|
#}) | Select PrimarySmtpAddress,TotalItemSize |
|
||||||
|
#Export-CSV C:\CMK-MailboxReport.csv -NTI}
|
||||||
|
|
||||||
|
# filename for timestamp
|
||||||
|
$remote_host = $env:REMOTE_HOST
|
||||||
|
$agent_dir = $env:MK_CONFDIR
|
||||||
|
|
||||||
|
$timestamp = $agent_dir + "\timestamp."+ $remote_host
|
||||||
|
|
||||||
|
# execute agent only every $delay seconds - 24 hours
|
||||||
|
$delay = 86400
|
||||||
|
|
||||||
|
# does $timestamp exist?
|
||||||
|
If (Test-Path $timestamp){
|
||||||
|
# cat existing outut
|
||||||
|
write-host "<<<exchange_user_mbx_size>>>"
|
||||||
|
Get-Content C:\CMK-MailboxReport.csv
|
||||||
|
$filedate = (ls $timestamp).LastWriteTime
|
||||||
|
$now = Get-Date
|
||||||
|
$earlier = $now.AddSeconds(-$delay)
|
||||||
|
# exit if timestamp to young
|
||||||
|
if ( $filedate -gt $earlier ) { exit }
|
||||||
|
}
|
||||||
|
# create new timestamp file
|
||||||
|
New-Item $timestamp -type file -force | Out-Null
|
||||||
|
|
||||||
|
# calculate unix timestamp
|
||||||
|
$epoch=[int][double]::Parse($(Get-Date -date (Get-Date).ToUniversalTime()-uformat %s))
|
||||||
|
|
||||||
|
$(Foreach ($mailbox in Get-Recipient -ResultSize Unlimited -RecipientType UserMailbox){
|
||||||
|
$Stat = $mailbox | Get-MailboxStatistics | Select TotalItemSize
|
||||||
|
New-Object PSObject -Property @{
|
||||||
|
PrimarySmtpAddress = $mailbox.PrimarySmtpAddress
|
||||||
|
TotalItemSize = $Stat.TotalItemSize.value.ToMB()
|
||||||
|
}
|
||||||
|
}) | Select PrimarySmtpAddress,TotalItemSize |
|
||||||
|
Export-CSV C:\CMK-MailboxReport.csv -NoTypeInformation
|
||||||
|
|
||||||
|
(Get-Content C:\CMK-MailboxReport.csv) | Foreach-Object {$_ -replace '"', ''} | Foreach-Object {$_ -replace ',', ' '} | select -Skip 1 | Set-Content C:\CMK-MailboxReport.csv
|
22
checkman/exchange_user_mbx_size
Normal file
22
checkman/exchange_user_mbx_size
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
title: Check for users Exchange Mailbox size
|
||||||
|
agents: windows
|
||||||
|
catalog: os/windows
|
||||||
|
license: GPL
|
||||||
|
distribution:
|
||||||
|
description:
|
||||||
|
This check checks for individual exchange mailbox sizes.
|
||||||
|
You need to install the plugin {SPH-Exchange-MailboxSize.ps1}
|
||||||
|
into the {plugins} directory of your windows agent.
|
||||||
|
This check was tested with Exchange 2010 and must have PowerShell
|
||||||
|
installed.
|
||||||
|
|
||||||
|
The check gets critical if there mailbox is over 2000 MB and warning
|
||||||
|
if over 1500MB. Both are definable in Wato under "Parameters for
|
||||||
|
Inventorized Checks", "Applications, Processes & Services".
|
||||||
|
|
||||||
|
inventory:
|
||||||
|
One service will be created for each user mailbox where the
|
||||||
|
{SPH-Exchange-MailboxSize.ps1} plugin produces a non-empty output.
|
||||||
|
|
||||||
|
perfdata:
|
||||||
|
One variable: {size}: the current size of the mailbox in MB.
|
67
checks/exchange_user_mbx_size
Normal file
67
checks/exchange_user_mbx_size
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- encoding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# +------------------------------------------------------------------+
|
||||||
|
# | ____ _ _ __ __ _ __ |
|
||||||
|
# | / ___| |__ ___ ___| | __ | \/ | |/ / |
|
||||||
|
# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
|
||||||
|
# | | |___| | | | __/ (__| < | | | | . \ |
|
||||||
|
# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
|
||||||
|
# | |
|
||||||
|
# | Copyright Mathias Kettner 2014 mk@mathias-kettner.de |
|
||||||
|
# +------------------------------------------------------------------+
|
||||||
|
#
|
||||||
|
# This file is part of Check_MK.
|
||||||
|
# The official homepage is at http://mathias-kettner.de/check_mk.
|
||||||
|
#
|
||||||
|
# check_mk is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation in version 2. check_mk is distributed
|
||||||
|
# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
|
||||||
|
# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE. See the GNU General Public License for more de-
|
||||||
|
# ails. You should have received a copy of the GNU General Public
|
||||||
|
# License along with GNU Make; see the file COPYING. If not, write
|
||||||
|
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
# Author: Marius Pana <mp@sphs.ro>
|
||||||
|
|
||||||
|
# EXAMPLE DATA FROM:
|
||||||
|
# fomat: emailaddress size_in_MB
|
||||||
|
#<<<exchange_user_mbx_size>>>
|
||||||
|
#marius.pana@sphs.ro 177
|
||||||
|
#mpana@sphs.ro 81
|
||||||
|
|
||||||
|
exchange_user_mbx_size_default_values = (1500, 2000)
|
||||||
|
|
||||||
|
def inventory_exchange_user_mbx_size(info):
|
||||||
|
inventory = []
|
||||||
|
for line in info:
|
||||||
|
useremail = line[0]
|
||||||
|
mailboxsize = line[1]
|
||||||
|
inventory.append( (useremail, "exchange_user_mbx_size_default_values") )
|
||||||
|
return inventory
|
||||||
|
|
||||||
|
|
||||||
|
def check_exchange_user_mbx_size(item, params, info):
|
||||||
|
#unpack check params
|
||||||
|
warn, crit = params
|
||||||
|
for line in info:
|
||||||
|
if line[0] == item:
|
||||||
|
mailboxsize = int(line[1])
|
||||||
|
perfdata = [ ( "size", mailboxsize, warn, crit ) ]
|
||||||
|
if mailboxsize > crit:
|
||||||
|
return (2, "Mailbox size is %dMB" % mailboxsize, perfdata)
|
||||||
|
elif mailboxsize > warn:
|
||||||
|
return (1, "Mailbox size is %dMB" % mailboxsize, perfdata)
|
||||||
|
else:
|
||||||
|
return (0, "Mailbox size is %dMB" % mailboxsize, perfdata)
|
||||||
|
return(3, "Mailbox %s not found in agent output" % item)
|
||||||
|
|
||||||
|
check_info["exchange_user_mbx_size"] = {
|
||||||
|
'check_function': check_exchange_user_mbx_size,
|
||||||
|
'inventory_function': inventory_exchange_user_mbx_size,
|
||||||
|
'service_description': '%s Mailbox size',
|
||||||
|
'has_perfdata': True,
|
||||||
|
'group': 'exchange_user_mbx_size',
|
||||||
|
}
|
14
pnp-templates/check_mk-exchange_user_mbx_size.php
Normal file
14
pnp-templates/check_mk-exchange_user_mbx_size.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006-2010 Joerg Linge (http://www.pnp4nagios.org)
|
||||||
|
# Plugin: check_load
|
||||||
|
#
|
||||||
|
$opt[1] = "--vertical-label \"Size in MB\" -X0 -b1024 -l0 --title \"Mailbox Size $servicedesc\" ";
|
||||||
|
$def[1] = "DEF:var1=$RRDFILE[1]:$DS[1]:MAX ";
|
||||||
|
if ($WARN[1] != "") {
|
||||||
|
$def[1] .= "HRULE:$WARN[1]#FFFF00:\"Warning\: $WARN[1]MB\" ";
|
||||||
|
$def[1] .= "HRULE:$CRIT[1]#FF0000:\"Critical\: $CRIT[1]MB\" ";
|
||||||
|
}
|
||||||
|
$def[1] .= rrd::area("var1", "#EACC00", "size ") ;
|
||||||
|
$def[1] .= rrd::gprint("var1", array("LAST", "AVERAGE", "MAX"), "%6.0lf MB");
|
||||||
|
?>
|
13
web/plugins/perfometer/exchange_mbx_size_perfometer.py
Normal file
13
web/plugins/perfometer/exchange_mbx_size_perfometer.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
def perfometer_check_mk_exchange_user_mbx_size(row, check_command, perf_data):
|
||||||
|
#return 'Hello World! :-)', '<table><tr>' \
|
||||||
|
# + perfometer_td(20, '#fff') \
|
||||||
|
# + perfometer_td(80, '#ff0000') \
|
||||||
|
# + '</tr></table>'
|
||||||
|
size = float(perf_data[0][1])
|
||||||
|
#return repr(size), ''
|
||||||
|
color = { 0: "#68f", 1: "#ff2", 2: "#f22", 3: "#fa2" }[row["service_state"]]
|
||||||
|
#size = perf_data[1]
|
||||||
|
#print(size)
|
||||||
|
return "%.0f" % size, perfometer_logarithmic(size, 1024, 2, color)
|
||||||
|
|
||||||
|
perfometers['check_mk-exchange_user_mbx_size'] = perfometer_check_mk_exchange_user_mbx_size
|
20
web/plugins/wato/exchange_mbx_size_check_parameters.py
Normal file
20
web/plugins/wato/exchange_mbx_size_check_parameters.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- encoding: utf-8; py-indent-offset: 4 -*-
|
||||||
|
# 2014 Marius Pana mp@sphs.ro
|
||||||
|
|
||||||
|
|
||||||
|
register_check_parameters(
|
||||||
|
subgroup_applications,
|
||||||
|
"exchange_user_mbx_size",
|
||||||
|
_("MS Exchange User Mailbox Size"),
|
||||||
|
Tuple(
|
||||||
|
title = _('Maximum Mailbox Size'),
|
||||||
|
elements = [
|
||||||
|
Integer(title = _("Warning if above"), default_value = 1500 ),
|
||||||
|
Integer(title = _("Critical if above"), default_value = 2000 ),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user