All Topics

Learn Splunk

All Topics

Hi, I am doing the WBT - Using Splunk on eLearning and when I try to access the module 2 lab by clicking on connect to lab server i get the below message. Can you please help? {"success":false,... See more...
Hi, I am doing the WBT - Using Splunk on eLearning and when I try to access the module 2 lab by clicking on connect to lab server i get the below message. Can you please help? {"success":false,"offset":0,"count":0,"total":0,"messages":[{"type":"ERROR","time":"2016-03-29T07:23:47","message":"Login failed"}],"data":null} Thanks, Rijutha
I am taking a Splunk Course - Searching & Reporting - http://www.splunk.com/view/SP-CAAANMG. When I get to the first Lab, there are three buttons. One to Generate the Course Materials, One to Downl... See more...
I am taking a Splunk Course - Searching & Reporting - http://www.splunk.com/view/SP-CAAANMG. When I get to the first Lab, there are three buttons. One to Generate the Course Materials, One to Download the Module Labs and one to Get Lab Credentials. The one for "Getting Lab Credentials" is not working? Any help would be appreciated.
What abilities come with the License Admin role? A license admin is a special type of user on AppDynamics.com. These users are associated to one or more specific licenses and, with this association... See more...
What abilities come with the License Admin role? A license admin is a special type of user on AppDynamics.com. These users are associated to one or more specific licenses and, with this association, gain the ability to learn about the usage of those licenses. Once designated as a License Admin, these users can also register other new users to AppDynamics.com, conferring to them access to licenses from those that they themselves have access to. Table of Contents How do I become a license admin?  How do I delegate the license admin role to other users of my company?  How do I grant access to an existing user?  How do I add a new user with license access?  Related resources  How do I become a License Admin? There are two ways to become a License Admin:  Through the sales process with AppDynamics. Another license admin of your company grants you the role. Whenever licenses are purchased from AppDynamics, contacts gathering is part of the sales and provisioning process. During provisioning, AppDynamics registers the first license admins. Once an individual user is granted this right, the (new) License Admin may also delegate this capability to others using the Account Management Portal.  How do I delegate the License Admin role to other users at my company? As a License Admin, you have access to the user management functions in the Account Management Portal. To access these functions, sign in using your AppDynamics.com user account at accounts.appdynamics.com/users. Please remember that, though it may share the same email, this is a distinct account from your Controller account, should you have one.   If you are already logged into AppDynamics.com, you can find the user management link on the left-hand navigation pane of the company context pages. Click your name in the upper right-hand corner and choose Subscriptions from the drop-down. You'll see a listing of the company subscriptions to which you're currently assigned as License Admin. Choose User Management from the left-hand navigation pane. You are able to assign this role to others in one of two ways: Choose an existing user and grant them access to one or more of your licenses Add a new user with access to one or more of your licenses How can I grant access to an existing user? The user management page displays all of your company's users. From this list, you can browse or search for users. Once you have found the user to whom you want to grant access to the license, select them and assign the license as follows: Click the user in the row to select them. Choose the “Edit User” function (pencil) from the action bar at the top. Click the “License Admin” checkbox to enable it. Click the drop-down to display all the licenses that you may assign. Choose 1 or more licenses by clicking the checkbox of each. Click the Save button. The user will be granted access to the selected license(s). They will receive an email informing them of their access. How can I add a new user with license access? From the user management list, you can add a new user to the system and assign their license access. From the User Management page, click the “+” (Add User) button in the action bar at the top of the listing. Complete the basic information about this user. You are required to provide the user’s email address.  The remaining information is optional and can be changed later if needed.  Don’t worry if you don’t know the user’s first or last name: each individual will be required to provide that information when they complete their account profile.   Choose one or more licenses to assign to the new user. Notice that the License Admin role is automatically checked.  You must click the dropdown to select from among available licenses. Click the Save button to finish adding the user to your company’s account.  The new user will be added to your company user list page with a status of Pending. The individual will receive a welcome email with a link that will enable them to complete their profile and password. When they complete this step, their account status will change to Active.  See the How do I manage accounts.appdynamics.com users as an Admin? article to learn more about the capabilities of AppDynamics Accounts user management.   Related resources Documentation: Cisco AppDynamics SaaS User Management  Knowledge Base: How do I manage Accounts Management Portal users as an Admin?
Hi, I am signing up for classes at the beginning of April for both the Power User and Admin Certs and have a question about the Infrastructure Overview Course (e-Learning) . This course is opt... See more...
Hi, I am signing up for classes at the beginning of April for both the Power User and Admin Certs and have a question about the Infrastructure Overview Course (e-Learning) . This course is optional, but I think I would like to take it now before I go to the classes (I use Splunk a little each day). Is that advisable, or should I wait until I complete one or more of the other classes before I take this course? Please advise your thoughts. Thank you. Jim
Where can I find information on AppDynamics’ integration with VMware Tanzu (formerly PCF)? The AppDynamics integration with VMware Tanzu Application Service (formerly Pivotal Cloud Foundry or PCF)... See more...
Where can I find information on AppDynamics’ integration with VMware Tanzu (formerly PCF)? The AppDynamics integration with VMware Tanzu Application Service (formerly Pivotal Cloud Foundry or PCF) lets you easily deploy AppDynamics-monitored applications on the VMware Tanzu platform, and gather performance and infrastructure metrics.  The Application Monitoring for VMware Tanzu tile is at the center of the AppDynamics integration with VMware Tanzu. With this tile, you have the full benefit of AppDynamics APM for your services deployed in any VMware Tanzu platform, including the ability to correlate these services with business data in real-time.  In this article... Integration tile for AppDynamics Platform Monitoring for VMware Tanzu Resources Installation and end-to-end workflows Release Notes and FAQs Recommended reading Hands-on training: recorded webinars Integration tile for AppDynamics Application Monitoring for VMware Tanzu For performance monitoring of applications running on Cloud Foundry: APM is provided through AppDynamics support inside the standard Cloud Foundry buildpacks and Service Broker deployed through the tile An Extension Buildpack is provided to help instrument Java and .NET HWC applications For detailed information on the integration and Application Monitoring for VMware Tanzu, visit these resources: AppDynamics Application Performance Monitoring for VMWare Tanzu AppDynamics Service Broker AppDynamics Extension Buildpack   How does it work? To simplify APM setup, this tile delivers a service broker to support an AppDynamics marketplace service. The Controller parameters are configured in the tile and automatically published to the marketplace when the tile is installed. Back to Contents   Resources Installation and end-to-end workflows VMware Tanzu integration tile for application monitoring Installation and configuration resources: Follow the steps outlined in the resources below to install and configure Application Monitoring (APM): Installing and Configuring AppDynamics Using AppDynamics This page provides more information on end-to-end workflows using sample Java, .NET, Python, and PHP applications,  AppDynamics Application Performance Monitoring for VMware Tanzu Workflow NOTE | Upgrades from AppDynamics v1.x are not supported. If you previously installed AppDynamics v1.x, uninstall it and install the latest version.  Back to Contents Release Notes and FAQs To stay up-to-date on the latest functionality in the AppDynamics/VMware Tanzu integration tiles, see the following Release Notes, as well as FAQs about using AppDynamics with Pivotal VMWare Tanzu in the Pivotal documentation: Release Notes for AppDynamics Application Performance Monitoring for VMware Tanzu tile  See AppDynamics VMware Tanzu Tile FAQs for troubleshooting tips and answers to common questions about the AppDynamics tile, Service Broker and buildpacks, and other topics.   Recommended Reading For overviews of VMwareApplication Performance and platform monitoring, examples of how the Buildpack and Service Broker work, an outline of the Extension Buildpack, and a list of supported environments, check out the blog posts below: The AppD Approach: Pivotal Cloud Foundry Performance Monitoring AppDynamics Enhances Pivotal Cloud Foundry Performance Monitoring with New Infrastructure View Blue-Green Deployment Strategies for PCF Microservices   Hands-on training: recorded webinars Here on Community, we host the following AppDynamics webinar recordings (original airdates 2018) about using Pivotal integration. NOTE | The Platform Monitoring tile mentioned in these sessions has been deprecated and is no longer available. AppDynamics recommends considering the BOSH Prometheus Firehose Exporter as a replacement. WEBINAR | Technical Session and contents  Monitoring Pivotal Cloud Foundry Applications and Infrastructure Learn how to monitor polyglot distributed applications deployed to VMware Tanzu in this hands-on training geared towards operations teams and developers. Guidance through the complete application lifecycle, including: How to deploy and configure APM solutions using Cloud Foundry buildpacks for Java, .NET, node.js, Python, and other languages How to install and configure the AppDynamics Service Broker tile How to monitor VMware Tanzuand BOSH infrastructure health and availability using the new monitoring integration recently introduced for Pivotal 2.x Along with the recording, read a transcript of the Q&A, and access additional resources. AppD and PCF Updates on .NET Core, Platform Monitoring for Multiple Foundations, Multi-Buildpacks and More This session covers: Our multi-buildpack support, plus a demo of how to deploy and monitor .NET Agent for Linux using the multi-buildpack extension Back to Contents
Hi, Can anybody let me know where exactly I can contact someone about Splunk Certification Exams. Regards, Pradipta
I want to get Architect certified. In 2013 i took 3 courses and passed. can i apply these to my cert training or do i have to retake these classes?
Looking to download a copy of my Splunk Architect certification from Splunk, but I can't find where I log in to see it. If I log into my Splunk account at splunk.com, and go to My Account, I don... See more...
Looking to download a copy of my Splunk Architect certification from Splunk, but I can't find where I log in to see it. If I log into my Splunk account at splunk.com, and go to My Account, I don't see anything listed for certifications. If I log into my Splunk Education account at https://inter.viewcentral.com/Events/cust/search_results.aspx?eventMonthYear=&event_address_id=&cat2_id=36&app_id=&postingForm=default.aspx&cid=splunk&pid=1&lid=1&cart_currency_code=&payment_type=&orderby_location=&orderby_date=&newRegistration=&bundle_location_group=&errmsg=, I can see the classes I've completed, but not my certificates. Lastly, I no longer have access to the partner portal (https://splunkcommunities.force.com), which previously I could see things there. I used to work for a partner company, but no longer do. Any ideas?
ICEfaces is an open source Software development kit that extends JavaServer Faces (JSF) by employing Ajax. It is used to construct rich Internet applications (RIA) using the Java programming lang... See more...
ICEfaces is an open source Software development kit that extends JavaServer Faces (JSF) by employing Ajax. It is used to construct rich Internet applications (RIA) using the Java programming language. With ICEfaces, the coding for interaction and Ajax on the client side is programmed in Java, rather than in JavaScript, or with plug-ins. To create a Business Transaction match rule in AppDynamics that effectively matches ICEfaces entry points, follow these steps: In the Transaction Detection UI tab in the Controller UI (Configuration > Instrumentation > Transaction Detection), create a new custom match rule. Choose Servlet as the entry point type for the rule. For the Transaction Match Criteria, match by URI containing the word faces. In the Split Trasactions Using Payload tab, split by POJO Method Call. Split based on the second parameter (at index=1) of the com.sun.faces.application.ViewHandlerImpl.renderView() method, getViewId(). For example:
Why am I seeing a Windows Analytics Service startup error? Symptoms Windows Analytics Agent service fails to start. However, if you start the Agent from the command line, the service starts as ex... See more...
Why am I seeing a Windows Analytics Service startup error? Symptoms Windows Analytics Agent service fails to start. However, if you start the Agent from the command line, the service starts as expected. The Event viewer shows the event: ERROR: The AppDynamics Analytics Agent service terminated unexpectedly. It has done this 1 time(s). DETAIL: - System - Provider [ Name] Service Control Manager [ Guid] {555908d1-a6d7-4695-8e1e-26931d2012f4} [ EventSourceName] Service Control Manager - EventID 7034 The sc command - sc query "AppDynamics Analytics Agent" SERVICE_NAME: AppDynamics Analytics Agent TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 The Agent logs do not log anything. Debugging Steps The Analytics Agent starting activities can be captured in the exe4j logs. To enable this log: Set a system environment variable EXE4J_LOG and set the value to yes After this is set, start the service again. This will generate the startup activity logs in c:\windows\temp directory with the file name prefix i4j_nlog_* For example: Trying c:\program files (x86)\java\jre1.8.0_60\bin\hotspot\jvm.dll (exists 0) Trying c:\program files (x86)\java\jre1.8.0_60\bin\client\jvm.dll (exists 1) Failed with error code 193 Trying c:\program files (x86)\java\jre1.8.0_60\bin\server\jvm.dll (exists 0) Trying c:\program files (x86)\java\jre1.8.0_60\bin\classic\jvm.dll (exists 0) Trying c:\program files (x86)\java\jre1.8.0_60\bin\jrockit\jvm.dll (exists 0) ..... ERROR: Could not get DLL-Handle. ERROR: Could not load functions​ The above log statements are seen when a 32-bit JRE is used with the analytics agent on a 64-bit machine
What is the best way to setup Alerts for App Agent Status and Machine Agent Status?   When the Agent is turned off, the Agent Status stops reporting any values. So what, then, is the best approac... See more...
What is the best way to setup Alerts for App Agent Status and Machine Agent Status?   When the Agent is turned off, the Agent Status stops reporting any values. So what, then, is the best approach for setting up a Health Rule?    Solution 1 - Machine Agent's Metric The machine agent posts a metric you can use: Application Infrastructure Performance|FrontEnd|Agent| Machine|Availability   Solution 2 - App Agent Status You can also use the App Agent Status for app agent availability. But note that, in addition to the app pool recycles that take place by default every 29 hours, there is also an app pool idle time out that occurs if there’s no traffic on the app after 20 minutes. If that idle occurs, then the agent will be unloaded, will no longer report and trigger this alert, and look like a false alert (App|Availability = 0). You can address this by turning that setting off by setting the timeout value to 0. Read about this here under the section Idle Time Out.
Issue Java agent is unable to connect to the controller due to a certificate chaining error. This might be seen with IBM WebSphere.  Errors similar to the following: [AD Thread Pool-Global0] ... See more...
Issue Java agent is unable to connect to the controller due to a certificate chaining error. This might be seen with IBM WebSphere.  Errors similar to the following: [AD Thread Pool-Global0] 10 Jun 2015 20:12:52,848 WARN XMLConfigManager - Certificate chain validation failed com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by CN=DigiCert Global Root CA, OU=www.digicert.com<http://www.digicert.com>, O=DigiCert Inc, C=US is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error attempting validation. [AD Thread Pool-Global0] 10 Jun 2015 20:12:52,849 ERROR ConfigurationChannel - Fatal transport error: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by CN=DigiCert Global Root CA, OU=www.digicert.com<http://www.digicert.com>, O=DigiCert Inc, C=US is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error [AD Thread Pool-Global0] 10 Jun 2015 20:12:52,849 WARN ConfigurationChannel - Could not connect to the controller/invalid response from controller, cannot get initialization information, controller host [stelo.saas.appdynamics.com<http://stelo.saas.appdynamics.com>], port[443], exception [Fatal transport error: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by CN=DigiCert Global Root CA, OU=www.digicert.com<http://www.digicert.com>, O=DigiCert Inc, C=US is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error] Solution The java agent is using the IBM JVM's jre/lib/security/cacerts file to validate the controller's certificate. There are two ways to solve this problem: 1.) Use keytool to import the root of your controller's certificate chain, (the FTB CA's root cert), into jre/lib/security/cacerts 2.) Start your application with following JVM arguments: -Djavax.net.ssl.trustStore=/path/to/FTB_custom_trustStore.jks -Djavax.net.ssl.trustStorePassword=somepassword and make sure FTB_custom_trustStore.jks contains the FTB Certificate Authority root cert.
Question Does the JavaScript agent for EUM (adrum.js) always need to be placed in the header of the web page? Won't this potentially cause latency and load delays in loading the web page? Answer... See more...
Question Does the JavaScript agent for EUM (adrum.js) always need to be placed in the header of the web page? Won't this potentially cause latency and load delays in loading the web page? Answer Our Engineering team has gone to great lengths to ensure that the initial adrum.js is very lightweight.  Additionally, the loading of adrum.js is synchronous and minimal filesize to prevent page loading interruptions.  It calls out to the extension script, adrum-ext.js, asynchronously to allow rest of the page to load. For most modern browsers, it does not matter where you copy adrum.js file on the page because they support navigation timing, which is what we use for the timings. So loading in the body for them is ok. If you care about accurate timing for older browsers, mostly older IE and Safari, then you need to load the tag as early possible so the fall back timer can be started.  Using the adrum-start-time property gets us around the timing issues with older browsers. Place this JS snippet in the page's <head> and then place adrum.js at the bottom like so window["adrum-start-time"] = new Date().getTime(); More code examples here. IE browsers tips: adrum.js loading placement in relation to <meta> tags definitely impacts pre-IE 9 browsers, therefore the recommended location for adrum.js is AFTER any <meta> tags With older browsers, load adrum.js as early as possible to avoid missing resource timing data Intranet settings in IE can prevent the JS agent from functioning properly   Browsers that support the navigation timing API can be found here: Browser Support for Navigation Timing API.  
When I try to enable the End User Experience in the Controller, I get a license usage retrieval error While trying to enable the End User Experience in the Controller, it returns an error similar t... See more...
When I try to enable the End User Experience in the Controller, I get a license usage retrieval error While trying to enable the End User Experience in the Controller, it returns an error similar to this one: EUM license usage retrieval failed (Error fetching license usage information [org.apache.http.conn.HttpHostConnectException Example of EUM license usage retrieval error For example, in an environment using the AppDynamics SaaS EUM, the full error might read: EUM license usage retrieval failed (Error fetching license usage information [org.apache.http.conn.HttpHostConnectException: Connect to agg.eum-appdynamics.com:443 [agg.eum-appdynamics.com/52.10.146.82, agg.eum-appdynamics.com/54.186.213.46, agg.eum-appdynamics.com/54.148.146.12, agg.eum-appdynamics.com/54.191.252.35, agg.eum-appdynamics.com/54.213.8.211, agg.eum-appdynamics.com/54.69.27.161] failed: Connection refused while calling 'https://agg.eum-appdynamics.com/eumaggregator/licenseUsage']) EUM License usage retrieval error cause and resolution To use EUM, you must have port 443 open on the Controller machine so the Controller can access the EUM cloud to collect EUM metrics. The EUM cloud can be hosted in an AppDynamics cloud environment or in your own environment if you have set up an on-premises EUM Server. EUM in AppDynamics' cloud environment The Controller needs to access agg.eum-appdynamics.com through the internet using HTTP over SSL on port :443. On-Premises EUM  Though the URL agg.eum-appdynamics.com is different, the issue is the same. Make sure port 443 is open.   Solution Confirm that port 443 is open and is not blocked by a firewall. If you have a proxy in between the Controller and your EUM cloud, configure the proxy as described in this documentation page: Configure On-Prem Controller HTTP Proxy Settings. Additional resources Install and+Configure the On-Premise EUM Server
Use Case Description Using the flight search sample application, this example shows the use of the validation configuration. Prior to applying the custom correlation configuration with validation,... See more...
Use Case Description Using the flight search sample application, this example shows the use of the validation configuration. Prior to applying the custom correlation configuration with validation, the flow map shows the following. Flow Map Without Correlation Flow Map With Correlation and Validation Providing custom correlation configuration along with validation that specifies correlation for the requests for United Airlines searches, indicated by the value "UA232" in the getter chain configuration, we get the following flow map. The validator configuration is specified in the validator-config element in addition to the standard producer and consumer XML shown in other examples. This XML snippet just shows the validator-config for this example. Place this element and its associated attributes and child elements inside the <intrumentation> element of your producer or consumer XML. Validation XML Example Consumer XML configuration for custom-activity-correlation.xml <instrumentation> ... <validator-config> <validator class-match-type="MATCHES_CLASS" match-pattern="java.util.HashMap"> <data-match-config> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </data-match-config> </validator> <!-- no data match conditions with a class match validation --> <validator match-type="NOT_EMPTY"> <data-match-config> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>get(object/UA232)</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </data-match-config> </validator> </validator-config> </instrumentation>
Use Case Description Company A has a Global Distribution System (GDS) which has a custom protocol called Protocol A (a request/reply style protocol). Their subsidiary, a travel website, would like ... See more...
Use Case Description Company A has a Global Distribution System (GDS) which has a custom protocol called Protocol A (a request/reply style protocol). Their subsidiary, a travel website, would like to monitor their application with AppDyamics Pro. Java Agents will be installed on the GDS and the travel site Web Servers. They would like to the correlation across these systems. Each message sent from client and server is wrapped in a CompanyAMessge instance. Company A has agreed to add a correlation key member to this class for correlation. Correlation Example This example covers the following scenarios: producer type - the correlation method and exit point are the same. consumer type - the correlation header read is inside the continuing transaction (nested case). In this example the readData() method is measured as part of the continuing transaction. Producer Payload public class FlightStatusMessage implements Serializable { private Map<String,String> requests = new ConcurrentHashMap<String, String>(); private Map responses = new ConcurrentHashMap(); private String correlationKey = null; private String airline;   Producer Code Call is issued as usual to request the flight status information. private void handleUSAirways(String airline, HttpServletRequest request) throws IOException { Map<String, String> flights = new HashMap<String, String>(); int flightCount = Integer.parseInt(request.getParameter("flightCount")); for (int i = 1; i <= flightCount; i++) { String flightNo = airline + request.getParameter("flight" + i); flights.put(flightNo, flightNo); } if (flights.size() > 0) { FlightStatusMessage message = new FlightStatusMessage(flights); message.setAirline("US"); FlightStatusMessage response = queryForStatusWithPayload(message); request.setAttribute("results", response.getResponses()); } }   Producer XML Configuration <!-- This creates a custom exit and does outgoing correlation downstream. On the consuming side the header is read and a transaction is begun at the same point. --> <activities> <producer> <!-- This is where a custom exit point is defined --> <instrumentation> <class-name>com.appdynamics.samples.FlightSearch</class-name> <method-name>queryForStatusWithPayload</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- The following identifier config is used to name the custom exit point. This is similar to how we name custom exit points from the Controller Console --> <identifiers> <identifier name="USAirwaysSearch"> <data-gatherer-type>INVOKED</data-gatherer-type> <getter-chain>this</getter-chain> <user-defined-name>USAirwaysSearch</user-defined-name> <transformer-type>USER_DEFINED_NAME</transformer-type> </identifier> </identifiers> <!-- The following correlationn element is where and how to add the correlation metadata --> <correlation> <!-- This is where we apply instrumentation to get hold of the outgoing payload --> <instrumentation> <class-name>com.appdynamics.samples.FlightSearch</class-name> <method-name>queryForStatusWithPayload</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- This is how we grab the payload at the instrumentation point defined above --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This is how we add the correlation metadata to the payload --> <payload-operation> <access-type>method</access-type> <access-method>setCorrelationKey</access-method> <param-types>java.lang.String</param-types> </payload-operation> </correlation> </producer> </activities>   Consumer code snippet public void run() { Object payload = readRequest(client); Object response = null; if (payload instanceof FlightStatusMessage) { FlightStatusMessage messagePayload = (FlightStatusMessage)payload; if ("BA".equals(messagePayload.getAirline())) { messagePayload.setResponses(processMessage(messagePayload)); response = messagePayload; } else if ("US".equals(messagePayload.getAirline())) { messagePayload = readData(payload); messagePayload.setResponses(processMessage(messagePayload)); response = messagePayload; } } else if (payload instanceof Map) { response = processRequest((HashMap)payload); } logger.info("request processed"); writeRepsonse(client, response); logger.info("response written"); }   Consumer XML Configuration <!-- This creates a custom exit and does outgoing correlation downstream. On the consuming side the header is read and a transaction is begin at the same point. --> <activities> <!-- The activity-demarcator="true" specifies that the instrumentation element defines the boundary of the continuing transaction and that the correlation header is read inside of this method. Note: that the transaction begins only if a correlation header is read --> <consumer activity-demarcator="true"> <!-- This is the boundary of the continuing transaction and also encloses the point where correlation metadata is read --> <instrumentation> <class-name>com.appdynamics.samples.FlightSearchHandler</class-name> <method-name>run</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <correlation> <!-- This is where instrumentation to get payload bearing correlation metadata. This instrumentation point is inside of transaction boundary specified above --> <instrumentation> <class-name>com.appdynamics.samples.FlightSearchHandler</class-name> <method-name>readData</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- How to get payload ? --> <payload-pointer> <data-gatherer-type>RETURN</data-gatherer-type> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- How to extract correlation metadata from payload --> <payload-operation> <access-type>method</access-type> <access-method>getCorrelationKey</access-method> </payload-operation> </correlation> </consumer> </activities>
Updated 6/20/18 The following article is intended for users who wish to implement custom correlation between Java applications/tiers using the AppDynamics' Java App Agent version 3.8 and higher.  ... See more...
Updated 6/20/18 The following article is intended for users who wish to implement custom correlation between Java applications/tiers using the AppDynamics' Java App Agent version 3.8 and higher.  For information regarding the .NET Agent, see here: Custom Correlation for .NET Applications Contents: What is Custom Correlation? When is Custom Correlation Needed? Use Cases Implementation    What is Custom Correlation?  Custom correlation enables you to configure AppDynamics to correlate transactions across tiers, or across parent-child threads in complex multithreaded applications when the default detection mechanisms are not capable of auto-correlating. To correlate a distributed invocation, the AppDynamics agent must propagate a unique correlation key by using the extension points of the distributed protocol or by decorating the payload. The AppDynamics agent needs to know what methods to measure. Therefore, when defining a custom correlation you have to consider: How to propagate the correlation key. What exactly you want to measure.   When is Custom Correlation Needed?  When you are monitoring applications that use unsupported frameworks and protocols, custom correlation may be the answer. Use custom correlation XML configuration to achieve business transaction correlation across tiers when the following conditions exist: Producer There is an easily-defined method call to configure as an exit point on the producer. There is a method call where one of the parameters or a return value exposes the payload object, and that method call occurs during execution of the exit point on the producer. Consumer There is an easily-defined method call to configure as a POJO entry point on the consumer. There is a method call where one of the parameters or a return value exposes the payload object.   Use Cases  For custom correlation on communication protocols between nodes such as HTTP and JMS: We add transaction contextual information for remote calls. For example, AppDynamics can add transaction context onto HTTP headers and JMS message properties. For custom correlation within a node: For example, for ESB job objects and ExecutorService thread workers, we can save the transaction context against thread hand-offs so they can be picked up when async segments start.   Implementation To implement custom correlation, you use XML configuration to specify how to instrument the application. The primary factors governing the exact configuration are the data structures and the sequence of code execution. You can use, custom-activity-correlation.xml,  the XML configuration template shipped with the APM Java Agent (found in the conf directory when you unzip your Java agent download zip file) or one of the sample XML files (described in topics linked at the bottom of this page) as a starting point. How to Configure Custom Correlation The general steps to configure custom correlation are the following: Identify producer and consumer methods. Configure a custom exit point on the producer and POJO entry point on the consumer. Configure the producer to add the correlation metadata to the exit point. (Optional) Configure and identify validation methods on the producer. Configure the consumer to read the entry point. (Optional) Configure and identify validation methods on the consumer. TIP The XML file named custom-activity-correlation.xml needs to be placed in the AGENT_HOME location parallel to the AppDynamics app-agent-config.xml agent configuration file. The string "singularityheader" (all lowercase) is the default key we use in map or property structures we tag. It can be changed in the custom XML if necessary by using the <header-key> element in <payload-operation>.   Unsupported Scenarios In general, cross-process, ID-based correlation is not supported.  Consider a scenario involving consecutive processes with a shared ID such as the following: three separate, consecutive processes are all considered to be segments of the same business transaction. The processes are sequential, but the processes can also theoretically overlap to some degree. Process 1 starts and establishes an ID. That ID is written to a file or database, Process 1 continues and eventually exits. Process 2 starts after Process 1 exits. Process 2 looks up the ID and some stored data related to the ID, continues and eventually exits. Same for Process 3   Sun RMI Support We do not correlate at the protocol level for Sun RMI  because standard, out-of-the-box Sun RMI does not have a place to inject the transaction context in the method invocation. Examples: Leveraging a Payload Property When the Read Method is Part of the Transaction Custom Correlation Using Validation Published on 6/5/2015 Updated for 4.4 on 6/20/2018
Question How does the Java agent map any business transaction (BT) as a web service? How does it identify that a particular BT is of web service type?   I  use JBoss WS for web services but tho... See more...
Question How does the Java agent map any business transaction (BT) as a web service? How does it identify that a particular BT is of web service type?   I  use JBoss WS for web services but those business transactions are showing up as Servlet type business transaction. Answer Because under the hood, web services hit servlets first, the right thing to do is exclude the particular servlet that is hit before the web service.   When you look at our default servlet excludes, most of those are doing exactly that for various web service frameworks.    
How does the monitored application, its BT characteristics and load, affect snapshots in the Controller? Updated on 7/30/18 This article describes common issues that can explain why expected sna... See more...
How does the monitored application, its BT characteristics and load, affect snapshots in the Controller? Updated on 7/30/18 This article describes common issues that can explain why expected snapshots might be missing in the Controller. The issues are usually specific to the monitored application, its business transaction characteristics, and the load on the application. Contents UI Issues Configuration Issues Data Retention and Limits Warnings or Errors in Logs .NET IIS specific issues UI Issues UI Limit There is a 10,000 UI limit for displaying snapshots. You cannot fetch additional snapshots when more than 10,000 will be displayed. Time Range Selection Be sure the time range selected for display matches the time range of the expected snapshots. Configuration Issues Snapshot Thresholds By default, AppDynamics collects a snapshot every ten minutes. You can modify the default values for slow, very slow, and stalled requests to generate snapshots more frequently. However, changing any threshold or limit from the default value can cause additional overhead on both application and Controller performance. The predefined limits help ensure minimal impact to the application being monitored, so we don’t normally recommend adjusting them. See the documentation: Configure Snapshot Periodic Collection Frequency Stall Detection Disabling Stall Transaction Detection can prevent incomplete transactions from being reported. If disabled, please re-enable it and select the checkbox to apply Stall Detection on existing business transactions. Long-Running Transactions For long-running transactions, the threshold values for slow and very slow might need to be set lower than the baseline response times. We have seen cases where snapshots are abandoned when execution time is taking six times the default stall threshold. If snapshots are not captured for requests taking more than X amount of time, increase the stall threshold. Tuning Threshold Settings To maximize the value of snapshots or to avoid hitting agent or Controller limits, tune the threshold settings for specific business transactions (BTs) on the Configure -> "Slow Transaction Thresholds" screen. The default snapshot thresholds might not be appropriate for BTs in some scenarios where: There is high load (e.g., in the context of periodic snapshot settings) Average response time is, by default, high in a test environment Slow/stall thresholds and periodic settings are configured at the application level (which applies to all BTs) and are not appropriate for all BTs. For example, it might be valuable to collect one snapshot every 100 executions for only specific BTs. In this case, configure thresholds and sampling at the BT level and optimize snapshot settings for specific BTs. Data Retention and Limits Data Retention By default, AppDynamics stores snapshots for up to two weeks (336 hours). This is configurable using the snapshots.retention.period setting. See the documentation:  Database Size and Data Retention. Agent Limits There are node properties that limit the number of snapshots per minute and the number of elements (calls) in the snapshot call graph: max-snapshots-per-minute limit - default value is 20 max-call-elements-per-snapshot - default value is 5000 The max-snapshots-per-minute limit is distributed across the BTs as needed and is not strictly divided evenly among them. This is a per-minute limit, not a per-BT limit. You will see the log message below when max-call-elements-per-snapshot is exceeded. If seen, try increasing the limit by setting the property max-call-elements-per-snapshot on the node. ---------- [AD Thread Pool-CGG0] 11 Jul 2014 10:14:06,198 WARN Snapshot - Aborting snapshot started from org.jboss.web.tomcat.filters.ReplyHeaderFilter:doFilter [line -1] because the number of calls [5019] exceeded threshold [5000] ------------- Controller Limits The CONTROLLER_RSD_UPLOAD_LIMIT_REACHED event type indicates that your Controller has reached the limit for the number of RSDs (Request Segment Data) that can be uploaded per minute from this account. Once the limit is reached no more RSDs — other than certain key ones —  are uploaded for that minute. This is a safety feature to avoid overhead on the agent nodes and overloading of the Controller. The counts (normal/slow...etc) for the requests are incremented irrespective of this warning. Tune Controller settings with the rsds.upload.limit.per.min property You can tune the Controller settings using the rsds.upload.limit.per.min property. This value may be adjusted in the field as appropriate (without bouncing the Controller) and the new limits become effective within the next minute. However, we do not recommend doing this without first reviewing your threshold settings. Controller limits for Data Buffers There are other limits at the Controller for the Data Buffers. If any snapshots are missing and the agent trace logs don't show any indication of dropping snapshots on the agent side, please enable the loggers below in the Controller (On-Prem) in the logging.properties  file located at <CONTROLLER_HOME>\appserver\glassfish\domains\domain1\config com.appdynamics.SNAPSHOTS_UPLOAD.level = Fine com.appdynamics.SNAPSHOTS.WRITE.level = Fine This message in the Controller server logs indicates that the data buffer limits have been reached in the Controller: [#|2017-11-29T13:54:07.531+0100|FINE|glassfish 4.1|com.appdynamics.SNAPSHOTS.WRITE|_ThreadID=40;_ThreadName=http-listener-1 (13);_TimeMillis=1511960047531;_LevelValue=500;ClassName=com.singularity.ee. controller.beans.logging.RepetitiveMessageLogger;MethodName=log;|Snapshot ExitCall Data Buffer full. Dropping data. Buffer Size: 2097152 bytes|#]  Controller property values You can increase the Controller property values below from the Admin Console. The default value is 8 MB for each property. Please note that higher values will impact the Controller performance. process.snapshots.buffer.size snapshots.buffer.size These changes should allow the snapshots to show in the UI—but if the snapshot size is huge, then the snapshot may not open and will show the query TIMEOUT exception in the UI. Please note that this query execution time can not be changed and this is the limitation at the Controller side to avoid the Controller performance issues. To avoid the situation above, enable agent side tracing to figure out how much data a BT snapshot is pushing to the Controller and what data it is pushing. Based on the data, you can fine-tune your application or agent instrumentation to block a few of the less important data segments to the Controller. Node Property Settings Several node properties relate to transaction snapshots. Confirm that the settings are not affecting snapshot generation in your specific scenario. You can view a list of node properties here: App Agent Node Properties Reference  Business Transaction Limit If you have reached the business transaction limit, confirm that you exclude the business transactions that you are not interested in. This is to make sure that snapshot/callgraph limits are not reached due to load on overflow BTs on the affected node. Warnings or Errors in Logs Search the log files for strings such as "WARN Snapshot - Aborting snapshot" or error messages to see if there are related messages that can provide insight on the issue. File permissions If you find the following error in the logs, there could be an issue with agent directory file permissions. httpSSLWorkerThread-8080-12 20 Dec 2012 03:02:24,082 ERROR TransactionSnapshotService - Error in starting snapshot for Sampled error request java.lang.UnsupportedOperationException at com.singularity.ee.agent.appagent.services.transactionmonitor.common.uf.c(uf.java:260) at com.singularity.ee.agent.appagent.services.transactionmonitor.common.ye.w(ye.java:362) at com.singularity.ee.agent.appagent.services.snapshot.ac.<init>(ac.java:99) at com.singularity.ee.agent.appagent.services.transactionmonitor.common.ye.a(ye.java:195) at com.singularity.ee.agent.appagent.services.snapshot.u.a(u.java:423) at com.singularity.ee.agent.appagent.services.snapshot.jc.a(jc.java:437) at com.singularity.ee.agent.appagent.services.transactionmonitor.common.cg.a(cg.java:523) at com.singularity.ee.agent.appagent.services.transactionmonitor.common.c.a(c.java:391) at com.singularity.ee.agent.appagent.services.transactionmonitor.common.c.a(c.java:278) at com.singularity.ee.agent.appagent.services.bciengine.a.onMethodEnd(a.java:60) at com.singularity.ee.agent.appagent.entrypoint.bciengine.FastMethodInterceptorDelegator.safeOnMethodEndNoReentrantCheck(FastMethodInterceptorDelegator.java:204) at com.singularity.ee.agent.appagent.entrypoint.bciengine.FastMethodInterceptorDelegator.safeOnMethodEnd(FastMethodInterceptorDelegator.java:156) at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:275) .NET IIS specific issues HTTP 401 Exceptions No snapshots are collected for 401 Exceptions because this is an HTTP Error 401: unauthorized access error. This error is handled before the entry point for any protocol (ASP/.NET/Web services/etc.). We capture it with its details as displayed but it is not possible to capture a snapshot since the error occurs too early in the IIS pipeline. HTTP 400 Exceptions IIS rejects a request and returns 400 before we start instrumenting, so we are unable to capture the snapshot in the case of a 400 error. Review more details about debugging 400 errors here.
Question I am trying to start the Java Agent in a WebLogic environment that deploys and starts the Weblogic domains via an ANT script. Where in the Ant target do I place the agent. Has anyone tried... See more...
Question I am trying to start the Java Agent in a WebLogic environment that deploys and starts the Weblogic domains via an ANT script. Where in the Ant target do I place the agent. Has anyone tried to do instrumentation via an Ant script?   I added something like this to one of the deployment and run ant targets. However, the Java Agent argument doesn’t seem to find its way to the jvm. <jvmarg value=“ -javaagent:/u01/apps/appdynamics/appagent/javaagent.jar”/> Answer Pass it as an "arg" rather than a JVM arg since it is not a -D arg.