Hi Sunku! On 2020-04-28 01:49, Ranganath, Sunku wrote:
Being a new user to Go, have you considered 'Plugin' package of Go [3] for shared object creation?
I think the "plugin" package would be useful if we implemented a "golang" plugin that functions similarly to the "Perl", "Python", and "Java" plugins. I.e. if we had some glue Go code in collectd and wanted to dynamically load Go-based plugins from it.
What the "collectd.org/plugin" package allows you to do is write a plugin in Go, compile it into a shared object and then load and execute that shared object from collectd without any "glue" code in collectd itself. To implement this, the Go code need to access symbols exported by the daemon. The code currently uses dlopen() and dlsym() for this purpose, but this could potentially be replaced by some clever linker magic.
Our team were contemplating to create either an out-of-tree location or propose a new folder ourselves. So this is perfect timing for us to have this created.
Glad to hear it :)
If I understand Go correctly, new plugin authors could reuse/import any of the available Go packages from various sources and leverage go-collectd framework to make them into .SOs for Collectd daemon?
Yes. It's conceivable that some packages using "Cgo" themselves could cause some trouble, but for the most part users should be able to use available Go packages.
Also would it be easier to unify go plugins & go-collectd framework to something like: github.com/collectd/go-collectd/plugins? It would be a bit confusing with github.com/collectd/go-collectd/plugin, but then atleast they both would be under same sub-tree. May be we can rename github.com/collectd/go-collectd/plugin to something unambigous? :)
Having the API and its users in the same repository has advantages, especially around refactoring. I'm a bit hesitant to add plugins to the collectd/go-collectd repository though. Moving the "collectd.org/plugin" package out of that repository might be an option. It would also mean that the collectd/go-collectd repository would become a pure Go repository again, making building and testing of all sub-packages easier.
Best regards, —octo -- collectd – The system statistics collection daemon Website: http://collectd.org GitHub: https://github.com/collectd Twitter: http://twitter.com/collectd _______________________________________________ collectd mailing list [email protected] https://mailman.verplant.org/listinfo/collectd
