Use the `execd` shim
This page documents an earlier version of Telegraf. Telegraf v1.21 is the latest stable version. View this page in the v1.21 documentation.
The shim makes it easy to extract an internal input,
processor, or output plugin from the main Telegraf repo out to a stand-alone
repo. This allows anyone to build and run it as a separate app using one of the
execd
plugins:
Extract a plugin using the shim wrapper
- Move the project to an external repo. We recommend preserving the path
structure: for example, if your plugin was located at
plugins/inputs/cpu
in the Telegraf repo, move it toplugins/inputs/cpu
in the new repo. - Copy main.go into your project under the
cmd
folder. This serves as the entry point to the plugin when run as a stand-alone program.The shim isn’t designed to run multiple plugins at the same time, so include only one plugin per repo.
- Edit the
main.go
file to import your plugin. For example,_ "github.com/me/my-plugin-telegraf/plugins/inputs/cpu"
. See an example of where to editmain.go
here. - Add a plugin.conf for configuration
specific to your plugin.
This config file must be separate from the rest of the config for Telegraf, and must not be in a shared directory with other Telegraf configs.
Test and run your plugin
- Build the
cmd/main.go
using the following command with your plugin name:go build -o plugin-name cmd/main.go
- Test the binary:
- If you’re building a processor or output, first feed valid metrics in on
STDIN
. Skip this step if you’re building an input. - Test out the binary by running it (for example,
./project-name -config plugin.conf
). Metrics will be written toSTDOUT
. You might need to hit enter or wait for your poll duration to elapse to see data. - Press
Ctrl-C
to end your test. - Configure Telegraf to call your new plugin binary. For an input, this would look something like:
[[inputs.execd]]
command = ["/path/to/rand", "-config", "/path/to/plugin.conf"]
signal = "none"
Refer to the execd
plugin documentation for more information.
Publish your plugin
Publishing your plugin to GitHub and open a Pull Request back to the Telegraf repo letting us know about the availability of your external plugin.
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for Telegraf and this documentation. To find support, the following resources are available:
InfluxDB Cloud customers can contact InfluxData Support.