12 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 Appendix A, "Metrics Tracked by Oracle Traffic Director."

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

12.1 Methods for Monitoring Oracle Traffic Director Instances

Table 12-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 12-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 Section 12.4, "Viewing Statistics Using WLST," and Section 12.7, "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 Section 12.5, "Viewing stats-xml and perfdump Reports Through a Browser."

Must be enabled and configured explicitly.

See Section 12.3, "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 Section 12.6, "Monitoring Using SNMP."

Statistics available through network management systems.


12.2 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 Section 1.7.1, "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 Section 1.7.2, "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 about otd_getStatsProperties and otd_setStatsProperties, see WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

12.3 Configuring URI Access to Statistics Reports

As described in Section 12.1, "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.

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 Section 1.7.2, "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

Note:

For information about invoking WLST, see Section 1.7.1, "Accessing WebLogic Scripting Tool."
  • 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.

12.4 Viewing Statistics Using WLST

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

Note:

For information about invoking WLST, see Section 1.7.1, "Accessing WebLogic Scripting Tool."
  • 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 Section 12.8, "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 Section 12.9, "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 Section 12.7, "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.

12.5 Viewing stats-xml and perfdump Reports Through a Browser

If you enable URI access to statistics as described in Section 12.3, "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
    

12.6 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.

You can use SNMP to monitor the Oracle Traffic Director instances. 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:

12.6.1 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 Section 1.7.2, "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 about the custom WLST commands mentioned in this section, see WebLogic Scripting Tool Command Reference for Oracle Traffic Director.

12.6.2 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:

INSTANCE_HOME/admin-server/config/snmpagt.conf

You can configure the SNMP subagent's settings by editing the snmpagt.conf file. Table 12-2 lists the key SNMP subagent parameters.

Table 12-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.

12.6.2.1 SNMP v3 User configuration

SNMP is not defaultly configured on installation, there is no access control added to OTD SNMP. To provide access control User need to add one or more snmp v3 users.

Adding a snmp v3 user

To start or stop the SNMP subagent on a node by using the Fusion Middleware Control, do the following:

  1. Stop the snmp agent if running and add the following lines

    Persistent file<oracle_home>/otd_domain/config/fmwconfig/components/OTD/snmp/store/ snmpagt.conf
    createUser username SHA authpassphrase [DES|AES] [privpassphrase]

    SHA is the authentication types to use

    DES and AES are the privacy protocols to use

    authpassphrase is the password to authenticate the username

    privpassphrase is the password to encrypt the snmp request and response

    Configuration file<oracle_home>/otd_domain/config/fmwconfig/components/OTD/snmp/config /snmpagt.conf
    rouser username [noauth|auth|priv]

    User can configure authentication level.

    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 as mentioned, OTD SNMP agent need to start and stop once. While stopping user authentication parameters provided in "createUser" line will be encrypted and stored in to the persistent file.

  3. Start the OTD SNMP agent. Make sure to start one or more instances.

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

    snmpcmd(snmpwalk/snmpget)
    snmpwalk -m <path to OTD mib>/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

Deleting a snmp v3 user

Simple enough. Just remove the entries from the conf file and persistent file.

Simplifying commands by setting defaults

The most of the command line of snmpwalk can be added in to ~/.snmp/snmp.conf.

default options
defSecurityNam SNMPv3 username
defAuthType authentication method (either MD5 or SHA)
defSecurityLevel security level for the user. i.e authNoPriv, authPriv etc
defAuthPassphrase authpassphrase
defPrivType privacy protocol to use. DES|AES
defPrivPassphrase privpassphrase
defVersion 3
defaultport 11161
mibirds +<path to ORACLE-TRAFFICDIRECTOR-MIB.txt>
mibs +ORACLE-TRAFFICDIRECTOR-MIB

Run as agentx

OTD SNMP supports agentx protocol and for communicate as agentx, it needs another SNMP agent which supports agentx. OS SNMP agent (snmpd) of OEL 6 and Solaris 11 supports agentx. When OTD SNMP runs as agentx, It can not accept snmpcmds. All the requests should be made to the SNMP agent which is running as master. Master agent will for forward the requests to the OTD SNMP agent.

Configure OTD SNMP agent as agentx

