14 Monitoring Oracle Traffic Director Instances

Oracle Traffic Director records statistics about server activity at different levels—instances, virtual servers, listeners, connections, and origin servers. For example, for each instance of a configuration, Oracle Traffic Director collects statistics about the duration for which the instance has been running, number of requests processed, volume of data received and sent, number of responses that the instance sent of each type, average load, and so on. Similarly for each virtual server in an instance, Oracle Traffic Director collects statistics about the number of requests processed, volume of data received and sent, and the number of responses of each type. For a full list of the metrics that Oracle Traffic Director collects, see Metrics Tracked by Oracle Traffic Director.

This chapter describes the monitoring capabilities of Oracle Traffic Director. It contains the following sections:

Methods for Monitoring Oracle Traffic Director Instances

Table 14-1 summarizes the methods that you can use to view statistical data about an instance of a configuration and about individual virtual servers within an instance.

Table 14-1 Methods for Monitoring Oracle Traffic Director Instances

Monitoring Method Requirements Advantages

WLST

  • View runtime statistics for various subsystems for an instance:

    To view in plain-text format: otd_getPerfDump

    To view in XML format: otd_getStatsXml

  • Display runtime statistics about all instances, or a specific instance, from metric tables collected by DMS: displayMetricTables

See Viewing Statistics using WLST, and Monitoring Using DMS.

Administration server must be running.

Enabled by default.

Accessible even when request-processing threads are hanging.

Browser

  • Detailed statistics for a specific virtual server in XML format

  • Summary report for a specific virtual server in plain-text format

See Viewing stats-xml and perfdump Reports Through a Browser.

Must be enabled and configured explicitly.

See Configuring URI Access to Statistics Reports.

The administration server need not be running. It is sufficient if the instance is running.

SNMP

Must be configured explicitly.

See Monitoring Using SNMP.

Statistics available through network management systems.

Configuring Statistics-Collection Settings

When you create an Oracle Traffic Director configuration, statistics collection is enabled by default, with five seconds as the update interval. You can disable, enable, and configure statistics collection by using either Fusion Middleware Control or the WLST.

Note:

For information about invoking WLST, see Accessing WebLogic Scripting Tool.

Configuring Statistics-Collection Settings Using Fusion Middleware Control

To configure statistics-collection settings by using the Fusion Middleware Control, do the following:

  1. Log in to Fusion Middleware Control, as described in Displaying Fusion Middleware Control.
  2. Click the WebLogic Domain button at the upper left corner of the page.
  3. Select Administration > OTD Configurations.

    A list of the available configurations is displayed.

  4. Select the configuration for which you want to configure statistics-collection settings.
  5. Click the Traffic Director Configuration In the Common Tasks pane.
  6. Select Administration > virtual server.

    The Virtual Servers page is displayed. It shows a list of the virtual servers defined for the configuration.

  7. Select the name of the virtual server you want to configure.
  8. Select Settings > Monitoring.
  9. Go to the Statistics Collection section of the page.
  10. Specify the parameters that you want to change.

    Note:

    When deciding the statistics-collection interval, remember that frequent collection of statistics affects performance.

    On-screen help and prompts are provided for all of the parameters.

    When you change the value in a field or tab out of a text field that you changed, the Apply button near the upper right corner of the page is enabled.

    At any time, you can discard the changes by clicking the Revert button.

  11. After making the required changes, click Apply.
    • A message, confirming that the updated configuration was saved, is displayed in the Console Messages pane.

Configuring Statistics-Collection Settings Using WLST

  • To view the current statistics-collection properties, run the otd_getStatsProperties command, as shown in the following example:

    props = {}
    props['configuration'] = 'foo'
    otd_getStatsProperties(props)
    
  • To configure statistics-collection properties, run the otd_setStatsProperties command.

    For example, the following command changes the interval at which statistics are updated for the configuration to 10 seconds.

    props = {}
    props['configuration'] = 'foo'
    props['interval'] = '10'
    otd_setStatsProperties(props)
    

    For more information, see otd_getStatsPropertiesand otd_setStatsProperties commands in the WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

Configuring URI Access to Statistics Reports

As described in Methods for Monitoring Oracle Traffic Director Instances, in addition to viewing activity statistics by using WLST, you can view the following reports through a URI.

  • stats-xml: Detailed statistics in XML format. For a sample, see Sample XML (stats-xml) Report.

  • perfdump: A summary report in plain-text format containing a subset of the data in the stats-xml report. For a sample, see Sample Plain-Text (perfdump) Report. Note that though you enable the perf-dump report at the virtual-server level, the data in the report is aggregated at the instance level.

Relative Advantages of URI-Based and WLST Access to Statistics Reports

  • The administration server need not be running for users to access the stats-xml and perfdump reports through URIs. When compared with accessing statistics by using WLST, accessing URI-based reports involves lower processing overhead.

  • Access to statistics by using WLST is enabled by default, but to view statistics through the browser, you should explicitly enable URI-based reporting and specify the URIs at which users can access the reports.

You can configure URI-based reporting of statistics by using either Fusion Middleware Control or the WLST.

Configuring URI Access to Statistics Using Fusion Middleware Control

