CA SiteMinder - Monitoring Extension


An AppDynamics extension to be used with a stand alone Java machine agent to provide metrics for CA's Siteminder.

Use Case

CA Site Minder (a.k.a. Netegrity Site Minder SSO) is a web access management system that enables user authentication and secure Internet SSO (single sign-on), policy-driven authorization, federation of identities, and complete auditing of all access to the web applications it protects.


  1. This extension extracts the metrics from CA SiteMinder through SNMP. For the extension to work, the SNMP subagent in SiteMinder needs to be started. This snmp subagent module is found in the `\bin\snmprun.bat` on Windows. A similar location for UNIX can be easily located. The port on which the SNMP subagent is listening can be found from the `\config\snmp.conf` directory. The architecture of the SNMP module along with other components of SiteMinder can be found on Pg. 112 and Pg. 131 in

  2. The extension uses UDP to connect to SiteMinder. Please make sure that the necessary port is open for UDP traffic.

  3. The extension is pre-configured with metrics and their associated OIDs. In case if the OIDs need to be validated, the MIB file can be found in the `\MIB` directory.

Metrics Provided

This extension extracts metrics for the policyServer and webagents components. For list of metrics please visit Pg. 139 of

In addition to the metrics exposed by SiteMinder, we also add a metric called "Metrics Collection Successful" with a value 0 when an error occurs and 1 when the metrics collection is successful.

Note : By default, a Machine agent or a AppServer agent can send a fixed number of metrics to the controller. To change this limit, please follow the instructions mentioned here. For eg.

    java -Dappdynamics.agent.maxMetrics=2500 -jar machineagent.jar


  1. You can download the from AppDynamics Exchange.

  2. Unzip as "SiteMinderMonitor" and copy the "SiteMinderMonitor" directory to <MACHINE_AGENT_HOME>/monitors


Note : Please make sure to not use tab ( ) while editing yaml files. You may want to validate the yaml file using a yaml validator

  1. Configure the siteminder instances by editing the config.yml file in <MACHINE_AGENT_HOME>/monitors/SiteMinderMonitor/.
      #This will create this metric in all the tiers, under this path
         #metricPrefix: Custom Metrics|SiteMinder
         #This will create it in specific Tier/Component. Make sure to replace  with the appropriate one
         #from your environment. To find the  in your environment, please follow the screenshot in
         metricPrefix: Server|Component:|Custom Metrics|SiteMinder
           - host: ""
             port: 161
             communityString: public
             snmpVersion: 2 # Only required for snmp v1, will default to 2. Support only v1 and v2.
             displayName: "SiteMinder Manager"  #Required field for display purposes
             #timeout: 1 # second, by default
             #retries: 5
             #maxRepetitions: 10
             #resources: creates a resource mapping that can be used to create readable metric paths.
             #You may want to see machine names and not ids in the metric path.
             #You can choose to remove the resources section completely and it will show you machine ids in the metric path.
                 #maps policyServerIndex to policyServerHostID
               - component: "policyServer"
                   policyServerHostID: ""
                 #maps webAgentIndex to webAgentHostID
               - component: "webagents"
                   webAgentHostID: ""
            #You can configure multiple components like policyServer,webagents. The component names should match with
            #the ones in the resources section
               - component: "policyServer"   #component name
                   - policyServerMaxSockets: ""
                   - policyServerSocketCount: ""
                   - policyServerAuthAcceptCount: ""
                   - policyServerAuthRejectCount: ""
                   - policyServerAzAcceptCount: ""
                   - policyServerAzRejectCount: ""
                   - policyServerStatus: ""
                     convert: {
                       "Active" : "1",
                       "Inactive" : "2",
                       "$default" : "0"
               - component: "webagents"
                   - webAgentSocketCount: ""
                   - webAgentResourceCacheCount: ""
                   - webAgentResourceCacheHits: ""
                   - webAgentResourceCacheMax: ""
                   - webAgentResourceCacheMisses: ""
                   - webAgentUserSessionCacheCount: ""
                   - webAgentUserSessionCacheHits: ""
                   - webAgentUserSessionCacheMax: ""
                   - webAgentUserSessionCacheMisses: ""
                   - webAgentIsProtectedCount: ""
                   - webAgentIsProtectedErrors: ""
                   - webAgentIsProtectedAvgTime: ""
                   - webAgentLoginCount: ""
                   - webAgentLoginErrors: ""
                   - webAgentLoginFailures: ""
                   - webAgentLoginAvgTime: ""
                   - webAgentValidationCount: ""
                   - webAgentValidationErrors: ""
                   - webAgentValidationFailures: ""
                   - webAgentValidationAvgTime: ""
                   - webAgentAuthorizeCount: ""
                   - webAgentAuthorizeErrors: ""
                   - webAgentAuthorizeFailures: ""
                   - webAgentAuthorizeAvgTime: ""
                   - webAgentCrosssiteScriptHits: ""
                   - webAgentBadURLcharsHits: ""
                   - webAgentBadCookieHitsCount: ""
                   - webAgentExpiredCookieHitsCount: ""
                   - webAgentStatus: ""
                     convert: {
                       "Active" : "1",
                       "Inactive" : "2",
                       "$default" : "0"
         # number of concurrent tasks.
         # This doesn't need to be changed unless many instances are configured
         numberOfThreads: 10
    Make sure to replace the COMPONENT_ID to a valid id from your environment. For more details please check the link mentioned in the comments in the config.yml.
  3. Configure the path to the config.yml file by editing thein the monitor.xml file in the <MACHINE_AGENT_HOME>/monitors/SiteMinderMonitor/ directory. Below is the sample

         <!-- config file-->
         <argument name="config-file" is-required="true" default-value="monitors/SiteMinderMonitor/config.yml" />
    Please make sure to give the right path for Windows.

Troubleshooting steps

  1. Make sure to enable UDP traffic if not enabled by default.

  2. Once the SNMP subagent module is started, the value for the respective OIDs can be viewed in a tool provided by CA. This tool can be found in the `\bin\snmpwalkrun.bat` directory.


Always feel free to fork and contribute any changes directly via GitHub.


Find out more in the AppDynamics Exchange.


For any questions or feature request, please contact AppDynamics Center of Excellence.

Version: 1.0.0 Controller Compatibility: 4.0+