Icon

Comments have been closed on this page. Please use AppMon & UEM Open Q & A forum for questions about this plugin.

Overview

Retrieves CPU, memory and network stats from Docker containers via the Docker Remote API

Name and Version

Docker Monitor Plugin v1.0.9

Compatible with

Dynatrace 6.5/6.3

Author

Asad Ali (asad.ali@dynatrace.com)

License

dynaTrace BSD

Support Level

Community Supported

Download

com.dynatrace.docker.plugin_1.0.9.dtp

Description

Retrieves CPU, memory and network stats from Docker containers via the Docker Remote API

Details

Retrieves CPU, memory and network stats from Docker containers via the Docker Remote API. It retrieves the following metrics using the REST API

  1. CPU

    • total_usage
    • usage_in_usermode
    • system_cpu_usage
    • total_usage_delta
    • usage_in_usermode_delta
    • system_cpu_usage_delta
  2. Memory

    • usage
    • limit
    • memoryUsage
  3. Network

    • rx_bytes
    • tx_bytes
    • rx_packets
    • tx_packets
    • rx_bytes_delta
    • tx_bytes_delta
    • rx_packets_delta
    • tx_packets_delta

For all the delta calculations, the plugin does a diff between the current value and the previous value. For memoryUsage, it calculates the value by using (usage *100) / limit.

The monitor can run in three different modes: 1. TCP Port 2. Unix Socket - SSH 3. Unix Socket - Local

  • TCP Port: If the docker daemon binds to a TCP Port, use this option and provide the port number the docker daemon is listening on.
  • Unix Socket - SSH: By default, docker daemon binds to a Unix socket (/var/run/docker.sock). If the docker daemon is using the default binding, you can collect metrics data from a collector that is running on a different host than the docker deaemon by using the Unix Socket - SSH option. For this option to work, ensure that

    1. Netcat utility "nc" is installed on the docker host machine.
    2. The userId provided in the monitor has sudo access.
  • Unix Socket - Local: By default, docker daemon binds to a Unix socket (/var/run/docker.sock). If the docker daemon is using the default binding, you can collect metrics data from a collector that is running on the same host as the docker daemon by using the Unix Socket - Local option. This monitor will not work if you run the collector inside the docker container. The collector has to run on the host machine running the Docker daemon. There is no need to install Netcat "nc" utility on the host machine.

This monitor plugin works for docker daemon running on any flavor of 64-bit Linux host.

Monitor Setup

This monitor can gather statistical information irrespective of whether docker is deployed using Mesos/Marathon or Unmanaged. Unmanaged means that you are not using any third party tool to manage your docker daemon but doing it manually. 

Mesos/Marathon

If you are using Mesos/Marathon to manage your docker daemons across multiple hosts, then you don't have to define the list of hosts where docker daemon is running. Using the Mesos API, the plugin gathers the list of hosts that are running docker daemons and use the list to get statistical information.

This monitor can gather statistical information across multiple docker daemon host at the same time. As a parameter to this monitor, you can define multiple hosts separated by comma (,) in the Edit Docker Hosts section as shown below:

Unmanaged

If you are using Unmanaged option, then you can define the list of all hosts that are running Docker daemons in the "Edit Docker Host(s)" multi-line textbox. Ensure that each host name/ip address that you list is separated by comma(,).

The host information that is entered in the hosts section of the monitor is irrelevant and is not used by the plugin. You have to put a host for the monitor for it to run but it is not taken into consideration.

This plugin also supports HTTP and HTTPS connection to collect docker statistics only if the docker daemon is listening on TCP Port. For HTTP port, typically the Docker daemon listens on port number 2375. For HTTPS, this plugin expect private/public key authentication and expect you to provide the certificate file.

The certificate file (.pem) needs to reside on the collector machine on which the plugin is running. This certificate could be self signed or provided by CA authority. Please ensure to check "Certificate Self Signed" if you are using self signed certificate.

The docker monitor now also supports public key authentication with ssh connection.