To configure URI-based reporting by using the Fusion Middleware Control, do the following:

  1. Log in to Fusion Middleware Control, as described in Displaying Fusion Middleware Control.
  2. Click the WebLogic Domain button at the upper left corner of the page.
  3. Select Administration > OTD Configurations.

    A list of the available configurations is displayed.

  4. Select the configuration for which you want to configure URI-based reports.
  5. Click the Traffic Director Configuration In the Common Tasks pane.
  6. Select Administration > virtual server.

    The Virtual Servers page is displayed. It shows a list of the virtual servers defined for the configuration.

  7. Select the name of the virtual server you want to configure.
  8. Select Settings > Monitoring.
  9. Select Settings > Advanced Settings
  10. Go to the Monitoring section of the page.
    • To enable URI-based reporting in XML format, select the XML Report check box and specify a valid URI.

    • To enable URI-based reporting in plain-text format, select the Plain Text Report check box and specify a valid URI for the report.

    On-screen help and prompts are provided for all of the parameters.

    When you change the value in a field or tab out of a text field that you changed, the Apply button near the upper right corner of the page is enabled.

    At any time, you can discard the changes by clicking the Revert button.

  11. After making the required changes, click Apply.
    • A message, confirming that the updated configuration was saved, is displayed in the Console Messages pane.

Configuring URI Access to Statistics in XML Format Using WLST

  • To view the current XML reporting settings, run the otd_getStatsXmlProperties command, as shown in the following example:

    props = {}
    props['configuration'] = 'foo'
    props['virtual-server'] = 'bar'
    otd_getStatsXmlProperties(props)
    
    enabled=false
    uri=/stats-xml
    
  • To enable and configure URI-based XML reporting, run the otd_enableStatsXml command.

    For example, the following command enables URI-based statistics reporting in XML format for the virtual server bar in the configuration foo and specifies that the report should be available at the URI /stats.

    props = {}
    props['configuration'] = 'foo'
    props['virtual-server'] = 'bar'
    props['uri'] = '/stats'
    otd_enableStatsXml(props)
    
  • To disable URI-based XML reporting, run the otd_disableStatsXml command, as shown in the following example:

    props = {}
    props['configuration'] = 'foo'
    props['virtual-server'] = 'bar'
    otd_disableStatsXml(props)
    

Configuring URI Access to Statistics in Plain-Text Format Using WLST

  • To view the plain-text reporting settings, run the otd_getPerfDumpProperties command, as shown in the following example:

    props = {}
    props['configuration'] = 'foo'
    props['virtual-server'] = 'bar'
    otd_getPerfDumpProperties(props)
    
  • To enable and configure the plain-text reporting, run the otd_enablePerfDump command.

    For example, the following command enables URI-based statistics reporting in plain-text format for the virtual server bar in the configuration foo and specifies that the report should be available at the URI /perf.

    props = {}
    props['configuration'] = 'foo'
    props['virtual-server'] = 'bar'
    props['uri'] = '/perf'
    otd_enablePerfDump(props)
    
  • To disable URI-based plain-text reporting, run the otd_disablePerfDump command, as shown in the following example:

    props = {}
    props['configuration'] = 'foo'
    props['virtual-server'] = 'bar'
    otd_disablePerfDump(props)
    

For more information about the WLST commands mentioned in this section, see WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

Viewing Statistics Using WLST

By using WLST, you can view statistics for one or all instances of a configuration.

  • To view detailed statistics for an instance in XML format, run the otd_getStatsXml command, as shown in the following example:

    props = {}
    props['instance'] = 'otd_foo_machine1'
    otd_getStatsXml(props)
    

    For a sample of the report, see Sample XML (stats-xml) Report.

  • To view a summary of the statistics for an instance in plain-text format, run the otd_getPerfDump command, as shown in the following example:

    props = {}
    props['instance'] = 'otd_foo_machine1'
    otd_getPerfDump(props)
    

    For a sample of the report, see Sample Plain-Text (perfdump) Report.

  • To view statistics for one or all instances of a configuration using metric tables collected from Oracle Dynamic Monitoring Service (DMS) for Oracle Traffic Director, run the displayMetricTables command, as shown in the following examples. For more details about Oracle Dynamic Monitoring Service (DMS), see Monitoring Using DMS

    To view metrics for all Oracle Traffic Director instances:

    displayMetricTables('OTD_*')
    

    To view origin server metrics for all instances:

    displayMetricTables('OTD_OriginServer')
    

    To get a list of metric tables for a specific instance:

    displayMetricTableNames(servers='/OTD/otd_test_myserver.example.com')
    

    To view all metrics for a specific instance:

    displayMetricTables(servers='/OTD/otd_test_myserver.example.com')
    

    To view instance metrics for a specific instance:

    displayMetricTables('OTD_Instance', servers='/OTD/otd_test_myserver.example.com')
    

For more information about the WLST commands mentioned in this section, see the WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

Viewing stats-xml and perfdump Reports Through a Browser

If you enable URI access to statistics as described in Configuring URI Access to Statistics Reports, you can access the stats-xml and perfdump reports through a browser by using the following URL:

http://host:port/uri

