From: <do...@hy...> - 2008-05-16 00:26:17
|
Author: dougm Date: 2008-05-15 17:26:13 -0700 (Thu, 15 May 2008) New Revision: 9597 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=9597 Added: branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeTransportDetector.java Modified: branches/HQ_3_2/plugins/exchange/etc/hq-plugin.xml branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeDetector.java Log: add Exchange Transport 2007 server and services (merged from trunk) Modified: branches/HQ_3_2/plugins/exchange/etc/hq-plugin.xml =================================================================== --- branches/HQ_3_2/plugins/exchange/etc/hq-plugin.xml 2008-05-16 00:05:53 UTC (rev 9596) +++ branches/HQ_3_2/plugins/exchange/etc/hq-plugin.xml 2008-05-16 00:26:13 UTC (rev 9597) @@ -32,6 +32,9 @@ <filter name="imap4" value="win32:Object=MSExchangeIMAP4,Instance=_Total"/> <filter name="pop3" value="win32:Object=MSExchangePOP3,Instance=_Total"/> <filter name="web" value="win32:Object=MSExchange Web Mail,Instance=_Total"/> + <filter name="queue" value="win32:Object=MSExchangeTransport Queues,Instance=_Total"/> + <filter name="smtpsend" value="win32:Object=MSExchangeTransport SmtpSend,Instance=%name%"/> + <filter name="smtprecv" value="win32:Object=MSExchangeTransport SmtpReceive,Instance=%name%"/> <!-- metrics for Exchange Information Store --> <filter name="template" value="${store}:${name}"/> @@ -930,10 +933,150 @@ indicator="true"/> </metrics> + <!-- metrics for MSExchangeTransport Queues --> + <filter name="template" value="${queue}:${name}"/> + <metrics name="exchange-transport"> + <metric name="Availability" + template="win32:Service=MSExchangeTransport:${alias}" + indicator="true"/> + + <metric name="Active Remote Delivery Queue Length"/> + + <metric name="Retry Remote Delivery Queue Length"/> + + <metric name="Active Mailbox Delivery Queue Length"/> + + <metric name="Retry Mailbox Delivery Queue Length"/> + + <metric name="Active Non-Smtp Delivery Queue Length"/> + + <metric name="Retry Non-Smtp Delivery Queue Length"/> + + <metric name="Aggregate Delivery Queue Length (All Queues)" + indicator="true"/> + + <metric name="Items Queued For Delivery Total" + collectionType="trendsup"/> + + <metric name="Items Completed Delivery Total" + collectionType="trendsup"/> + + <metric name="Items Queued For Delivery Expired Total" + collectionType="trendsup"/> + + <metric name="Items Deleted By Admin Total" + collectionType="trendsup"/> + + <metric name="Items Resubmitted Total" + collectionType="trendsup"/> + + <metric name="Messages Queued For Delivery Total" + collectionType="trendsup"/> + + <metric name="Messages Completed Delivery Total" + indicator="true" + collectionType="trendsup"/> + + <metric name="Unreachable Queue Length"/> + + <metric name="Poison Queue Length"/> + + <metric name="Submission Queue Length"/> + + <metric name="Messages Submitted Total" + indicator="true" + collectionType="trendsup"/> + + <metric name="Submission Queue Items Expired Total" + collectionType="trendsup"/> + </metrics> + + <filter name="template" value="${smtpsend}:${name}"/> + <metrics name="exchange-smtpsend"> + <metric name="Availability" + template="win32:Service=MSExchangeTransport:${alias}" + indicator="true"/> + + <metric name="Connections Current"/> + + <metric name="Connections Total" + indicator="true" + collectionType="trendsup"/> + + <metric name="Messages Sent Total" + indicator="true" + collectionType="trendsup"/> + + <metric name="Message Bytes Sent Total" + indicator="true" + units="B" + collectionType="trendsup"/> + + <metric name="Bytes Sent Total" + collectionType="trendsup"/> + + <metric name="Recipients Sent" + collectionType="trendsup"/> + + <metric name="Average Recipients/message"/> + + <metric name="Average Message bytes/message" + units="B"/> + + <metric name="Average Messages/connection"/> + + <metric name="Average Bytes/connection" + units="B"/> + </metrics> + + <filter name="template" value="${smtprecv}:${name}"/> + <metrics name="exchange-smtprecv"> + <metric name="Availability" + template="win32:Service=MSExchangeTransport:${alias}" + indicator="true"/> + + <metric name="Connections Current"/> + + <metric name="Connections Total" + indicator="true"/> + + <metric name="Disconnections By Agents"/> + + <metric name="Messages Received Total" + indicator="true" + collectionType="trendsup"/> + + <metric name="Message Bytes Received Total" + collectionType="trendsup"/> + + <metric name="Messages Refused for Size"/> + + <metric name="Recipients Accepted Total" + collectionType="trendsup"/> + + <metric name="Average Bytes/message" + units="B"/> + + <metric name="Average Recipients/message"/> + + <metric name="Average Bytes/connection" + units="B"/> + + <metric name="Average Messages/connection"/> + + <metric name="Bytes Received Total" + collectionType="trendsup"/> + + <metric name="Tarpitting Delays Authenticated"/> + + <metric name="Tarpitting Delays Anonymous"/> + </metrics> + <metrics name="Exchange 5.5" include="exchange-is,exchange-mbox"/> <metrics name="Exchange 2000" include="exchange-is,exchange-mbox"/> <metrics name="Exchange 2003" include="exchange-is,exchange-mbox"/> <metrics name="Exchange 2007" include="exchange-is,exchange-mbox"/> + <metrics name="Exchange Transport 2007" include="exchange-transport"/> <metrics name="Exchange 5.5 POP3" include="POP3_V5"/> <metrics name="Exchange 2000 POP3" include="POP3_V5"/> @@ -954,6 +1097,12 @@ <metrics name="Exchange 2003 Web" include="Web"/> <metrics name="Exchange 2007 Web" include="Web"/> + <metrics name="Exchange Transport 2007 SmtpSend" + include="exchange-smtpsend"/> + + <metrics name="Exchange Transport 2007 SmtpReceive" + include="exchange-smtprecv"/> + <server name="Exchange" description="Mail Server" version="5.5" @@ -1061,4 +1210,33 @@ <plugin type="measurement"/> </service> </server> + + <server name="Exchange Transport" version="2007" platforms="Win32"> + + <plugin type="measurement" + class="org.hyperic.hq.product.Win32MeasurementPlugin"/> + + <plugin type="autoinventory" + class="ExchangeTransportDetector"/> + + <property name="EVENT_LOG_SOURCE_FILTER" + value="MSExchangeTransport"/> + + <plugin type="log_track" + class="org.hyperic.hq.product.Win32EventLogTrackPlugin"/> + + <service name="SmtpSend"> + <config> + <option name="name" description="Name"/> + </config> + <plugin type="measurement"/> + </service> + + <service name="SmtpReceive"> + <config> + <option name="name" description="Name"/> + </config> + <plugin type="measurement"/> + </service> + </server> </plugin> Modified: branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeDetector.java =================================================================== --- branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeDetector.java 2008-05-16 00:05:53 UTC (rev 9596) +++ branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeDetector.java 2008-05-16 00:26:13 UTC (rev 9597) @@ -60,7 +60,7 @@ private static final String EXCHANGE_KEY = "SOFTWARE\\Microsoft\\Exchange\\Setup"; - private static final String EX = "MSExchange"; + static final String EX = "MSExchange"; private static final String WEBMAIL = EX + " Web Mail"; private static final String EXCHANGE_IS = EX + "IS"; Copied: branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeTransportDetector.java (from rev 9588, trunk/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeTransportDetector.java) =================================================================== --- branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeTransportDetector.java (rev 0) +++ branches/HQ_3_2/plugins/exchange/src/org/hyperic/hq/plugin/exchange/ExchangeTransportDetector.java 2008-05-16 00:26:13 UTC (rev 9597) @@ -0,0 +1,129 @@ +/* + * NOTE: This copyright does *not* cover user programs that use HQ + * program services by normal system calls through the application + * program interfaces provided as part of the Hyperic Plug-in Development + * Kit or the Hyperic Client Development Kit - this is merely considered + * normal use of the program, and does *not* fall under the heading of + * "derived work". + * + * Copyright (C) [2004-2008], Hyperic, Inc. + * This file is part of HQ. + * + * HQ is free software; you can redistribute it and/or modify + * it under the terms version 2 of the GNU General Public License as + * published by the Free Software Foundation. This program is distributed + * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + */ + +package org.hyperic.hq.plugin.exchange; + +import java.util.ArrayList; +import java.util.List; + +import org.hyperic.hq.product.AutoServerDetector; +import org.hyperic.hq.product.PluginException; +import org.hyperic.hq.product.ServerDetector; +import org.hyperic.hq.product.ServerResource; +import org.hyperic.hq.product.ServiceResource; +import org.hyperic.sigar.win32.Pdh; +import org.hyperic.sigar.win32.Service; +import org.hyperic.sigar.win32.Win32Exception; +import org.hyperic.util.config.ConfigResponse; + +//2007 - Edge role does not have MSExchangeIS or most of the other services +//both Edge and Hub have MSExchangeTransport +public class ExchangeTransportDetector + extends ServerDetector + implements AutoServerDetector { + + private static final String TRANSPORT = + ExchangeDetector.EX + "Transport"; + + private static final String SMTP_SEND = + "SmtpSend"; + + private static final String SMTP_RECEIVE = + "SmtpReceive"; + + private static final String[] SERVICES = { + SMTP_SEND, SMTP_RECEIVE + }; + + public List getServerResources(ConfigResponse platformConfig) + throws PluginException { + + List servers = new ArrayList(); + + String exe; + Service exch = null; + try { + exch = new Service(TRANSPORT); + if (exch.getStatus() != Service.SERVICE_RUNNING) { + return null; + } + exe = exch.getConfig().getExe().trim(); + } catch (Win32Exception e) { + return null; + } finally { + if (exch != null) { + exch.close(); + } + } + + ServerResource server = createServerResource(exe); + server.setIdentifier(TRANSPORT); + server.setProductConfig(); + server.setMeasurementConfig(); + servers.add(server); + return servers; + } + + private List discoverPerfServices(String type) { + List services = new ArrayList(); + + try { + String[] instances = + Pdh.getInstances(TRANSPORT + " " + type); + + for (int i=0; i<instances.length; i++) { + String name = instances[i]; + if (name.equalsIgnoreCase("_Total")) { + continue; + } + + ServiceResource service = new ServiceResource(); + service.setType(this, type); + service.setName(type + " " + name); + + ConfigResponse config = new ConfigResponse(); + config.setValue("name", name); + service.setProductConfig(config); + service.setMeasurementConfig(); + + services.add(service); + } + } catch (Win32Exception e) { + } + + return services; + + } + + protected List discoverServices(ConfigResponse config) + throws PluginException { + + List services = new ArrayList(); + for (int i=0; i<SERVICES.length; i++) { + services.addAll(discoverPerfServices(SERVICES[i])); + } + return services; + } +} |