Creat git submodules for the various beats

I wish to import Filebeat into an in-house package manager, but I don't want to pull in all the beats. Would it be possible to isolate each beat into its own git sub-module, all under the umbrella of the beat repository?

We are pretty happy with the current setup so this is unlikely to change. We had in the past one repo per Beat which didn't work as well for us.

Perhaps you can share some more details on what you exactly do so we can help finding an other solution?

Hey, thanks for getting back so soon! Yeah, I can see the benefit of having them in one repo. libbeat is already just "there', make things easy.

I work at a large tech company with no standardized language/tech stack, for which purpose they developed an internal platform/language agnostic package manager, build system and continuous deployment system. It allows you to pull in third party packages from Git, but that forces me to to pull in the whole beats repo, rather than just Filebeat (the only beat I care about). This wouldn't necessarily be an issue, but some of the other beats (or their dependancies) have licenses that aren't compatible with our use.

The best I could think of was to make my own fork of the beats repo, and use git filter-branch. But this adds extra steps to the version upgrading process which makes it less likely people will be upgrading this internal package often.

Let me know if you have any ideas :slight_smile:

Do you just use libbeat?

I believe so. So far I only got libbeat and filebeat directories. I haven't gotten it to build yet, for unrelated reasons, so I'm not yet sure which other dirs I need for a successful build.

But since fielbeat/libbeat aren't submodules, importing them on their own is quite a laborious process.

What about cloning the repo but have a follow up command that deletes all the other beats directories and runs make update again?

Which license are a problem for you? We recently cleaned up the licenses a bit.

Yeah, that's pretty much what I came up with.

Some parts of this are not usable due to prohibited licenses, but filebeat should fine to use.
Can filebeat be used without the following parts?

  1. vendor/github.com/juju/ratelimit
  2. vendor/github.com/gorhill/cronexpr
  3. metricbeat/module/mysql/vendor/github.com/go-sql-driver
  4. metricbeat/module/docker/vendor/github.com/hashicorp/go-cleanhttp

Seems like #1, #4 aren't dependancies anymore, #3 is fine because it uses the Mozilla license, but cronexpr is an issue because it (somehow) has both APLv2 and GPLv3 licenses. APLv2 is fine, but GPL is prohibited for our use =/.

Running govendor list (https://github.com/kardianos/govendor), you can see all dependencies and a status of vendored dependencies. After deleting the other beats, the status unused (short u) indicates a vendored dependencies not required anymore. You can delete unsued dependencies using govender remove.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.