host and port are the IP address (or host name) and port number of the virtual server for which you enabled URI access to statistics. uri is the location that you specified while enabling URI access. Note that if a virtual server is associated with multiple listeners, you can use the address host:port of any of the listeners to access the URI-based reports.

  • For example, if /perfdump is the configured URI for the plain-text report for the virtual server soa.example.com:1904, the URL that you should use to access the report would be the following:

    http://soa.example.com:1904/perfdump
    

    In the URL, you can also specify the interval, in seconds, after which the browser should refresh the perfdump report automatically, as shown in the following example:

    http://soa.example.com:1904/perfdump?refresh=5
    
  • Similarly, if /stats-xml is the configured URI for the XML report for the virtual server soa.example.com:1904, the URL that you should use to access the XML report would be the following:

    http://soa.example.com:1904/stats-xml
    

    You can limit the data that the XML report provides by specifying a URL query string indicating the elements that should not be displayed. If you do not include a query string, all the elements in the XML report are displayed.

    For example, the query string specified in the following URL suppresses display of the virtual-server and server-pool elements in the XML report.

    http://soa.example.com:1904/stats-xml?virtual-server=0&server-pool=0
    

    The following list shows the hierarchy of elements in the statistics XML report. Note that when you opt to suppress an element in the report, the child elements of that element are also suppressed.

    stats
      server
        process
          connection-queue
          thread-pool
          dns
          keepalive
          thread
            request-bucket
            profile-bucket
          compression
          decompression
        origin-server-pool
          origin-server
            websocket
          service-queue
        virtual-server
          request-bucket
          websocket
          webapp-firewall
          profile-bucket
          route
            request-bucket
        cpu-info
        tcp-proxy
        cache
        failover
        partition
          request-bucket
        ssl-session-cache
    

Monitoring Using SNMP

Simple Network Management Protocol (SNMP) is a standard that enables management of devices in a network from a network management application running on a remote system. The network management application might, for example, show which servers in the network are running or stopped at any point in time, and the number and type of error messages received.

Oracle Traffic Director instances are monitored using SNMP, by default. To be able to do this, you should do the following:

  • Configure the instances to support monitoring through SNMP.

  • Configure the SNMP subagent on the nodes.

  • Start the SNMP subagent on the nodes.

This section contains the following topics:

Configuring Oracle Traffic Director Instances for SNMP Support

When you create a configuration, support for monitoring the instances through SNMP is enabled by default. You can disable, enable, and configure support for SNMP monitoring by using either Fusion Middleware Control or the WLST.

Configuring SNMP Support Using Fusion Middleware Control

To enable SNMP support for a configuration by using the Fusion Middleware Control, do the following:

  1. Log in to Fusion Middleware Control, as described in Displaying Fusion Middleware Control.
  2. Click the WebLogic Domain button at the upper left corner of the page.
  3. Select Administration > OTD Configurations.

    A list of the available configurations is displayed.

  4. Select the configuration for which you want to enable SNMP support.
  5. Click the Traffic Director Configuration In the Common Tasks pane.
  6. Select Advanced Configuration > Settings.

    The Settings page is displayed, scroll down It shows a SNMP settings.

  7. In the SNMP section of the page, select the SNMP check box Enabled. The other parameters in the section are optional.

    On-screen help and prompts are provided for all of the parameters.

    When you change the value in a field or tab out of a text field that you changed, the Apply button near the upper right corner of the page is enabled.

    At any time, you can discard the changes by clicking the Revert button.

  8. After making the required changes, click Apply.
    • A message, confirming that the updated configuration was saved, is displayed in the Console Messages pane.

Configuring SNMP Support Using WLST

  • To view the current SNMP settings for a configuration, run the otd_getSnmpProperties command, as shown in the following example:

    props = {}
    props['configuration'] = 'foo'
    otd_getSnmpProperties(props)
    
  • SNMP is enabled by default. To enable or disable SNMP support, run the otd_setSnmpProperties command, as shown in the following example:

    props = {}
    props['enabled'] = 'true'
    props['organization'] = 'bar'
    otd_setSnmpProperties(props)
    

For more information, see otd_getSnmpProperties and otd_setSnmpProperties commands, see the WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

Configuring the SNMP Subagent

When you create an Oracle Traffic Director node, an SNMP subagent is created automatically. The SNMP subagent collects information about the instances running on the node.

The SNMP subagent's configuration settings, including the frequency at which the subagent updates statistics, the duration after which cached statistics are timed out, and the port through which the subagent process communicates, are stored in the following file:

  • SNMP configuration file can be found at: <domain-home>/config/fmwconfig/components/OTD/snmp/config/snmpagt.conf

  • SNMP persistent file can be found at: <domain-home>/config/fmwconfig/components/OTD/snmp/store/snmpagt.conf

You can configure the SNMP subagent's settings by editing the snmpagt.conf file. SNMP Subagent Configuration Parameters lists the key SNMP subagent parameters.

Table 14-2 SNMP Subagent Configuration Parameters

Parameter in smnpagt.conf Description Default Value

agentAddress

Ports at which the SNMP subagent receives requests

11161

statInterval

Statistics update frequency (seconds)

5

cacheTimeOut

Cache timeout period (seconds)

5

The syntax for entries in snmpagt.conf should be as described in the documentation for snmpd.conf at: http://www.net-snmp.org/docs/man/snmpd.conf.html.

After configuring the SNMP subagent on a node, you should start it. The subagent then begins collecting statistics about the Oracle Traffic Director instances on the node.

SNMP v3 User configuration

On a system with fresh Oracle Traffic Director installation, SNMP v3 users and access control are not configured by default. A user must be added and access control configured before the server status can be queried via SNMP.

