I was experimenting a bit and figured out that after
cd agent2/plugins/myip/ && make
it is possible to "plug" the plugin (pun intended) into official Zabbix agent 2 Docker image like so:
docker run --rm --volume $PWD/myip.conf:/etc/zabbix/zabbix_agent2.d/plugins.d/myip.conf:ro --volume $PWD/myip:/usr/local/zabbix/go/plugins/myip:ro zabbix/zabbix-agent2:ubuntu-trunk -t myip
I guess it may be useful to someone, so it is probably worth documenting this trick.
Important note is that Go plugins are linked against standard C library, therefore it is important to use appropriate tag of Zabbix agent 2 image. For example, if you compile plugin on Ubuntu which uses libc, it will fail to run inside Alpine-based image, since the latter uses musl.
My assumption is that one can also plug multiple plugins into container, each with a pair of --volume options. docker run command may get ugly pretty quickly, so maybe an example Docker Compose file would be nice too.
I was experimenting a bit and figured out that after
it is possible to "plug" the plugin (pun intended) into official Zabbix agent 2 Docker image like so:
I guess it may be useful to someone, so it is probably worth documenting this trick.
Important note is that Go plugins are linked against standard C library, therefore it is important to use appropriate tag of Zabbix agent 2 image. For example, if you compile plugin on Ubuntu which uses libc, it will fail to run inside Alpine-based image, since the latter uses musl.
My assumption is that one can also plug multiple plugins into container, each with a pair of
--volume
options.docker run
command may get ugly pretty quickly, so maybe an example Docker Compose file would be nice too.