# Beats starting kit

**URL:** https://discuss.elastic.co/t/beats-starting-kit/33640
**Category:** Beats
**Created:** [November 3, 2015, 2:11pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640 "2015-11-03T14:11:08Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![mrkschan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mrkschan/32/5386_2.png) [@mrkschan](https://discuss.elastic.co/u/mrkschan)
#### Post date: [November 3, 2015, 2:11pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/1 "2015-11-03T14:11:08Z")

</div>

Hey beats team,

I'm really happy to hear the concept of Sysbeat at [Is there interest in something like a MonitBeat?](https://discuss.elastic.co/t/is-there-interest-in-something-like-a-monitbeat/32316/2?u=mrkschan). Though, before that we may need to have more specific beats being implemented.

When I'm starting a new beat implementation (hello uwsgibeat [https://github.com/mrkschan/uwsgibeat](https://github.com/mrkschan/uwsgibeat) 🙂 ) I just find myself copy-n-pasting stuff here and there. Shall we have a starter kit to generate a project from a template like the way in [https://github.com/audreyr/cookiecutter](https://github.com/audreyr/cookiecutter)? Would [https://github.com/elastic/beats-packer](https://github.com/elastic/beats-packer) be a good place to house that?

---

<div class="post-metadata">

### Author: ![steffens](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/steffens/32/79630_2.png) [@steffens](https://discuss.elastic.co/u/steffens)
#### Post date: [November 3, 2015, 3:21pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/2 "2015-11-03T15:21:47Z")

</div>

I'd prefer to reduce some boilerplate required to start a beat. The less generated code (template), the less to maintain if things change.

But in meantime some template project to copy from is nice to have. Currently topbeat is a good starting point.

---

<div class="post-metadata">

### Author: ![ruflin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ruflin/32/3116_2.png) [@ruflin](https://discuss.elastic.co/u/ruflin)
#### Post date: [November 3, 2015, 3:41pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/3 "2015-11-03T15:41:03Z")

</div>

@mrkschan I think as soon as version 1.0 is out this is definitively something we should discuss. As @urso mentioned currently topbeat is a good project to clone and then start with your own implementation.

In the end all beats should have the same Makefile, config structure, .gitignore file etc or at least share the same commands. As soon as we have it unified in our existing beats, creating the template / repo should be easy.

@mrkschan As you created already more then one beat it is definitively good to hear from your side what would help you most to speed up and simplify the creation of new beats.

---

<div class="post-metadata">

### Author: ![ruflin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ruflin/32/3116_2.png) [@ruflin](https://discuss.elastic.co/u/ruflin)
#### Post date: [November 3, 2015, 3:43pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/4 "2015-11-03T15:43:11Z")

</div>

@mrkschan Side note: We have a list of community beats here: [https://github.com/elastic/libbeat/blob/1.0.0-beta4/docs/communitybeats.asciidoc](https://github.com/elastic/libbeat/blob/1.0.0-beta4/docs/communitybeats.asciidoc) It is currently only in the beta4 branch but will be in the master branch soon. Feel free to open a pull request so your beats are added.

---

<div class="post-metadata">

### Author: ![mrkschan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mrkschan/32/5386_2.png) [@mrkschan](https://discuss.elastic.co/u/mrkschan)
#### Post date: [November 4, 2015, 2:55pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/5 "2015-11-04T14:55:05Z")

</div>

So far I can tell... the following can be generated easily by template.

- .gitignore
- main.go
- Xbeat.go
- config.go
- Makefile
- .travis.yml
- scripts/generate-\*.py
- etc/Xbeat.yml
- LICENSE (Apache 2?)

Perhaps, shall we just use cookiecutter to do so at first?

---

<div class="post-metadata">

### Author: ![steffens](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/steffens/32/79630_2.png) [@steffens](https://discuss.elastic.co/u/steffens)
#### Post date: [November 5, 2015, 2:01am UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/6 "2015-11-05T02:01:38Z")

</div>

hm... number of files already.

At least scripts/generate-\*.py I'd like to have somewhere in libbeat and reusable

etc/fields.yml missing. Use to generate docs/fields.asciidoc + used in integration tests to validate published events

Other files? README.md, CHANGELOG.md, docs/index.asciidoc

---

<div class="post-metadata">

### Author: ![mrkschan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mrkschan/32/5386_2.png) [@mrkschan](https://discuss.elastic.co/u/mrkschan)
#### Post date: [November 5, 2015, 4:24am UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/7 "2015-11-05T04:24:18Z")

</div>

README - generated by Github init repo 😄  
CHANGELOG - Good point 🙂  
docs/index.asciidoc - Yes!  
etc/fields.yml - Not sure since not many things can be shared, though a boilerplate is good.

---

<div class="post-metadata">

### Author: ![ruflin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ruflin/32/3116_2.png) [@ruflin](https://discuss.elastic.co/u/ruflin)
#### Post date: [November 6, 2015, 8:05pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/8 "2015-11-06T20:05:48Z")

</div>

@mrkschan I also have internal notes on this. I will go through it, clean it up and make it available as a libbeat issue, so we can directly discuss it there? What I intend to do is not only create a template but also make it possible to easily fetch updates from each beat (new default config, libbeat, ...)

---

<div class="post-metadata">

### Author: ![ruflin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ruflin/32/3116_2.png) [@ruflin](https://discuss.elastic.co/u/ruflin)
#### Post date: [November 9, 2015, 3:54pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/9 "2015-11-09T15:54:10Z")

</div>

For follow up discussion, see [https://github.com/elastic/libbeat/issues/280](https://github.com/elastic/libbeat/issues/280)

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [July 5, 2017, 9:58pm UTC](https://discuss.elastic.co/t/beats-starting-kit/33640/10 "2017-07-05T21:58:20Z")

</div>