Adding an SNMP v3 user

  1. Stop the SNMP agent and add an SNMP v3 user by modifying the SNMP configuration files manually. Optionally enable encryption of all requests and responses.

    Persistent file: <domain-home>/config/fmwconfig/components/OTD/snmp/store/ snmpagt.conf

    A user can be added by adding an entry in the following format:

    createUser <user-name> SHA <auth-password> [AES <crypt-password>]

    SHA is the encryption for authentication password

    DES and AES are the encryption protocols

    privpassphrase is the password to encrypt the snmp request and response

    Examples

    • Create user 'user1' and specify password used for authentication

      createUser user1 SHA user1pwd

    • Create user 'user2' and encrypt all requests and responses.

      createUser user2 SHA user2pwd AES

    • Create user 'user3' and encrypt all requests and responses with separate crypt password

      createUser user3 SHA user3pwd AES cryptpwd

    Configuration file: <domain-home>/config/fmwconfig/components/OTD/snmp/config /snmpagt.conf

    Access permissions for a SNMP user can be specified by adding an entry in the following format:

    rouser username [noauth|auth|priv]

    rouser is for read-only access. Authentication and encryption can be specified as:

    noauth: To allow unauthenticated requests

    auth: To enforce authentication of username with authpassphrase

    priv: To enforce use of encryption

  2. After adding the SNMP v3 user, the SNMP agent should be started and stopped once. When the SNMP agent is stopped, user authentication parameters provided in "createUser" line is encrypted and stored in the persistent file.

  3. Ensure that the SNMP agent and one or more OTD instances are running. The SNMP agent can now be queried over SNMP v3 using <user-name> and <auth-password>.

  4. Run the snmpwalk command. User can run the snmpcmd from remote host.

    snmpcmd(snmpwalk/snmpget)

    snmpwalk -m <oracle-home>/otd/lib/ORACLE-TRAFFICDIRECTOR-MIB.txt -v 3 -u username -l<authentication level> -a SHA -A authpassphrase -x (DES|AES) -X privpassphrase <hostname>:11161 ORACLE-TRAFFICDIRECTOR-MIB::originServer

    snmpwalk example

    snmpwalk -m <oracle-home>/otd/lib/ORACLE-TRAFFICDIRECTOR-MIB.txt -v 3 -u <user-name> -l priv -a SHA -A <auth-password> -x AES -X <crypt-password> <hostname>:11161  ORACLE-TRAFFICDIRECTOR-MIB::originServerTable

Deleting an SNMP v3 user

The user can be deleted by removing the relevant user entries from both the configuration file and persistent file and restarting the SNMP agent.

Integrating SNMP with Master Agent

Oracle Traffic Director SNMP can be integrated with the SNMP master agent running on the system on Linux and Solaris using the agentx protocol. This requires the SNMP agent to be started in agentx mode. When running in this mode, the Oracle Traffic Director SNMP agent cannot communicate via the SNMP protocol. All requests should be made to the SNMP master agent, which in-turn retrieves the requested information from the SNMP agent via the agentx protocol.

The default agentx transport specifier for Oracle Traffic Director SNMP is specified as below. The transport specifier can be changed as mentioned in the man page of snmpd.conf.

agentx transport specifier

agentxsocket tcp:127.0.0.1:705

  1. Configure operating system master agent to communicate to sub-agents via agentx protocol. This requires the following changes to the master agent configuration (/etc/snmp/snmpd.conf on Linux and /etc/net-snmp/snmp/snmpd.conf on Solaris). The master agent needs to be restarted after making this change.

    Directives that need to be added to the master agent configuration (snmpd.conf)

    master agentx

    agentxsocket tcp:127.0.0.1:705

    • Changes to the master agent configuration requires super-user privileges.

    • The agentxsocket directive should be the same on both the OTD SNMP agent and the OS master agent.

  2. Start the SNMP agent in agentx mode. 

    WLST command to start OTD SNMP agent

    Online

    otd_startSnmpSubAgent({'machine':<machine_name>, 'agentx':'true'})

    Offline

    otd_startSnmpSubAgent({'domain-home':<otd_domain_directory_path>, 'agentx':'true'})

  3. Send an SNMP request directly to the operating system master agent.

Configuring TRAP Notifications

The Oracle Traffic Director SNMP agent can also generate an SNMP trap notification whenever an instance is started or stopped. This notification can be sent to one or more destinations that are specified in the configuration file at <domain-home>/config/fmwconfig/components/OTD/snmp/config/snmpagt.conf.
Examples for specifying trap destinations in snmpagt.conf

Send an SNMPv1 trap

trapsink 127.0.0.1:1127 trapComm

Send an SNMPv2 trap

trap2sink 192.168.1.99:1199 trapComm

Send an SNMPv2 inform which the remote side should confirm

informsink 192.1.68.88:1188 trapComm

Send an SNMPv3 trap without any auth

trapsess -v 3 -u v3user -l noAuth 127.0.0.1:11162

Send a SNMPv3 inform with full SNMPv3 security

trapsess -v 3 -r 0 -Ci -u myuser -n "" -l authPriv -a SHA -A <auth-password> -x AES -X <crypt-password> 192.168.1.77:1177

For more information on these directives see the  man page.

Starting and Stopping the SNMP Subagent

You can start and stop the SNMP subagent on a node by using WLST commands.