Sample Dashboard

Feel free to contribute on GitHub

 

  1. Anonymous (login to see details)

    Hi,

    using TCP port on a docker environment listening on port 2376 (ssl), we get the following error : Unexpected end of file from server

    It seems related to the envrypted naure of the link. Is there currently provision for ssl encryption in the plugin ?

    Thanks

     

  2. Anonymous (login to see details)

    Hi Laurent

    I am aware of this bug in the docker monitor. I am going to put a newer version today that has resolved this issue. Sorry about this.

  3. Anonymous (login to see details)

    Great. Thanks

  4. Anonymous (login to see details)

    Hi Laurent

    I have uploaded the newer version. Please review the new notes that I have added for this plugin. Let me know if you encounter any issues.

    1. Anonymous (login to see details)

      I have the same error like Laurent, can anybody help me with the settings?

      Status: 301 (Unexpected end of file from server

  5. Anonymous (login to see details)

    Can you provide the dashboard as a download?

    Thanks,

  6. Anonymous (login to see details)

    My docker daemon binds to a Unix socket so using SSH to connect as mentioned in monitor setup. It's failed to connect. The monitor log says "There was a problem while connecting to ..." but no detail provided. What can I do to track down the cause?

     

    1. Anonymous (login to see details)

      Andrew

      Are you able to successfully login with the userid/passwd that you are using for the monitor with a putty session? If so, can you run the monitor with FINER log level and send me the log files?

  7. Anonymous (login to see details)

    Hi Asad,

    thanks for the plugin.

    I have two issues/questions:

    1. You only display all Containers, why don't you show the values for each state (1 measure with dynamic entries (ContainersRunning, ContainersPaused, ContainersStopped, ...)
    2. I don't have values within network-section, but I have found values in the log and also when I request the statics directly from docker
      1. Monitor:Details View, all Network related measures null
        rx_bytes: null

        rx_bytes_delta: null

        rx_packets: null

        rx_packets_delta: null

        ...
        tx_bytes: null

        tx_bytes_delta: null

        tx_packets: null

        tx_packets_delta: null

      2. Plugin Log-File:
        ..."networks":{"eth0":{"rx_bytes":298093258,"rx_packets":4150409,"rx_errors":0,"rx_dropped":0,"tx_bytes":337235125,"tx_packets":3260081,"tx_errors":0,"tx_dropped":0}}
      3. Docker-Stats

        "networks" : {

                "eth0" : {

                    "rx_bytes" : 298318558,

                    "rx_packets" : 4153547,

                    "rx_errors" : 0,

                    "rx_dropped" : 0,

                    "tx_bytes" : 337489477,

                    "tx_packets" : 3262543,

                    "tx_errors" : 0,

                    "tx_dropped" : 0

                }

            }

    Hope you can help me.

     

    Regards,

    Robert

     

    1. Anonymous (login to see details)

      Robert

      I have an updated version of this plugin that would satisfy your needs. Give me 5 minutes and I will update this page with the newer version.

      1. Anonymous (login to see details)

        Hi Asad,

         

        thanks for the quick update.

        I just deployed the new plugin and it looks like everything is working again.

         

        Thanks,

        Robert

  8. Anonymous (login to see details)

    Hi Asad,

     

    I'm missing the possibility to subscribe Host Values, CPU or Memory, ... like shown in your sample dashboard.

    It's possible to show the absolute values for system CPU (system_cpu_usage), but you cannot show it percental.

    Unfortunately the other values are completely missing .

     

    Can you add these measures?

     

    Regards,

    Robert

    1. Anonymous (login to see details)

      Robert

      The host values come from the host agent and not from the plugin. You may have to buy the host agent to get these values.

  9. Anonymous (login to see details)

    hey Asad,

     

    Can you share the sample dashboard shown above.

  10. Anonymous (login to see details)

    Hi,

    This is listed as compatible with version 6.5 of AppMon. I know in the past it worked with previous versions, and was wondering if that's still the case (or, if not, if an older version of it, compatible with 6.3, is still available).

    Thanks

  11. Anonymous (login to see details)

    Patrick

    This plugin should also work fine with Dynatrace AppMon version 6.3

    1. Anonymous (login to see details)

      Thanks for the info!

  12. Anonymous (login to see details)

    Hi,

     

    Are there any plans to support kubernetes in the near future and autodetection of the docker containers?

     

    Thank you.

     

    Mark

     

  13. Anonymous (login to see details)

    Hi Asad,
    is it possible to configure the Plugin for Mesos/Marathon together with the "Unix Socket - Local" mode (currently only TCP and SSH)? For local mode the Dynatrace Collector have to be installed on the docker host, right?

    thanks, Olaf

    1. Anonymous (login to see details)

      Olaf,

      If you want to use the plugin for Unix Socket - Local with Mesos, you have to run the collector locally on the docker host. In case you want to use Mesos with Local option, do you have collectors on all docker host?

  14. Anonymous (login to see details)

    Hi Asad,

    thanks for your quick reply. We want to test the plugin in a high security environment and installing anything on the docker hosts is a bit problematic, We are using DCOS as the docker host OS. Is the dynatrace collector running on DCOS? As we would use the collector in such case only for the docker plugin, is it possible to configure the collector to only communicate with the dynatrace server and not try to use the incoming port that is usually configured for the incoming data of the appmon agents (because of security reasons)?

    thanks & best regards, Olaf

    1. Anonymous (login to see details)

      Olaf

      What OS are you running underneath DC/OS? Is it CentOS or something else?

      1. Anonymous (login to see details)

        Hi Asad,

        It is a RH 7.3

        Thanks, Olaf 

         

        1. Anonymous (login to see details)

          Hi Asad,

          is there any problem or something special to know if installing the dynatrace collector in DCOS based on RH 7.3?

          thanks, Olaf

          1. Anonymous (login to see details)

            Hi Asad,

            like recommended we have now installed Dynatrace Collectors on each docker hosts and they are connecting without problems to the Dynatrace Server. But in the Plugin there is no option to select the local option together with Mesos/Marathon, how we have to setup this configuration? We have installed plugin 1.0.9.

            thanks, Olaf

            1. Anonymous (login to see details)

              Olaf

              Let me work on the plugin to make the local option available for Mesos.

              1. Anonymous (login to see details)

                Hi Ali,

                thanks for these good news.

                In the mean time we have configured 1 docker host with the "unmanaged + unix socket local", but getting no data and have an error in the plugin logs.

                FINER [DockerMonitor@Docker Monitor <DYNATRACE-PROFILE> (Local)_0] socketfile=/var/run/docker.sock
                FINER [DockerMonitor@Docker Monitor <DYNATRACE-PROFILE> (Local)_0] statusLIne=HTTP/1.0 200 OK
                FINER [DockerMonitor@Docker Monitor <DYNATRACE-PROFILE> (Local)_0] About to convert this JSON
                SEVERE [DockerMonitor@Docker Monitor <DYNATRACE-PROFILE> (Local)_0] java.io.EOFException exception occurred. Message = 'No content to map to Object due to end of input'; Stacktrace is 'java.io.EOFException: No content to map to Object due to end of input

                Should I open a support case to let you check this?

                thanks, Olaf

                1. Anonymous (login to see details)

                  Olaf,

                  Can I do a webex with you to see what's happening?

                2. Anonymous (login to see details)

                  Hi Ali,

                  unfortunately there is no way to do a webex. I have added 3 more lines, maybe it helps to better understand the error? You can get in contact with me directly, so we do not fill this forum?

                  thanks, Olaf

  15. Anonymous (login to see details)

    Hi all,

    We have disabled comments on this plugin page.

    Please use the AppMon & UEM Plugins forum for questions about this plugin.

    Sorry to interrupt ongoing discussions. Please re-post your last question in AppMon & UEM Plugins forum.