dockerbeat #2

  • By containers
  • Latest version (#2)
  • xenial, trusty
  • Stable

Description

Dockerbeat is the Beat used for docker daemon monitoring.
It is a lightweight agent that periodically reads docker
container statistics and indexes them in Elasticsearch.


Dockerbeat

A lightweight, open source shipper for docker daemon data. Dockerbeat polls
the Docker Engine daemon, and sends cpu, network, memory, and host
information to Logstash for further parsing and enrichment or to Elasticsearch
for centralized storage and analysis.

Usage

Dockerbeat can be added to any principal charm thanks to the wonders of being
a subordinate charm. The following usage example will deploy the elk stack,
so we can visualize our container data once we've established the link between
dockerbeat and Logstash

juju deploy ~containers/bundle/elk-stack
juju deploy ~containers/swarm-core
juju deploy ~containers/trusty/dockerbeat
juju add-relation dockerbeat:beats-host swarm
juju add-relation dockerbeat logstash

Deploying the minimal Beats formation

If you do not need data buffering and alternate transforms on your data thats
being shipped to ElasticSearch you can simply deploy the 'beats-core' bundle
which stands up Elasticsearch, Kibana, and the three known working Beats
subordinate services.

juju deploy ~containers/bundle/beats-core
juju deploy ~containers/bundle/swarm-core
juju deploy ~containers/trusty/dockerbeat
juju add-relation filebeat:beats-host swarm
juju add-relation topbeat:beats-host swarm
juju add-relation packetbeat:beats-host swarm
juju add-relation dockerbeat:beats-host swarm

A note about the beats-host relationship

The Beats suite of charms leverage the implicit "juju-info" relation interface
which is special and unique in the context of subordinates. This is what allows
us to relate the beat to any host, but may have some display oddities in the
juju-gui. Until this is resolved, it's recommended to relate beats to their
principal services using the CLI

Testing the deployment

The services provide extended status reporting to indicate when they are ready:

juju status --format=tabular

This is particularly useful when combined with watch to track the on-going
progress of the deployment:

watch -n 0.5 juju status --format=tabular

The message for each unit will provide information about that unit's state.
Once they all indicate that they are ready, you can navigate to the kibana
url and view the streamed log data from the Ubuntu host.

juju status kibana --format=yaml | grep public-address

open http://<kibana-ip>/ in a browser and begin creating your dashboard
visualizations

Scale Out Usage

This bundle was designed to scale out. To increase the amount of log storage and
indexers, you can add-units to elasticsearch.

juju add-unit elasticsearch

You can also increase in multiples, for example: To increase the number of
Logstash parser/buffer/shipping services:

juju add-unit -n 2 logstash

To monitor additional hosts, simply relate the Dockerbeat subordinate

juju add-relation dockerbeat:beats-host my-charm

DockerBeat Delivery

This charm makes use of Resources. A juju 2.0 feature. When deploying this
charm on a juju 2.0 enabled controller, the upstream Ingensi dockerbeat
binary will ship with the charm targeted at X86 hosts. If you are on another
architecture you may need to compile, and juju attach a new binary for
your arch.

1.25 Compatibility

Alternatively, on juju 1.25 hosts, this charm supports a configurable URL and
SHA1 sum configuration option to attempt to fetch. Configured for a release
from the Ingensi github repository.

Contact information

Need Help?

Configuration

input_period
(int) how often a docker stat is sent to the output
5
fallback_sum
(string) SHA1 sum of fallback_url payload
c68767814e7f3bf256da52b28281a44bf392fecd
install_sources
(string) apt repository to fetch beats from
deb http://packages.elastic.co/beats/apt stable main
fallback_url
(string) URL to download dockerbeat binary release
https://github.com/Ingensi/dockerbeat/releases/download/v1.0.0-rc1/dockerbeat-1.0.0-rc1-x86_64
docker_socket
(string) Socket to connect to the docker engine
unix:///var/run/docker.sock
docker_key_path
(string) Path on disk to the TLS key
/etc/docker/key.pem
package_status
(string) The status of service-affecting packages will be set to this value in the dpkg database. Valid values are "install" and "hold".
install
extra_packages
(string) Space separated list of extra deb packages to install.
enable_tls
(boolean) Enable tls when communicating with docker
docker_ca_path
(string) Path on disk to the TLS certificate authority
/etc/docker/ca.pem
install_keys
(string) repository key
D88E42B4
docker_cert_path
(string) Path on disk to the TLS certificate
/etc/docker/cert.pem