Starting and Stopping the SNMP Subagent Using WLST

  • To start the SNMP subagent on one or more nodes, run the otd_startSnmpSubAgent command, as shown in the following example:

    # Online
    props = {}
    props['machine-name'] = 'abc123.example.com'
    otd_startSnmpSubAgent(props)
     
    # Offline
    props = {}
    props['domain-home'] = '/export/domains/otd_domain'
    otd_startSnmpSubAgent(props)
    
  • To stop the SNMP subagent on one or more nodes, run the sotd_stopSnmpSubAgent command, as shown in the following example:

    # Online
    props = {}
    props['machine-name'] = 'host.example.com'
    otd_stopSnmpSubAgent(props)
     
    # Offline
    props = {}
    props['domain-home'] = '/export/domains/otd_domain'
    otd_stopSnmpSubAgent(props)
    

For more information about the custom WLST commands mentioned in this section, see WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

Viewing Statistics Using snmpwalk

You can view statistics collected by the SNMP subagent, by using the snmpwalk command-line utility that is available in the Net-SNMP suite of applications (http://www.net-snmp.org).

Note:

The prerequisites for using snmpwalk are as follows:

  • For Linux: Make sure the contents snmpwalk package net-snmp-utils-5.3.2.2-9.0.1.el5_5.1 RPM or higher and standard MIBS package net-snmp-5.3.2.2-9.0.1.el5_5.1 RPM or higher are installed.

  • For Solaris: Make sure the package located at system/management/snmp/net-snmp is installed. This package contains contents snmpwalk and standards MIBS.

Simplifying Commands by Setting Defaults

Before using snmpwalk, if required, you can set most of the snmpwalk options in the snmp.conf file, located at ~/.snmp/snmp.conf.

The advantage of setting various options in snmp.conf is that after setting the options, you can run the snmpwalk command without specifying the options that are already set in snmp.conf. The snmp.conf enables you to set the following options:

default options

defSecurityNam

SNMPv3 user-name

defAuthType

SHA (authentication method)

defSecurityLevel

security level for the user. i.e authNoPriv, authPriv etc

defAuthPassphrase

auth-password

defPrivType

privacy protocol to use. AES

defPrivPassphrase

privpassphrase

defVersion

3

defaultport

11161

mibirds

+<path to ORACLE-TRAFFICDIRECTOR-MIB.txt>

mibs

+ORACLE-TRAFFICDIRECTOR-MIB

snmpwalk with defaults

snmpwalk <hostname> ORACLE-TRAFFICDIRECTOR-MIB::originServerTable

snmpwalk output

When you run the snmpwalk command, the output would be as follows:

ORACLE-TRAFFICDIRECTOR-MIB::originServerName.1.1.0 = STRING:

http://example.us.oracle.com:4000

ORACLE-TRAFFICDIRECTOR-MIB::originServerType.1.1.0 = STRING: generic

(Oracle-iPlanet-Web-Server/7.0)

ORACLE-TRAFFICDIRECTOR-MIB::originServerStatus.1.1.0 = INTEGER: online(1)

ORACLE-TRAFFICDIRECTOR-MIB::originServerDiscoveredStatus.1.1.0 =

INTEGER: false(2)

ORACLE-TRAFFICDIRECTOR-MIB::originServerRampedupStatus.1.1.0 = INTEGER:

true(1)

ORACLE-TRAFFICDIRECTOR-MIB::originServerBackupStatus.1.1.0 = INTEGER:

active(1)

ORACLE-TRAFFICDIRECTOR-MIB::originServerTimeOnline.1.1.0 = Counter64:

1566 seconds

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountDetectedOffline.1.1.0 =

Counter32: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountBytesTransmitted.1.1.0 =

Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountBytesReceived.1.1.0 =

Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountActiveConnections.1.1.0 =

Gauge32: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountIdleConnections.1.1.0 =

Gauge32: 2

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountActiveStickyConnections.1.1.0

= Gauge32: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountClosedConnections.1.1.0 =

Counter64: 100

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountClosedConnectionsByOriginServer.1.1.0

= Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountConnectAttempts.1.1.0 =

Counter64: 102

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountConnectFailures.1.1.0 =

Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountRequestsAborted.1.1.0 =

Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountRequestsTimedout.1.1.0 =

Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountRequests.1.1.0 = Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountHealthCheckRequests.1.1.0 =

Counter64: 102

ORACLE-TRAFFICDIRECTOR-MIB::originServerCountStickyRequests.1.1.0 =

Counter64: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerDynamicWeight.1.1.0 = STRING: 1.00

ORACLE-TRAFFICDIRECTOR-MIB::originServerSecondsKeepAliveTimeout.1.1.0 =

Counter64: 0 seconds

ORACLE-TRAFFICDIRECTOR-MIB::originServerMillisecondsConnectionActiveAverage.1.1.0

= STRING: milliseconds

ORACLE-TRAFFICDIRECTOR-MIB::originServerServerPoolName.1.1.0 = STRING:

origin-server-pool-1

ORACLE-TRAFFICDIRECTOR-MIB::originServerInstanceName.1.1.0 = STRING:

otd_test_partha-Latitude-E7440

ORACLE-TRAFFICDIRECTOR-MIB::originServerRequests1MinuteAverage.1.1.0 =

STRING: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerRequests5MinuteAverage.1.1.0 =

STRING: 0

ORACLE-TRAFFICDIRECTOR-MIB::originServerRequests15MinuteAverage.1.1.0 =

STRING: 0

Each line in the output shows the value of a metric, but because the OID is shown in numeric format, it is difficult to identify the name of the specific metric. The snmpwalk utility can resolve numeric OIDs to textual names by using the management information base (MIB) definitions. For Oracle Traffic Director, the MIB definitions file is available in the following directory:

ORACLE_HOME/lib/snmp/ORACLE-TRAFFICDIRECTOR-MIB.txt

For a list of the SNMP MIB object names that you can use to query for specific statistics, see Metrics Tracked by Oracle Traffic Director.

For more information about snmpwalk, see the documentation at: http://www.net-snmp.org/docs/man/snmpwalk.html.

Monitoring Using DMS

The Oracle Dynamic Monitoring Service (DMS) provides a set of Java and C APIs that measure and report performance metrics, trace performance and provide a context correlation service for Fusion Middleware and other Oracle products. Apart from the APIs, DMS provides interfaces to enable application developers, support analysts, system administrators and others to measure application-specific performance information.

The DMS metrics for OTD are available as a set of metric tables (see DMS Metrics Tables). The monitoring data is exposed to DMS via a single Component Metric MBean. When DMS requests for monitoring data for an OTD instance, a plugin (MetricsPlugin) is invoked on the corresponding node manager to retrieve the statistics from the specified OTD instance. The plugin communicates with the OTD instance via native OTD interfaces to retrieve the monitoring data. The monitoring data returned from the node manager is cached on the administration server for a period of 5 seconds, during which time any request from DMS for monitoring data is satisfied from the cache.

You can view the DMS Metrics using a variety of interfaces including the DMS Spy Servlet and Oracle Fusion Middleware Control. You can also view metrics using the DMS custom WLST commands. See DMS Custom WLST Commands in WLST Command Reference for Infrastructure Components.

Example 14-1 Viewing DMS Metrics Using Custom DMS WLST Commands

# View metrics for all OTD instances
displayMetricTables('OTD_*')
 
# View origin server metrics for all instances
displayMetricTables('OTD_OriginServer')
 
# Get list of metric tables for a specific instance
displayMetricTableNames(servers='/OTD/otd_test_myserver.example.com')
 
# View all metrics for a specific instance
displayMetricTables(servers='/OTD/otd_test_myserver.example.com')
 
# View instance metrics for a specific instance
displayMetricTables('OTD_Instance', servers='/OTD/otd_test_myserver.example.com')
 
# Dump all metrics for a specific instance
dumpMetrics(servers='/OTD/otd_test_myserver.example.com')

Sample XML (stats-xml) Report

This section contains a sample statistics report in XML format, which you can view by using the otd_getStatsXml command or through a URI. For more information, see Viewing Statistics Using WLSTand Viewing stats-xml and perfdump Reports Through a Browser.

Note that the values shown in this sample report might not be meaningful. The sample report is provided here merely to indicate the metrics that the report includes and to give you a general idea about the format and structure of the report.

<?xml version="1.0" encoding="utf-8"?>
<stats versionMajor="1" versionMinor="3" flagEnabled="1">
<server id="otd_test_otd_Machine_1" versionServer="Oracle Traffic Director 12.2.1.2.0 B160911.182037 (Linux)" timeStarted="1475563593" secondsRunning="8209" ticksPerSecond="1000" maxProcs="1" maxThreads="256" flagProfilingEnabled="1" load1MinuteAverage="0.030000" load5MinuteAverage="0.020000" load15MinuteAverage="0.050000" rateBytesTransmitted="7225" rateBytesReceived="1596" requests1MinuteAverage="0.016667" requests5MinuteAverage="0.003333" requests15MinuteAverage="0.000000" errors1MinuteAverage="0.000000" errors5MinuteAverage="0.000000" errors15MinuteAverage="0.000000" responseTime1MinuteAverage="1.000000" responseTime5MinuteAverage="1.000000" responseTime15MinuteAverage="0.000000">
        <connection-queue id="cq1"/>
        <thread-pool id="thread-pool-0" name="NativePool"/>
        <profile id="profile-0" name="all-requests" description="All requests"/>
        <profile id="profile-1" name="default-bucket" description="Default bucket"/>
        <profile id="profile-2" name="cache-bucket" description="Cached responses"/>
        <process pid="19949" mode="active" timeStarted="1475563593" countConfigurations="3" sizeVirtual="1191404" sizeResident="15788" fractionSystemMemoryUsage="0.0022">
                <connection-queue connectionQueueId="cq1" countTotalConnections="9" countQueued="0" peakQueued="1" maxQueued="1536" countOverflows="0" countTotalQueued="9" ticksTotalQueued="1" count                                       Queued1MinuteAverage="0.000000" co      untQueued5MinuteAverage="0.000000" countQueued15MinuteAverage="0.000000"/>
                <thread-pool threadPoolId="thread-pool-0" countIdleThreads="1" countThreads="1" maxThreads="128" countQueued="0" peakQueued="0" maxQueued="0"/>
                <dns flagCacheEnabled="1" countCacheEntries="0" maxCacheEntries="1024" countCacheHits="0" countCacheMisses="0" flagAsyncEnabled="0" countAsyncNameLookups="0" countAsyncAddrLookups="0" countAsyncLookupsInProgress="0"/>
                <keepalive countConnections="1" maxConnections="3072" countHits="0" countFlushes="0" countRefusals="0" countTimeouts="0" secondsTimeout="30"/>
                <compression countRequests="0" bytesInput="0" bytesOutput="0" compressionRatio="0.000000" pageCompressionAverage="0.000000"/>
                <decompression countRequests="0" bytesInput="0" bytesOutput="0"/>
                <thread mode="idle" type="sync" asyncState="async-none" timeStarted="1475563593" connectionQueueId="keep-alive">
                        <request-bucket countRequests="0" countBytesReceived="0" countBytesTransmitted="0" count2xx="0" count3xx="0" count4xx="0" count5xx="0" countOther="0" count200="0" count302="0" count30                              4="0" count400="0" count401="0" count403="0" count404="0" count503="0"/>
                        <profile-bucket profile="profile-0" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                        <profile-bucket profile="profile-1" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                        <profile-bucket profile="profile-2" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                </thread><thread mode="idle" type="sync" asyncState="async-none" timeStarted="1475563593" connectionQueueId="keep-alive">
                        <request-bucket countRequests="0" countBytesReceived="0" countBytesTransmitted="0" count2xx="0" count3xx="0" count4xx="0" count5xx="0" countOther="0" count200="0" count302="0" count304="0" count400="0" count401="0" count403="0" count404="0" count503="0"/>
                        <profile-bucket profile="profile-0" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                        <profile-bucket profile="profile-1" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                        <profile-bucket profile="profile-2" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                </thread>
                <thread mode="response" type="sync" asyncState="async-none" timeStarted="1475563593" function="stats-xml" connectionQueueId="cq1" virtualServerId="test" timeRequestStarted="1475572257009438">
                <request-bucket method="GET" uri="/stats-xml" countRequests="5" countBytesReceived="1435" countBytesTransmitted="22730" count2xx="4" count3xx="0" count4xx="0" count5xx="1" countOther="0" count200="4" count302="0" count304="0" count400="0" count401="0" count403="0" count404="0" count503="0"/>
                <profile-bucket profile="profile-0" countCalls="48" countRequests="5" ticksDispatch="1" ticksFunction="7581"/>
                <profile-bucket profile="profile-1" countCalls="48" countRequests="5" ticksDispatch="1" ticksFunction="7581"/>
                <profile-bucket profile="profile-2" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
        </thread>
        <thread mode="idle" type="sync" asyncState="async-none" timeStarted="1475563593" connectionQueueId="cq1">
                <request-bucket countRequests="4" countBytesReceived="784" countBytesTransmitted="19544" count2xx="4" count3xx="0" count4xx="0" count5xx="0" countOther="0" count200="4" count302="0" count304="0" count400="0" count401="0" count403="0" count404="0" count503="0"/>
                <profile-bucket profile="profile-0" countCalls="36" countRequests="4" ticksDispatch="1" ticksFunction="1"/>
                <profile-bucket profile="profile-1" countCalls="36" countRequests="4" ticksDispatch="1" ticksFunction="1"/>
                <profile-bucket profile="profile-2" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
        </thread>
        </process>
        <virtual-server id="test" flagEnabled="1">
                <request-bucket method="GET" uri="/.perf" countRequests="9" countBytesReceived="2219" countBytesTransmitted="42274" count2xx="8" count3xx="0" count4xx="0" count5xx="1" countOther="0" count200="8" count302="0" count304="0" count400="0" count401="0" count403="0" count404="0" count503="0"/>
                <profile-bucket profile="profile-0" countCalls="84" countRequests="9" ticksDispatch="2" ticksFunction="7582"/>
                <profile-bucket profile="profile-1" countCalls="84" countRequests="9" ticksDispatch="2" ticksFunction="7582"/>
                <profile-bucket profile="profile-2" countCalls="0" countRequests="0" ticksDispatch="0" ticksFunction="0"/>
                <webapp-firewall countRequestsIntercepted="0" countRequestsAllowed="0" countRequestsDenied="0" countRequestsDropped="0" countRequestsRedirected="0" countRequestsDenyDetected="0" countRequestsDropDetected="0" countRequestsRedirectDetected="0"/>
                <websocket countUpgradeRequests="0" countUpgradeRequestsFailed="0" countUpgradeRequestsRejected="0" countActiveConnections="0" countRequestsAborted="0" countRequestsTimedout="0" countBytesReceived="0" countBytesTransmitted="0" millisecondsConnectionActiveAverage="0"/>
                <route id="default-route" condition="default">
                        <request-bucket countRequests="2" countBytesReceived="390" countBytesTransmitted="715" count2xx="1" count3xx="0" count4xx="0" count5xx="1" countOther="0" count200="1" count302="0" count304="0" count400="0" count401="0" count403="0" count404="0" count503="0"/>
                </route>
</virtual-server>
<server-pool name="origin-server-pool-1" type="http" countRetries="9">
        <service-queue countQueued="0" countQueuedHighPriority="0" countQueuedNormalPriority="0" countQueuedLowPriority="0" countQueuedTimedout="0" countTotalQueued="0" countTotalQueuedHighPriority="0" countTotalQueuedNormalPriority="0" countTotalQueuedLowPriority="0" countTotalQueuedSticky="0" countTotalStickyToNonSticky="0" millisecondsQueuedHighPriorityAverage="0" millisecondsQueuedNormalPriorityAverage="0" millisecondsQueuedLowPriorityAverage="0"/>
        <origin-server name="http://example.us.oracle.com:4000" status="online" flagDiscovered="0" flagRampedUp="1" type="generic (Oracle-iPlanet-Web-Server/7.0)" flagBackup="0" secondsOnline="6774" countDetectedOffline="1" countConnectAttempts="339" countConnectFailures="120" countClosedConnections="218" countConnectionsClosedByOriginServer="0" countActiveConnections="0" countIdleConnections="1" countActiveStickyConnections="0" secondsKeepAliveTimeout="0" countRequestsAborted="0" countRequestsTimedout="0" countStickyRequests="0" countRequests="1" countHealthCheckRequests="218" countBytesTransmitted="508" countBytesReceived="484" weightResponseTime="1.00" requests1MinuteAverage="0.000000" requests5MinuteAverage="0.000000" requests15MinuteAverage="0.000000">
                <websocket countUpgradeRequests="0" countUpgradeRequestsFailed="0" countUpgradeRequestsRejected="0" countActiveConnections="0" countRequestsAborted="0" countRequestsTimedout="0" countBytesReceived="0" countBytesTransmitted="0" millisecondsConnectionActiveAverage="0"/>
        </origin-server>
</server-pool>
<cache flagEnabled="1" countEntries="0" sizeHeapCache="16580" countContentHits="0" countContentMisses="0" countHits="0" countRevalidationRequests="0" countRevalidationFailures="0"/>
<cpu-info cpu="1" percentIdle="99.283209" percentUser="0.501040" percentKernel="0.215751"/>
<cpu-info cpu="2" percentIdle="99.234605" percentUser="0.540530" percentKernel="0.224865"/>
</server>
</stats>

Sample Plain-Text (perfdump) Report

This section contains a sample perfump statistics report that you can view by using the otd_getPerfDump command or through a URI. For information about viewing the plain-text report, see Viewing Statistics Using WLST and Viewing stats-xml and perfdump Reports Through a Browser .

Note that the values shown in this sample report might not be meaningful. The sample report is provided here merely to indicate the metrics that the report includes and to give you a general idea about the format of the report.

Oracle Traffic Director 12.2.1.2.0 B160911.182037 (Linux)

Server started Mon Oct 03 23:46:32 2016
Process 19949 started Mon Oct 03 23:46:32 2016


ConnectionQueue

Current/Peak/Limit Queue Length            0/1/1536
Total Connections Queued                   8
Average Queue Length (1, 5, 15 minutes)    0.00, 0.00, 0.00
Average Queuing Delay                      0.12 milliseconds


HTTP Listener http-listener-1

Address                   0.0.0.0:8080
Acceptor Threads          1
Default Virtual Server    test


KeepAliveInfo

KeepAliveCount        0/3072
KeepAliveHits         0
KeepAliveFlushes      0
KeepAliveRefusals     0
KeepAliveTimeouts     0
KeepAliveTimeout      30 seconds


SessionCreationInfo

Active Sessions                1
Keep-Alive Sessions            0
Keep-Alive threads             2
Active Async Sessions          0
HTTP Sessions current/max      4/258
TCP Sessions current/max       2/2


Cache

Cache Enabled                    yes
Object Cache Entries             0
Cache lookup (hits/misses)       0/0
Requests served from Cache       0
Revalidation (successful/total)  0/0 (  0.00%)
Heap space used                  16580


Thread Pool NativePool

Idle/Peak/Limit               1/1/128
Work Queue Length/Peak/Limit  0/0/0


DNSCacheInfo

enabled             yes
CacheEntries        0/1024
HitRatio            0/0 (  0.00%)


Async DNS disabled


Performance Counters

Total number of requests                   8
Average Request processing time       0.9479
Total Request processing time         7.5830


default-bucket (Default bucket)

Counter Name               Average         Total      Percent
-------------------------------------------------------------
Number of Requests                             8    (100.00%)
Number of Invocations                         75    (100.00%)
Latency                     0.0003        0.0020    (  0.03%)
Function Processing Time    0.9476        7.5810    ( 99.97%)
Total Response Time         0.9479        7.5830    (100.00%)


HTTP Origin Servers

Pool-name             Host:Port                           Status  ActiveConn  IdleConn  StickyConn  Timeouts  Aborted  Sticky-Reqs  Total-Reqs  BytesTrans  BytesRecvd
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
origin-server-pool-1  http://example.us.oracle.com:4000  online  0           1         0           0         0        0            1           508         484


TCP Origin Servers

No TCP origin servers are configured


Sessions 

Process  Session  Status    Async-state  Client        Age  VS    Method  URI     Function       Origin-Server
--------------------------------------------------------------------------------------------------------------
19949    sync     response  -            148.87.19.37  1    test  GET     /.perf  service-dump/  -


TCP Proxy

Active Connections                  0
Avg Duration                        0.00 seconds
Requests (timeout/aborted/total)    0/0/0


SSL session cache statistics (global)

Total SSL sessions stored since starting: 0
Total SSL sessions expired since starting: 0
Total (pre-expiry) SSL sessions scrolled out of the cache: 0
Total SSL session retrieves since starting: 0 hits, 0 misses
Total SSL session removes since starting: 0 hits, 0 misses