2.9 KiB
2.9 KiB
title | description | menu | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Use the `execd` shim |
|
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. {{% note %}} The shim isn't designed to run multiple plugins at the same time, so include only one plugin per repo. {{% /note %}} - 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. {{% note %}} 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. {{% /note %}}
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.