Planning a Container-Based Architecture [Air-Date April 3, 2018]
Run Time: 60 minutes.
@Mark.Prichard and @Eric.Johanson from the AppDynamics Product Management team led a hands on demo session. They took one of our demo applications and walkthrough the steps to convert it from its original (non-container) code, all the way through to a Docker based deployment using Kubernetes-- the same steps you need to go through when refactoring a traditional app deployment.
As Mark and Eric illustrate key points in the demo environment, they will share customer insights and talk through important choices you must consider when planning a container based architecture.
We're listening, please take our post-webinar survey:
Resource Links references in the session
Today’s project https://github.com/Appdynamics/AD-Capital https://github.com/Appdynamics/AD-Capital-Docker
AppDynamics Docker Store Images https://store.docker.com/images/appdynamics/ https://github.com/Appdynamics/appdynamics-docker-images
AppDynamics Docker Visibility https://docs.appdynamics.com/display/PRO44/Integrated+Docker+Visibility
Transcribed Q&A Table of Contents
What is the long term solution for managing startup dependencies?
Is there an AppDynamics agent per container or is the agent host-based but container-aware?
Do you support Docker in Swarm?
Do you have a recommended Linux OS Distro?
Should logs be pointed to stdout?
Is there limit on configured transactions?
Is this on-prem or SaaS deployments?
Do the containers onscreen belong to a particular host or are all of the containers related to the applications being monitored?
Do you support Windows Nano Server or Atomic OS?
When are you planning on having a follow-up on a Kubernetes deep dive?
What are some final takeaways?
Q: If Dockerize is a temporary solution to manage startup dependencies, what would a long term solution look like?
Something like Dockerize enables us to get over that initial hump. When you start refactoring, you have services that have dependencies and when you start them up, you need to ensure they start up in the correct sequence with those services available. The long term solution is to move towards a Service Fabric or Mesh (like Istio) and that will handle the retries. When you do that, a lot of that logic can go away. If you have an application in one container that is talking to a database service, while that database is starting up, Istio will handle the retries and you can just configure that. Getting there requires you to have a full Kubernetes-based deployment where you can add Istio into the mix, but that’s a big jump to do at first.
Q: Is there an AppDynamics agent per container or is the agent host-based but container-aware?
There are two approaches to this. When you have an application component that needs to be monitored as part of an APM flow, there will be an AppDynamics agent associated with that runtime. In this Java-based example (the same applies to almost any language), when that JVM runs, it needs to have an APM agent associated with it. Typically, that is there when you start the JVM. The simplest option is to bake the agent into the container and when you run the JVM, you pass that as a Java Agent parameter. Alternatively, you can have it host-based or loaded by a shared storage where it can downloaded from central repository and loaded into the container.
Q: Do you support Docker in Swarm?
The AppDynamics APM will work with Docker Swarm and the things that we discussed could have been done with Swarm. However, we don’t have container visibility for Swarm. We have support for Kubernetes coming soon and you’ll see a whole richer set of supported features, but we don’t have that for Swarm. We’re seeing that a lot of customers are reevaluating that path, moving away from Docker-Compose from Swarm. Kubernetes looks like the end point for most people in that journey.
Q: Do you have a recommended Linux OS Distro?
It’s important to look at the supported OS’ for the AppDynamics Java Agents. The ones we test with are the “big boys” (e.g. CentOS), though there are other distributions you can use. The official images also support Alpine. If what you’re looking for is a really lightweight image with OpenJDK and the agent, for example, you can get that with Alpine and OpenJDK. If you need more, look at the official images for the “major players.”
Q: Should logs be pointed to stdout?
Yes, that’s a good practice to follow. If you do that from the beginning, you need to work out what you’re going to do with it. Quite often in the early stages of this, putting them into a persistent storage location is a good choice. While it may not be always easy for you to do that, many people want to go through the practice of having their logs persisted.
Q: Is there limit on configured transactions?
No, the APM works as normal. These are the same standard agents; you don’t need to use special agents for Docker or Kubernetes. It’s all a matter of how you package and deploy the APM.
Q: Is this on-prem or SaaS deployments?
This works for both SaaS or on-prem Controller deployments.
Q: Do the containers onscreen belong to a particular host or are all of the containers related to the applications being monitored?
The containers are related to the applications being monitored. When you look at our Docker visibility, the containers we are monitoring are the ones that have APM agents in them. We are working on additional functionality that will enable you to see all running containers.
Q: Do you support Windows Nano Server or Atomic OS?
No, we don’t currently support these but these are things we need to do the certification on. In the short term, we’re looking at support for the major traditional Linux OS’ but clearly Red Hat Atomic is high priority for us. As we bring out support for OpenShift, that’s when we’re going to looking at Atomic.
Q: When are you planning on having a follow-up on a Kubernetes deep dive?
Soon! We’re getting close to support for it.
Q: What are some final takeaways?
Think about how you are going to structure the build of the project. It’s very easy with any code to intertwine things that you didn’t mean to. Separate out the pieces of how you build your actual application deployment, the logic, the infrastructure it needs to support it (e.g., the service engine), the framework, and anything specific to how things are packaged into containers. Try to keep those as separate as possible to make the refactoring easier. It’s very important to be aware of the startup dependencies, retries, and all of the pieces that are part of that service. There are tools like Dockerize to help get you there, but make a note of where you’re going to have to change your code to accommodate the microservice architecture.
Think about using persistent storage, how you are going to load those build artifacts into your containers, and agent configuration (loading in the agent binaries). It’s good to decide early on whether you prefer to pull the agents in from base images or if you want to load them dynamically. There are some tradeoffs there so you want to think about it early.
... View more
Welcome! You may find several resources for tutorial videos, depending on what you are looking for.. I suggest you start here: https://www.appdynamics.com/support/
This page is a good starting point.
... View more
Business iQ - Business Health Monitoring Webinar [Air-Date March 20, 2018] Run Time: 58 minutes.
@Richard.Paul led a talk on business health monitoring and how to get started. He did a live step-by-step live demo and built BiQ business health dashboard.
*If you have trouble viewing the recording - please try to stream from Webex.
We're listening, please take our post-webinar survey:
BiQ Community Resources:
How to implement Business iQ for AppDynamics
More Analytics KnowledgeBase articles
Webinar Q&A Table of Contents
If I am a customer who is just getting started, what are the first key steps I should take or conversations I should have to start setting up parameters?
How many metrics should I collect if I am just starting out with business health monitoring?
What if I am interested in implementing this but need to consult with my business team members?
I’m interested in getting started but I need additional assistance. How can I get help?
Q: If I am a customer who is just getting started, what are the first key steps I should take or conversations I should have to start setting up parameters?
For a new customer, we understand it can be daunting. The best way to get started is by going to a whiteboard and mapping out everything to determine your key metrics. Think about what information and numbers your business cares about. At this point, don’t worry about how you will collect them; the most important part is deciding which metrics you want to capture. Once you have done this, find out who can assist with the technical configuration. You can always contact your AppDynamics Account Manager or start a support ticket for help.
Q: How many metrics should I collect if I am just starting out with business health monitoring?
It depends on what stage you’re at with business health monitoring. If you are using the Business Health Dashboard for the first time, start with your top 1-2 metrics and get in front of them so you can better understand how AppDynamics captures this data. Begin driving conversations with people in the company who are invested in these business metrics. Once you’re past that stage, start asking about additional key metrics (be it 3, 4 or 10) and build from there.
Q: What if I am interested in implementing this but need to consult with my business team members?
AppDynamics can help you lead conversations with your business team. Bring us into these discussions so we can guide you. We want to really highlight the importance of having these conversations.
Q: I’m interested in getting started but I need additional assistance. How can I get help?
Reach out to your company’s AppDynamics administrator and have them connect you with your AppDynamics Account Manager. Your Account Manager can set up a Business iQ workshop to help you identify key metrics and mock up a dashboard in a way that best visualized your data. Once you’ve completed this, determine who you need to talk to at your company about collecting data from a technical perspective. We also have additional self-service resources in AppDynamics University, or you can post a discussion in our Community.
... View more
Business iQ - Transaction Analytics Webinar [Air-Date February 21, 2018] Run Time: 56 minutes.
@Mohammed.Rayan led this introductory transaction analytics session. During this session Mohammed also demonstrated the capabilities of transaction analytics and shed light on the art-of-the-possible with Business iQ. See below for attached slide deck and additional resource links.
If you have trouble viewing the recording - please try to Stream from Webex.
We're listening, please take our post-webinar survey: https://survey.clicktools.com/app/survey/go.jsp?iv=1y416hk5g68xu
Github link: Self Paced Demo: https://github.com/Appdynamics/AD-Capital-Docker Self-Paced Tutorials available to explain Business IQ central concepts and capabilities: https://www.appdynamics.com/university/biq-accelerator/
BIQ Community Resources: https://community.appdynamics.com/t5/Knowledge-Base/How-to-implement-Business-iQ-for-AppDynamics/ta-p/29140 https://goo.gl/sV1rdT
Webinar Q&A Transcript
Table of Contents
How do I enable Transaction Analytics for an application?
How can I run a query and view Transaction Analytics?
Where can I find a demo application for Transaction Analytics with Docker support?
What are best practices for enabling Business Transaction collections for analytics?
How do SQL Data Collectors work? Are they strictly for transaction data stored in the database (limited to just transactions) or do they access other event types?
Q: How do I enable Transaction Analytics for an application?
A: Within the Controller, go to the Analytics tab at the top and select the Configuration tab from the left-hand navigation bar. In the Transaction Analytics tab, select the application of interest from the Configure Analytics For Application drop-down menu. Check the box to Enable Analytics Data Collection For XXXX, then select the Business Transactions that will report analytics data. You can add and configure Method Invocation Data Collectors to capture custom data. Specify the data you would like to retrieve and display in Transaction Analytics by extracting a particular parameter from your code. You can enable HTTP Request Data Collectors, as well.
Q: How can I run a query and view Transaction Analytics?
A: To run a query, navigate to the Analytics tab and select the Searches tab . Click the +Add button and select either Drag and Drop Search or Query Language Search. In the Data view, you can customize your search criteria and filter by time frame and fields (e.g., Application or Business Transaction) to see raw data. Within the Visualization view, you can create and save a widget to your Dashboard. One helpful widget type is the Funnel widget. Additional properties were added as part of 4.4 to provide more control over the widget appearance.
If you click the gear icon in the top-right corner of the Controller and select AppDynamic Agents and the Analytics Agents tab, you can see the Transaction Pipeline Health and Log Pipeline Health. You can also sort by All Agents, Agents Publishing Log Data, and Agents Publishing Transaction Data, which can help you identify which agents are publishing the transaction data.
Q: Where can I find a demo application for Transaction Analytics with Docker support?
A: We recommend that everyone tries the Self Demo , which has instructions and is straightforward to use. All you need to do is install the Docker daemon and download the project.
Q: What are best practices for enabling Business Transaction collections for analytics?
A: As a best practice, we recommend you start by enabling just a few Business Transactions that you know well and matter most to see what the patterns and contents are and then slowly increase from there. Avoid enabling Business Transaction collections for analytics for everything initially, as it can be challenging and can cause you to run into other types of issues (e.g., connectivity or licensing issues).
Additionally, on the Business Transaction schema that we have, you may know that we have an All Other Traffic bucket. Many times what we find is that Business Transactions are enabled but in reality, that information is going into the All Other Traffic bucket because you are limited in terms of Business Transaction numbers per node or per application. That’s why being iterative here with your Business Transaction collections makes a lot more sense and will be useful for you in learning the flow as you enable them. Start with one Business Transaction that you know really well and incrementally go from there.
Q: How do SQL Data Collectors work? Are they strictly for transaction data stored in the database (limited to just transactions) or do they access other event types?
A: It pertains only to transaction collection. SQL Data collections will show you the parameter value as part of that transaction so when the analytics data set, you’ll actually see the value was passed to that particular SQL. That’s what this will allow you to do.
It doesn’t send any other event types. In SQL Data Collectors, that’s all the SQL database calls from the Business Transactions and from the parameters of those SQL calls, we capture specific custom or business information.
... View more
Sorry to hear of your frustration. Please only share non-sensitive company information/screenshots in the community. If you have sensitive information to share please open a support ticket and send files over secure support channels.
FYI, you may also private message with Yogesh as needed via the community.
To send a private message to Yogesh, hover over his name in the thread and click on 'send message'
Lastly, as you uncover things that are helpful, workarounds, solutions please share with the community. We are striving to be a closed loop community and responsiveness is important to us. Thank you for your diligence and for raising the question.
... View more