Have a look at this thread here: How to create a new Beats output?
It's a bit outdated as lots of things in the interfaces used changed with 6.0. I would recommend you to have a look at one of the simpler outputs like the file output to see what the minimal interfaces are that are required. https://github.com/elastic/beats/tree/master/libbeat/outputs/fileout