The user can modify the transport layer as specified in man page of snmpd. OTD SNMP default agentx transport specifier is below:

agentxsocket tcp:127.0.0.1:705

Configure OS SNMP agent as agentx

/etc/snmp/snmpd.conf
master agentxagentxsocket tcp:127.0.0.1:705

snmpd daemon must be started manually and connection details are logged in snmpd.log, snmp requests should be sent to snmp port of snmpd(default 161).

12.6.3 Starting and Stopping the SNMP Subagent

You can start and stop the SNMP subagent on a node by using either Fusion Middleware Control or the WLST.

Starting and Stopping the SNMP Subagent Using Fusion Middleware Control

To start or stop the SNMP subagent on a node by using the Fusion Middleware Control, do the following:

  1. Log in to Fusion Middleware Control, as described in Section 1.7.2, "Displaying Fusion Middleware Control."

  2. Click the Nodes button that is situated near the upper left corner of the page.

    A list of available nodes is displayed.

  3. From the list of nodes, select the node for which you want to start or stop the SNMP subagent.

    The General Settings page is displayed.

    • To start the SNMP subagent, click Start SNMP Subagent. The status changes to Running.

    • To stop the subagent, click Stop SNMP Subagent. The status changes to Running.

  4. Specify the parameters that you want to change, and then click Save.

    A message is displayed in the Console Messages pane indicating that the updated settings are saved.

  5. Restart the administration server by clicking Restart in the Common Tasks pane.

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)
    

    Note:

    Alternatively, you can start the SNMP agent in agentx mode, by configuring the sub-agent configuration file.

    In agentx mode, the SNMP agent needs to communicate with the operating-system master agent (snmpd). So you must configure snmpd to listen to the agentx protocol, by doing the following:

    1. Enable agentx by adding the following token to the operating-system master agent (snmpd) located at (/etc/snmp/snmpd.conf). This token enables the master agent to connect to the agentx paths you specify.

      master agentx

    2. Specify the socket path and socket path permissions in the ORACLE_HOME/admin-server/config/snmpagt.conf file, as shown in the following example:

      Before configuring for agentx

      agentuser admin123
      agentxsocket /tmp/snmpagt-e6d7cd20/snmpagt.socket
      

      After configuring for agentx

      agentxsocket /tmp/snmpagt-e6d7cd20/snmpagt.socket 
      agentxperms 0755 0755 admin123 admin123 
      
    3. Start snmpd daemon manually.

  • 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.

12.6.4 Viewing Statistics Using snmpwalk

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.

Note:

Prior to using snmpwalk, if required, you can set most of the snmpwalk options in the snmp.conf file, located at <user-home>/.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. For example, snmp.conf enables you to set the following options:
defaultport  11161
defversion   3
defcommunity  public
mibdirs  +<path to ORACLE-TRAFFICDIRECTOR-MIB.txt> #
mibdirs  + <otd_install_root>/lib/snmp #
mibs  +ORACLE-TRAFFICDIRECTOR-MIB

After setting the above options, snmpwalk can be run as follows:

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

For information about all the options that can be set using snmp.conf, see the man-pages for snmp.conf.

SNMP Version 2c

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).

The following is the syntax of the snmpwalk command:

> snmpwalk -c public -v 3 host:port oid
  • host is the host name of the Oracle Traffic Director node that you want to monitor.

  • port is the listen port of the SNMP subagent on the node. The default port specified in the snmpagt.conf file is 11161.

  • oid is the unique object identifier series for which you want to view statistics. The OID for the Oracle Traffic Director product is 1.3.6.1.4.1.111.19.190.

    Note:

    OIDs are assigned and maintained by the Internet Assigned Numbers Authority. In the OID for Oracle Traffic Director, the first six numbers, 1.3.6.1.4.1, represent private enterprises, 111 is the unique identifier for Oracle and 19.190 represents the Oracle Traffic Director product. For more information about the structure of OIDs, see RFC 2578 (http://tools.ietf.org/html/rfc2578).

SNMP Version 3

To monitor statistics by using SNMP v3, do the following:

  1. Create an SNMP v3 user by running the following command as the root user:

    $ sudo net-snmp-config --create-snmpv3-user -ro -a SHA1 -A abcd1234 otdadmin
    

    This command does the following:

    • Adds the following entry in /var/net-snmp/snmpd.conf:

      createUser otdadmin SHA1 "abcd1234" DES
      
    • Adds the following entry in /etc/net-snmp/snmp/snmpd.conf:

      rouser otdadmin
      
  2. Start and stop snmpd.

    $ sudo /etc/init.d/snmpd start
    Starting snmpd:                                            [  OK  ]
    
    $ sudo /etc/init.d/snmpd stop
    Stopping snmpd:                                            [  OK  ]
    

    As a result of starting and stopping snmpd, the createUser entry in the /var/net-snmp/snmpd.conf file changes as shown in the following example:

    usmUser 1 3 0x80001f8801819ee527 0x676164686100 0x676164686100 NULL
     .1.3.6.1.6.3.10.1.1.2 
    0x8b6a9b458c0cb628aa5ba10ebbec48e7 .1.3.6.1.6.3.10.1.2.2
     0x8b6a9b458c0cb628aa5ba10ebbec48e7 ""
    

    In this example, 0x80001f8801819ee527 is the generated engine ID.

  3. Run the SNMP agent in agentx mode.

    Run snmpwalk by using the following command. The default port for snmpd is 161

    snmpwalk -v3 -u otdadmin -l authNoPriv  -a SHA1 -A abcd1234 localhost:161 1.3.6.1.4.1
    

Enabling the snmpwalk Command to Show MIB Object Names Instead of Numeric OIDs

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

SNMPv2-SMI::enterprises.111.19.190.1.20.1.2.0.0 = INTEGER: 645
SNMPv2-SMI::enterprises.111.19.190.1.20.1.3.0.0 = Gauge32: 4
SNMPv2-SMI::enterprises.111.19.190.1.20.1.4.0.0 = Gauge32: 4
SNMPv2-SMI::enterprises.111.19.190.1.20.1.10.0.0 = Gauge32: 0
SNMPv2-SMI::enterprises.111.19.190.1.20.1.11.0.0 = Gauge32: 3072
SNMPv2-SMI::enterprises.111.19.190.1.20.1.12.0.0 = Counter64: 0
SNMPv2-SMI::enterprises.111.19.190.1.20.1.13.0.0 = Counter64: 0
SNMPv2-SMI::enterprises.111.19.190.1.20.1.14.0.0 = STRING: "0.0000"

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

To enable the snmpwalk command to show MIB object names instead of numeric OIDs, do one of the following:

  • Set the MIBS environment variable on the host to point to the Oracle Traffic Director MIB.

    > set env MIBS=+ORACLE-TRAFFICDIRECTOR-MIB
    

    Then, run the snmpwalk command and either grep the output for the required MIB object or explicitly specify the required MIB object name.

    For example, to view statistics for proxy cache parameters for an Oracle Traffic Director instance running on the node app1, run the following command:

    > snmpwalk snmpwalk -c public -v 2c app1:11161 ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheTable
    
    ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheEnabledFlag.0.0 = INTEGER: enabled(1)
    ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheCountEntries.0.0 = Counter64: 0
    ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheSizeHeap.0.0 = Counter64: 16498
    ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheCountContentHits.0.0 = Counter64: 0
    ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheCountContentMisses.0.0 = Counter64: 0
    ORACLE-TRAFFICDIRECTOR-MIB::proxyCacheCountHits.0.0 = Counter64: 0
    ...
    
  • Specify the Oracle Traffic Director MIB explicitly for the snmpwalk command by using the -m option.

    For example, to view the origin-server names for an Oracle Traffic Director instance running on the local host, run the following command:

    > snmpwalk -c public -v 2c -m $ORACLE_HOME/lib/snmp/ORACLE-TRAFFICDIRECTOR-MIB.txt localhost:11161 ORACLE-TRAFFICDIRECTOR-MIB::originServerName
    

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

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

12.7 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 12-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')

12.8 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 Section 12.4, "Viewing Statistics Using WLST" and Section 12.5, "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_OTD_rechaita" versionServer="Oracle Traffic Director 12.2.1.0.0 B20150908.132940 (Linux)" timeStarted="1442991226" secondsRunning="119" ticksPerSecond="1000" maxProcs="1" maxThreads="512" flagProfilingEnabled="1" load1MinuteAverage="0.070000" load5MinuteAverage="0.070000" load15MinuteAverage="0.050000" rateBytesTransmitted="10087" rateBytesReceived="4929" requests1MinuteAverage="0.000000" requests5MinuteAverage="0.000000" requests15MinuteAverage="0.000000" errors1MinuteAverage="0.000000" errors5MinuteAverage="0.000000" errors15MinuteAverage="0.000000" responseTime1MinuteAverage="0.000000" responseTime5MinuteAverage="0.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="7236" mode="active" timeStarted="1442991226" countConfigurations="1" sizeVirtual="862916" sizeResident="32288" fractionSystemMemoryUsage="0.0022">
            <connection-queue connectionQueueId="cq1" countTotalConnections="0" countQueued="0" peakQueued="0" maxQueued="12288" countOverflows="0" countTotalQueued="0" ticksTotalQueued="0" countQueued1MinuteAverage="0.000000" countQueued5MinuteAverage="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="0" maxConnections="24576" 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" timeStarted="1442991226" 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="idle" timeStarted="1442991226" 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="idle" timeStarted="1442991226" 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="idle" timeStarted="1442991226" 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="idle" timeStarted="1442991226" connectionQueueId="cq1">
                <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="idle" timeStarted="1442991226" connectionQueueId="cq1">
                <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="idle" timeStarted="1442991226" connectionQueueId="cq1">
                <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="idle" timeStarted="1442991226" connectionQueueId="cq1">
                <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>
        </process>
        <virtual-server id="OTD" flagEnabled="1">
            <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"/>
            <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="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"/>
            </route>
        </virtual-server>
        <virtual-server id="virtual-server-1" flagEnabled="1">
            <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"/>
            <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="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"/>
            </route>
        </virtual-server>
        <cache flagEnabled="1" countEntries="0" sizeHeapCache="16516" countContentHits="0" countContentMisses="0" countHits="0" countRevalidationRequests="0" countRevalidationFailures="0"/>
        <cpu-info cpu="1" percentIdle="99.268188" percentUser="0.426176" percentKernel="0.305636"/>
        <cpu-info cpu="2" percentIdle="99.476388" percentUser="0.336554" percentKernel="0.187058"/>
        <cpu-info cpu="3" percentIdle="99.518723" percentUser="0.300850" percentKernel="0.180426"/>
        <cpu-info cpu="4" percentIdle="99.537347" percentUser="0.292632" percentKernel="0.170021"/>
    </server>
</stats>

12.9 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 Section 12.4, "Viewing Statistics Using WLST" and Section 12.5, "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.0.0 B20150908.132940 (Linux)
Server started Tue Sep 22 23:53:45 2015
Process 7236 started Tue Sep 22 23:53:45 2015
ConnectionQueue
Current/Peak/Limit Queue Length            0/0/12288
Total Connections Queued                   0
Average Queue Length (1, 5, 15 minutes)    0.00, 0.00, 0.00
Average Queuing Delay                      0.00 milliseconds
HTTP Listener http-listener-1
Address                   0.0.0.0:8080
Acceptor Threads          1
Default Virtual Server    OTD
KeepAliveInfo
KeepAliveCount        0/24576
KeepAliveHits         0
KeepAliveFlushes      0
KeepAliveRefusals     0
KeepAliveTimeouts     0
KeepAliveTimeout      30 seconds
SessionCreationInfo
Active Sessions                0
Keep-Alive Sessions            0
Keep-Alive threads             4
HTTP Sessions current/max      8/516
TCP Sessions current/max       4/4
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                  16516
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                   0
Average Request processing time       0.0000
Total Request processing time         0.0000
default-bucket (Default bucket)
Counter Name               Average         Total      Percent
-------------------------------------------------------------
Number of Requests                             0    (  0.00%)
Number of Invocations                          0    (  0.00%)
Latency                     0.0000        0.0000    (  0.00%)
Function Processing Time    0.0000        0.0000    (  0.00%)
Total Response Time         0.0000        0.0000    (  0.00%)
HTTP Origin Servers
No HTTP origin servers are configured
TCP Origin Servers
No TCP origin servers are configured
TCP Proxy
Active Connections                  0
Avg Duration                        0.00 seconds
Requests (timeout/aborted/total)    0/0/0