WARNING: Version 5.0 of Metricbeat has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Creating a Metricbeat Module
editCreating a Metricbeat Module
editMetricbeat modules are used to group multiple metricsets together and to implement shared functionality of the metricsets. In most cases, no implementation of the module is needed and the default module implementation is automatically picked.
It’s important to complete the configuration and documentation files for a module. When you create a new
metricset by running make create-metricset
, default versions of these files are generated in the _meta
directory.
Module Files
edit-
config.yml
andconfig.full.yml
-
docs.asciidoc
-
fields.yml
After updating any of these files, make sure you run make collect
in your beat directory so all generated
files are updated.
config.yml and config.full.yml
editThe config.yml
file contains the basic configuration options and looks like this:
- module: {module} metricsets: ["{metricset}"] enabled: true period: 1s hosts: ["localhost"]
It contains the module name, your metricset, and the default period. If you have multiple metricsets in your module, make sure that you extend the metricset array:
metricsets: ["{metricset1}", "{metricset2}"]
The full.config.yml
file is optional and by default has the same content as the config.yml
. It is used
to add and document more advanced configuration options that should not be part of the minimal
config file shipped by default.
docs.asciidoc
editThe dosc.asciidoc
file contains the documentation about your module. During generation of the
documentation, the default config file will be appended to the docs. Use this file to describe your
module in more detail and to document specific configuration options.
== {module} Module This is the {module} Module.
fields.yml
editThe fields.yml
file contains the top level structure for the fields in your metricset. It’s used in combination with
the fields.yml
file in each metricset to generate the template and documentation for the fields.
The default file looks like this:
- key: {module} title: "{module}" description: > {module} Module fields: - name: {module} type: group description: > fields:
Make sure that you update at least the description of the module.
Testing
editIt’s a common pattern to use a testing.go
file in the module package to share some testing functionality among
the metricsets. This file does not have _test.go
in the name because otherwise it would not be compiled for sub packages.
To see an example of the testing.go
file, look at the mysql module.