cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

No Container Visibility in AppDynamics

Hello, 

 

we are using a standalone machine agent to monitor a java application which is deployed in a Docker container. The machine agent is installed in a standalone container.

 

Our Dockerfile, where the directory ./AppServerAgent contains the machine agent:

 

FROM openjdk

WORKDIR /app

ENV APPDYNAMICS_AGENT_APPLICATION_NAME=petclinic
ENV APPDYNAMICS_AGENT_TIER_NAME=petclinic-tier
ENV APPDYNAMICS_AGENT_ACCOUNT_NAME=customer1
ENV APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=41130855-4203-471e-a836-3d241c9e8794
ENV APPDYNAMICS_CONTROLLER_HOST_NAME=ec2-3-122-240-100.eu-central-1.compute.amazonaws.com
ENV APPDYNAMICS_CONTROLLER_PORT=8090
ENV APPDYNAMICS_CONTROLLER_SSL_ENABLED=false
ENV APPDYNAMICS_AGENT_NODE_NAME=petclinic-node

COPY ./AppServerAgent/ /opt/appdynamics/
COPY ./target ./target

CMD ["java", "-javaagent:/opt/appdynamics/javaagent.jar", "-jar", "target/spring-petclinic-2.4.2.jar"]

We use the official docker image of AppDynamics from the Docker Hub: 

 docker pull store/appdynamics/machine:4.5 

And run the container with the following parameters referring to our on-prem AppD Controller:

docker run -d \
-e APPDYNAMICS_CONTROLLER_HOST_NAME=ec2-3-122-240-100.eu-central-1.compute.amazonaws.com \
-e APPDYNAMICS_CONTROLLER_PORT=8090 \
-e APPDYNAMICS_CONTROLLER_SSL_ENABLED=false \
-e APPDYNAMICS_AGENT_ACCOUNT_NAME=customer1 \
-e APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=41130855-4203-471e-a836-3d241c9e8794 \
-e MACHINE_AGENT_PROPERTIES="-Dappdynamics.sim.enabled=true -Dappdynamics.docker.enabled=true" \
-v /proc:/hostroot/proc:ro -v /sys:/hostroot/sys:ro -v /etc:/hostroot/etc:ro -v /var/run/docker.sock:/var/run/docker.sock \
appdynamics/machine:4.5

 

 

Although the application is instrumented successfully, we can't view any Container.

 

Screenshot 2021-04-07 at 16.55.37.png

Screenshot 2021-04-07 at 16.53.39.png

 

We have enabled Server and Docker Visibility and our License is also fine

 

What are we missing? Thanks in advance and have a nice day!

5 REPLIES 5

Mario.Morelli
Architect

Hi Christian

 

Is the Machine agent registered to the petclinic Application? And does the Machine agent & Java agent run on the same host?

 

If you click on servers,

 

1. Does it list the machine agent, which runs on the host that the Java Container runs on? 

2. Does it under "Running on Container" field say "Yes"?

 

Can you add the following parameter to the "MACHINE_AGENT_PROPERTIES" section

-Dappdynamics.docker.container.containerIdAsHostId.enabled=true

 

Restart and check that it appears as it should

 

Ciao



Found something helpful? Click the Accept as Solution button to help others find answers faster.
Liked something? Click the Thumbs Up button.

Learn more about me in the Community Member Spotlight Q & A

Hey Mario,

 

The machine agent and java agent are running on the same host.  I am running the machine agent as a standalone container by using the AppD image from the Docker Hub (docker pull store/appdynamics/machine:4.5). The petclinic application is running on a separate container instrumented with a java agent. I supposed that the container with the machine agent is able to detect the container with the petclinic application automatically, since it is instrumented with the java agent.

 

<<Is the Machine agent registered to the petclinic Application?>>

How would I do that? 

 

Here is what I see when I click on Servers:

 Screenshot 2021-04-08 at 14.15.21.png

 

Best,

 

Christian

 

Hi Christian

 

Lets first resolve the correlation between the Machine agent and the App Agent correlation

 

From what I can see it's most likely due to the "unique host id" value that is being detected

 

You can read a bit up on this here

https://docs.appdynamics.com/display/PRO20X/Monitoring+Containers+with+Docker+Visibility


Extract below from link above

In a BRIDGE networking mode, the containers take on the container ID as the host name. If networking is in host mode, then the containers take on the node name of the host ID. This means every container on that node has the same host ID. In this case you need to use the unique host ID settings

 

Please check this and see if this is the problem, then you can set the uniquehost id accordingly

 

You can quickly see what happens, go into the Controller Admin Menu where you view the agents.

 

Check what the unique host id value is for both the java agent and the machine agent, are they both the same? 

 

Ciao



Found something helpful? Click the Accept as Solution button to help others find answers faster.
Liked something? Click the Thumbs Up button.

Learn more about me in the Community Member Spotlight Q & A

Hi Mario,

 

I have solved the issue by deploying the Machine Agent Bundle instead of the standalone Machine Agent. As soon as I started the machine agent with <sim-enabled>true</sim-enabled> and <docker-enabled>true</docker-enabled> set to true in the controller-info.xml it worked! 

 

So summarized you need the following for Container Monitoring:

 

  1. Server Agent Image from Docker Hub running as Container
  2. Your underlying application containers (instrumented with java agent)
  3. A Machine Agent with <sim-enabled> and <docker-enabled> set to true

I think that wasn't quite clear from the AppD documentation.

 

Thank you, Mario.

 

Best,

Christian

Jeanie.Kedia
AppDynamics Team (Retired)

@Christian.Brzeski this is helpful information to share with the community! I am sure it will help other people with this question too.