Add generated youtubebeat files
commit
38fd446535
|
@ -0,0 +1,27 @@
|
|||
# See: http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.json]
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
|
||||
[*.py]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
|
||||
[Vagrantfile]
|
||||
indent_size = 2
|
||||
indent_style = space
|
|
@ -0,0 +1,7 @@
|
|||
/.idea
|
||||
/build
|
||||
|
||||
.DS_Store
|
||||
/youtubebeat
|
||||
/youtubebeat.test
|
||||
*.pyc
|
|
@ -0,0 +1,44 @@
|
|||
sudo: required
|
||||
dist: trusty
|
||||
services:
|
||||
- docker
|
||||
|
||||
language: go
|
||||
|
||||
go:
|
||||
- 1.10.3
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- TARGETS="check"
|
||||
- TARGETS="testsuite"
|
||||
|
||||
global:
|
||||
# Cross-compile for amd64 only to speed up testing.
|
||||
- GOX_FLAGS="-arch amd64"
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-virtualenv
|
||||
|
||||
before_install:
|
||||
- umask 022
|
||||
# Redo the travis setup but with the elastic/libbeat path. This is needed so the package path is correct
|
||||
- mkdir -p $HOME/gopath/src/github.com/Crocmagnon/youtubebeat/
|
||||
- rsync -az ${TRAVIS_BUILD_DIR}/ $HOME/gopath/src/github.com/Crocmagnon/youtubebeat/
|
||||
- export TRAVIS_BUILD_DIR=$HOME/gopath/src/github.com/Crocmagnon/youtubebeat/
|
||||
- cd $HOME/gopath/src/github.com/Crocmagnon/youtubebeat/
|
||||
|
||||
install:
|
||||
- true
|
||||
|
||||
script:
|
||||
- make $TARGETS
|
||||
|
||||
after_success:
|
||||
# Copy full.cov to coverage.txt because codecov.io requires this file
|
|
@ -0,0 +1,13 @@
|
|||
Copyright (c) 2018 Gabriel Augendre
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,38 @@
|
|||
BEAT_NAME=youtubebeat
|
||||
BEAT_PATH=github.com/Crocmagnon/youtubebeat
|
||||
BEAT_GOPATH=$(firstword $(subst :, ,${GOPATH}))
|
||||
SYSTEM_TESTS=false
|
||||
TEST_ENVIRONMENT=false
|
||||
ES_BEATS?=./vendor/github.com/elastic/beats
|
||||
GOPACKAGES=$(shell govendor list -no-status +local)
|
||||
GOBUILD_FLAGS=-i -ldflags "-X $(BEAT_PATH)/vendor/github.com/elastic/beats/libbeat/version.buildTime=$(NOW) -X $(BEAT_PATH)/vendor/github.com/elastic/beats/libbeat/version.commit=$(COMMIT_ID)"
|
||||
MAGE_IMPORT_PATH=${BEAT_PATH}/vendor/github.com/magefile/mage
|
||||
|
||||
# Path to the libbeat Makefile
|
||||
-include $(ES_BEATS)/libbeat/scripts/Makefile
|
||||
|
||||
# Initial beat setup
|
||||
.PHONY: setup
|
||||
setup: copy-vendor git-init update git-add
|
||||
|
||||
# Copy beats into vendor directory
|
||||
.PHONY: copy-vendor
|
||||
copy-vendor:
|
||||
mkdir -p vendor/github.com/elastic
|
||||
cp -R ${BEAT_GOPATH}/src/github.com/elastic/beats vendor/github.com/elastic/
|
||||
rm -rf vendor/github.com/elastic/beats/.git vendor/github.com/elastic/beats/x-pack
|
||||
mkdir -p vendor/github.com/magefile
|
||||
cp -R ${BEAT_GOPATH}/src/github.com/elastic/beats/vendor/github.com/magefile/mage vendor/github.com/magefile
|
||||
|
||||
.PHONY: git-init
|
||||
git-init:
|
||||
git init
|
||||
|
||||
.PHONY: git-add
|
||||
git-add:
|
||||
git add -A
|
||||
git commit -m "Add generated youtubebeat files"
|
||||
|
||||
# Collects all dependencies and then calls update
|
||||
.PHONY: collect
|
||||
collect:
|
|
@ -0,0 +1,5 @@
|
|||
youtubebeat
|
||||
Copyright 2018 Gabriel Augendre
|
||||
|
||||
This product includes software developed by The Apache Software
|
||||
Foundation (http://www.apache.org/).
|
|
@ -0,0 +1,117 @@
|
|||
# Youtubebeat
|
||||
|
||||
Welcome to Youtubebeat.
|
||||
|
||||
Ensure that this folder is at the following location:
|
||||
`${GOPATH}/src/github.com/Crocmagnon/youtubebeat`
|
||||
|
||||
## Getting Started with Youtubebeat
|
||||
|
||||
### Requirements
|
||||
|
||||
* [Golang](https://golang.org/dl/) 1.7
|
||||
|
||||
### Init Project
|
||||
To get running with Youtubebeat and also install the
|
||||
dependencies, run the following command:
|
||||
|
||||
```
|
||||
make setup
|
||||
```
|
||||
|
||||
It will create a clean git history for each major step. Note that you can always rewrite the history if you wish before pushing your changes.
|
||||
|
||||
To push Youtubebeat in the git repository, run the following commands:
|
||||
|
||||
```
|
||||
git remote set-url origin https://github.com/Crocmagnon/youtubebeat
|
||||
git push origin master
|
||||
```
|
||||
|
||||
For further development, check out the [beat developer guide](https://www.elastic.co/guide/en/beats/libbeat/current/new-beat.html).
|
||||
|
||||
### Build
|
||||
|
||||
To build the binary for Youtubebeat run the command below. This will generate a binary
|
||||
in the same directory with the name youtubebeat.
|
||||
|
||||
```
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
### Run
|
||||
|
||||
To run Youtubebeat with debugging output enabled, run:
|
||||
|
||||
```
|
||||
./youtubebeat -c youtubebeat.yml -e -d "*"
|
||||
```
|
||||
|
||||
|
||||
### Test
|
||||
|
||||
To test Youtubebeat, run the following command:
|
||||
|
||||
```
|
||||
make testsuite
|
||||
```
|
||||
|
||||
alternatively:
|
||||
```
|
||||
make unit-tests
|
||||
make system-tests
|
||||
make integration-tests
|
||||
make coverage-report
|
||||
```
|
||||
|
||||
The test coverage is reported in the folder `./build/coverage/`
|
||||
|
||||
### Update
|
||||
|
||||
Each beat has a template for the mapping in elasticsearch and a documentation for the fields
|
||||
which is automatically generated based on `fields.yml` by running the following command.
|
||||
|
||||
```
|
||||
make update
|
||||
```
|
||||
|
||||
|
||||
### Cleanup
|
||||
|
||||
To clean Youtubebeat source code, run the following commands:
|
||||
|
||||
```
|
||||
make fmt
|
||||
make simplify
|
||||
```
|
||||
|
||||
To clean up the build directory and generated artifacts, run:
|
||||
|
||||
```
|
||||
make clean
|
||||
```
|
||||
|
||||
|
||||
### Clone
|
||||
|
||||
To clone Youtubebeat from the git repository, run the following commands:
|
||||
|
||||
```
|
||||
mkdir -p ${GOPATH}/src/github.com/Crocmagnon/youtubebeat
|
||||
git clone https://github.com/Crocmagnon/youtubebeat ${GOPATH}/src/github.com/Crocmagnon/youtubebeat
|
||||
```
|
||||
|
||||
|
||||
For further development, check out the [beat developer guide](https://www.elastic.co/guide/en/beats/libbeat/current/new-beat.html).
|
||||
|
||||
|
||||
## Packaging
|
||||
|
||||
The beat frameworks provides tools to crosscompile and package your beat for different platforms. This requires [docker](https://www.docker.com/) and vendoring as described above. To build packages of your beat, run the following command:
|
||||
|
||||
```
|
||||
make release
|
||||
```
|
||||
|
||||
This will fetch and create all images required for the build process. The whole process to finish can take several minutes.
|
|
@ -0,0 +1,7 @@
|
|||
################### Youtubebeat Configuration Example #########################
|
||||
|
||||
############################# Youtubebeat ######################################
|
||||
|
||||
youtubebeat:
|
||||
# Defines how often an event is sent to the output
|
||||
period: 1s
|
|
@ -0,0 +1,9 @@
|
|||
- key: youtubebeat
|
||||
title: youtubebeat
|
||||
description:
|
||||
fields:
|
||||
- name: counter
|
||||
type: long
|
||||
required: true
|
||||
description: >
|
||||
PLEASE UPDATE DOCUMENTATION
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,71 @@
|
|||
package beater
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/elastic/beats/libbeat/beat"
|
||||
"github.com/elastic/beats/libbeat/common"
|
||||
"github.com/elastic/beats/libbeat/logp"
|
||||
|
||||
"github.com/Crocmagnon/youtubebeat/config"
|
||||
)
|
||||
|
||||
// Youtubebeat configuration.
|
||||
type Youtubebeat struct {
|
||||
done chan struct{}
|
||||
config config.Config
|
||||
client beat.Client
|
||||
}
|
||||
|
||||
// New creates an instance of youtubebeat.
|
||||
func New(b *beat.Beat, cfg *common.Config) (beat.Beater, error) {
|
||||
c := config.DefaultConfig
|
||||
if err := cfg.Unpack(&c); err != nil {
|
||||
return nil, fmt.Errorf("Error reading config file: %v", err)
|
||||
}
|
||||
|
||||
bt := &Youtubebeat{
|
||||
done: make(chan struct{}),
|
||||
config: c,
|
||||
}
|
||||
return bt, nil
|
||||
}
|
||||
|
||||
// Run starts youtubebeat.
|
||||
func (bt *Youtubebeat) Run(b *beat.Beat) error {
|
||||
logp.Info("youtubebeat is running! Hit CTRL-C to stop it.")
|
||||
|
||||
var err error
|
||||
bt.client, err = b.Publisher.Connect()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ticker := time.NewTicker(bt.config.Period)
|
||||
counter := 1
|
||||
for {
|
||||
select {
|
||||
case <-bt.done:
|
||||
return nil
|
||||
case <-ticker.C:
|
||||
}
|
||||
|
||||
event := beat.Event{
|
||||
Timestamp: time.Now(),
|
||||
Fields: common.MapStr{
|
||||
"type": b.Info.Name,
|
||||
"counter": counter,
|
||||
},
|
||||
}
|
||||
bt.client.Publish(event)
|
||||
logp.Info("Event sent")
|
||||
counter++
|
||||
}
|
||||
}
|
||||
|
||||
// Stop stops youtubebeat.
|
||||
func (bt *Youtubebeat) Stop() {
|
||||
bt.client.Close()
|
||||
close(bt.done)
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/Crocmagnon/youtubebeat/beater"
|
||||
|
||||
cmd "github.com/elastic/beats/libbeat/cmd"
|
||||
)
|
||||
|
||||
// Name of this beat
|
||||
var Name = "youtubebeat"
|
||||
|
||||
// RootCmd to handle beats cli
|
||||
var RootCmd = cmd.GenRootCmd(Name, "", beater.New)
|
|
@ -0,0 +1,14 @@
|
|||
// Config is put into a different package to prevent cyclic imports in case
|
||||
// it is needed in several locations
|
||||
|
||||
package config
|
||||
|
||||
import "time"
|
||||
|
||||
type Config struct {
|
||||
Period time.Duration `config:"period"`
|
||||
}
|
||||
|
||||
var DefaultConfig = Config{
|
||||
Period: 1 * time.Second,
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
// +build !integration
|
||||
|
||||
package config
|
|
@ -0,0 +1,445 @@
|
|||
|
||||
////
|
||||
This file is generated! See _meta/fields.yml and scripts/generate_field_docs.py
|
||||
////
|
||||
|
||||
[[exported-fields]]
|
||||
= Exported fields
|
||||
|
||||
[partintro]
|
||||
|
||||
--
|
||||
This document describes the fields that are exported by youtubebeat. They are
|
||||
grouped in the following categories:
|
||||
|
||||
* <<exported-fields-beat>>
|
||||
* <<exported-fields-cloud>>
|
||||
* <<exported-fields-docker-processor>>
|
||||
* <<exported-fields-host-processor>>
|
||||
* <<exported-fields-kubernetes-processor>>
|
||||
* <<exported-fields-youtubebeat>>
|
||||
|
||||
--
|
||||
[[exported-fields-beat]]
|
||||
== Beat fields
|
||||
|
||||
Contains common beat fields available in all event types.
|
||||
|
||||
|
||||
|
||||
*`beat.name`*::
|
||||
+
|
||||
--
|
||||
The name of the Beat sending the log messages. If the Beat name is set in the configuration file, then that value is used. If it is not set, the hostname is used. To set the Beat name, use the `name` option in the configuration file.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`beat.hostname`*::
|
||||
+
|
||||
--
|
||||
The hostname as returned by the operating system on which the Beat is running.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`beat.timezone`*::
|
||||
+
|
||||
--
|
||||
The timezone as returned by the operating system on which the Beat is running.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`beat.version`*::
|
||||
+
|
||||
--
|
||||
The version of the beat that generated this event.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`@timestamp`*::
|
||||
+
|
||||
--
|
||||
type: date
|
||||
|
||||
example: August 26th 2016, 12:35:53.332
|
||||
|
||||
format: date
|
||||
|
||||
required: True
|
||||
|
||||
The timestamp when the event log record was generated.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`tags`*::
|
||||
+
|
||||
--
|
||||
Arbitrary tags that can be set per Beat and per transaction type.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`fields`*::
|
||||
+
|
||||
--
|
||||
type: object
|
||||
|
||||
Contains user configurable fields.
|
||||
|
||||
|
||||
--
|
||||
|
||||
[float]
|
||||
== error fields
|
||||
|
||||
Error fields containing additional info in case of errors.
|
||||
|
||||
|
||||
|
||||
*`error.message`*::
|
||||
+
|
||||
--
|
||||
type: text
|
||||
|
||||
Error message.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`error.code`*::
|
||||
+
|
||||
--
|
||||
type: long
|
||||
|
||||
Error code.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`error.type`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Error type.
|
||||
|
||||
|
||||
--
|
||||
|
||||
[[exported-fields-cloud]]
|
||||
== Cloud provider metadata fields
|
||||
|
||||
Metadata from cloud providers added by the add_cloud_metadata processor.
|
||||
|
||||
|
||||
|
||||
*`meta.cloud.provider`*::
|
||||
+
|
||||
--
|
||||
example: ec2
|
||||
|
||||
Name of the cloud provider. Possible values are ec2, gce, or digitalocean.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`meta.cloud.instance_id`*::
|
||||
+
|
||||
--
|
||||
Instance ID of the host machine.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`meta.cloud.instance_name`*::
|
||||
+
|
||||
--
|
||||
Instance name of the host machine.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`meta.cloud.machine_type`*::
|
||||
+
|
||||
--
|
||||
example: t2.medium
|
||||
|
||||
Machine type of the host machine.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`meta.cloud.availability_zone`*::
|
||||
+
|
||||
--
|
||||
example: us-east-1c
|
||||
|
||||
Availability zone in which this host is running.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`meta.cloud.project_id`*::
|
||||
+
|
||||
--
|
||||
example: project-x
|
||||
|
||||
Name of the project in Google Cloud.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`meta.cloud.region`*::
|
||||
+
|
||||
--
|
||||
Region in which this host is running.
|
||||
|
||||
|
||||
--
|
||||
|
||||
[[exported-fields-docker-processor]]
|
||||
== Docker fields
|
||||
|
||||
Docker stats collected from Docker.
|
||||
|
||||
|
||||
|
||||
|
||||
*`docker.container.id`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Unique container id.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`docker.container.image`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Name of the image the container was built on.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`docker.container.name`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Container name.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`docker.container.labels`*::
|
||||
+
|
||||
--
|
||||
type: object
|
||||
|
||||
Image labels.
|
||||
|
||||
|
||||
--
|
||||
|
||||
[[exported-fields-host-processor]]
|
||||
== Host fields
|
||||
|
||||
Info collected for the host machine.
|
||||
|
||||
|
||||
|
||||
|
||||
*`host.name`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Hostname.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.id`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Unique host id.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.architecture`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Host architecture (e.g. x86_64, arm, ppc, mips).
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.os.platform`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
OS platform (e.g. centos, ubuntu, windows).
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.os.version`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
OS version.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.os.family`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
OS family (e.g. redhat, debian, freebsd, windows).
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.ip`*::
|
||||
+
|
||||
--
|
||||
type: ip
|
||||
|
||||
List of IP-addresses.
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`host.mac`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
List of hardware-addresses, usually MAC-addresses.
|
||||
|
||||
|
||||
--
|
||||
|
||||
[[exported-fields-kubernetes-processor]]
|
||||
== Kubernetes fields
|
||||
|
||||
Kubernetes metadata added by the kubernetes processor
|
||||
|
||||
|
||||
|
||||
|
||||
*`kubernetes.pod.name`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Kubernetes pod name
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.pod.uid`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Kubernetes Pod UID
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.namespace`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Kubernetes namespace
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.node.name`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Kubernetes node name
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.labels`*::
|
||||
+
|
||||
--
|
||||
type: object
|
||||
|
||||
Kubernetes labels map
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.annotations`*::
|
||||
+
|
||||
--
|
||||
type: object
|
||||
|
||||
Kubernetes annotations map
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.container.name`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Kubernetes container name
|
||||
|
||||
|
||||
--
|
||||
|
||||
*`kubernetes.container.image`*::
|
||||
+
|
||||
--
|
||||
type: keyword
|
||||
|
||||
Kubernetes container image
|
||||
|
||||
|
||||
--
|
||||
|
||||
[[exported-fields-youtubebeat]]
|
||||
== youtubebeat fields
|
||||
|
||||
None
|
||||
|
||||
|
||||
*`counter`*::
|
||||
+
|
||||
--
|
||||
type: long
|
||||
|
||||
required: True
|
||||
|
||||
PLEASE UPDATE DOCUMENTATION
|
||||
|
||||
|
||||
--
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
= Youtubebeat Docs
|
||||
|
||||
Welcome to the Youtubebeat documentation.
|
||||
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
- key: youtubebeat
|
||||
title: youtubebeat
|
||||
description:
|
||||
fields:
|
||||
- name: counter
|
||||
type: long
|
||||
required: true
|
||||
description: >
|
||||
PLEASE UPDATE DOCUMENTATION
|
||||
|
||||
- key: beat
|
||||
title: Beat
|
||||
description: >
|
||||
Contains common beat fields available in all event types.
|
||||
fields:
|
||||
|
||||
- name: beat.name
|
||||
description: >
|
||||
The name of the Beat sending the log messages. If the Beat name is
|
||||
set in the configuration file, then that value is used. If it is not
|
||||
set, the hostname is used. To set the Beat name, use the `name`
|
||||
option in the configuration file.
|
||||
- name: beat.hostname
|
||||
description: >
|
||||
The hostname as returned by the operating system on which the Beat is
|
||||
running.
|
||||
- name: beat.timezone
|
||||
description: >
|
||||
The timezone as returned by the operating system on which the Beat is
|
||||
running.
|
||||
- name: beat.version
|
||||
description: >
|
||||
The version of the beat that generated this event.
|
||||
|
||||
- name: "@timestamp"
|
||||
type: date
|
||||
required: true
|
||||
format: date
|
||||
example: August 26th 2016, 12:35:53.332
|
||||
description: >
|
||||
The timestamp when the event log record was generated.
|
||||
|
||||
- name: tags
|
||||
description: >
|
||||
Arbitrary tags that can be set per Beat and per transaction
|
||||
type.
|
||||
|
||||
- name: fields
|
||||
type: object
|
||||
object_type: keyword
|
||||
description: >
|
||||
Contains user configurable fields.
|
||||
|
||||
- name: error
|
||||
type: group
|
||||
description: >
|
||||
Error fields containing additional info in case of errors.
|
||||
fields:
|
||||
- name: message
|
||||
type: text
|
||||
description: >
|
||||
Error message.
|
||||
- name: code
|
||||
type: long
|
||||
description: >
|
||||
Error code.
|
||||
- name: type
|
||||
type: keyword
|
||||
description: >
|
||||
Error type.
|
||||
- key: cloud
|
||||
title: Cloud provider metadata
|
||||
description: >
|
||||
Metadata from cloud providers added by the add_cloud_metadata processor.
|
||||
fields:
|
||||
|
||||
- name: meta.cloud.provider
|
||||
example: ec2
|
||||
description: >
|
||||
Name of the cloud provider. Possible values are ec2, gce, or digitalocean.
|
||||
|
||||
- name: meta.cloud.instance_id
|
||||
description: >
|
||||
Instance ID of the host machine.
|
||||
|
||||
- name: meta.cloud.instance_name
|
||||
description: >
|
||||
Instance name of the host machine.
|
||||
|
||||
- name: meta.cloud.machine_type
|
||||
example: t2.medium
|
||||
description: >
|
||||
Machine type of the host machine.
|
||||
|
||||
- name: meta.cloud.availability_zone
|
||||
example: us-east-1c
|
||||
description: >
|
||||
Availability zone in which this host is running.
|
||||
|
||||
- name: meta.cloud.project_id
|
||||
example: project-x
|
||||
description: >
|
||||
Name of the project in Google Cloud.
|
||||
|
||||
- name: meta.cloud.region
|
||||
description: >
|
||||
Region in which this host is running.
|
||||
- key: docker
|
||||
title: Docker
|
||||
description: >
|
||||
Docker stats collected from Docker.
|
||||
short_config: false
|
||||
anchor: docker-processor
|
||||
fields:
|
||||
- name: docker
|
||||
type: group
|
||||
fields:
|
||||
- name: container.id
|
||||
type: keyword
|
||||
description: >
|
||||
Unique container id.
|
||||
- name: container.image
|
||||
type: keyword
|
||||
description: >
|
||||
Name of the image the container was built on.
|
||||
- name: container.name
|
||||
type: keyword
|
||||
description: >
|
||||
Container name.
|
||||
- name: container.labels
|
||||
type: object
|
||||
object_type: keyword
|
||||
description: >
|
||||
Image labels.
|
||||
- key: host
|
||||
title: Host
|
||||
description: >
|
||||
Info collected for the host machine.
|
||||
anchor: host-processor
|
||||
fields:
|
||||
- name: host
|
||||
type: group
|
||||
fields:
|
||||
- name: name
|
||||
type: keyword
|
||||
description: >
|
||||
Hostname.
|
||||
- name: id
|
||||
type: keyword
|
||||
description: >
|
||||
Unique host id.
|
||||
- name: architecture
|
||||
type: keyword
|
||||
description: >
|
||||
Host architecture (e.g. x86_64, arm, ppc, mips).
|
||||
- name: os.platform
|
||||
type: keyword
|
||||
description: >
|
||||
OS platform (e.g. centos, ubuntu, windows).
|
||||
- name: os.version
|
||||
type: keyword
|
||||
description: >
|
||||
OS version.
|
||||
- name: os.family
|
||||
type: keyword
|
||||
description: >
|
||||
OS family (e.g. redhat, debian, freebsd, windows).
|
||||
- name: ip
|
||||
type: ip
|
||||
description: >
|
||||
List of IP-addresses.
|
||||
- name: mac
|
||||
type: keyword
|
||||
description: >
|
||||
List of hardware-addresses, usually MAC-addresses.
|
||||
|
||||
- key: kubernetes
|
||||
title: Kubernetes
|
||||
description: >
|
||||
Kubernetes metadata added by the kubernetes processor
|
||||
short_config: false
|
||||
anchor: kubernetes-processor
|
||||
fields:
|
||||
- name: kubernetes
|
||||
type: group
|
||||
fields:
|
||||
- name: pod.name
|
||||
type: keyword
|
||||
description: >
|
||||
Kubernetes pod name
|
||||
|
||||
- name: pod.uid
|
||||
type: keyword
|
||||
description: >
|
||||
Kubernetes Pod UID
|
||||
|
||||
- name: namespace
|
||||
type: keyword
|
||||
description: >
|
||||
Kubernetes namespace
|
||||
|
||||
- name: node.name
|
||||
type: keyword
|
||||
description: >
|
||||
Kubernetes node name
|
||||
|
||||
- name: labels
|
||||
type: object
|
||||
description: >
|
||||
Kubernetes labels map
|
||||
|
||||
- name: annotations
|
||||
type: object
|
||||
description: >
|
||||
Kubernetes annotations map
|
||||
|
||||
- name: container.name
|
||||
type: keyword
|
||||
description: >
|
||||
Kubernetes container name
|
||||
|
||||
- name: container.image
|
||||
type: keyword
|
||||
description: >
|
||||
Kubernetes container image
|
|
@ -0,0 +1,35 @@
|
|||
// Licensed to Elasticsearch B.V. under one or more contributor
|
||||
// license agreements. See the NOTICE file distributed with
|
||||
// this work for additional information regarding copyright
|
||||
// ownership. Elasticsearch B.V. licenses this file to you under
|
||||
// the Apache License, Version 2.0 (the "License"); you may
|
||||
// not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT.
|
||||
|
||||
package include
|
||||
|
||||
import (
|
||||
"github.com/elastic/beats/libbeat/asset"
|
||||
)
|
||||
|
||||
func init() {
|
||||
if err := asset.SetFields("youtubebeat", "fields.yml", Asset); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Asset returns asset data
|
||||
func Asset() string {
|
||||
return "eJy0WFtz2zYTffev2MnT983InMZuPB09dOrankbTOPE09rOyAlYkahJgcLGs/voOQPBmUpQcqy8ZE5dzzgK7Z6GcwiNt57BVzroVrQjtCYAVNqeXg5wM06K0Qsn5CcBaUM6N/wvgFCQWNAemnLSkwxiA3ZY0h1zJNA5o+u6EJj4Hqx3FwS4s/BoHAe4+3Vx+vYGHu+vL+xu4/nL1cHvz+f7yfvHl88lJFN1X+/tQZsS7UtKikAaYKgolw76oH/AJRY6rnEBIwDwHeiJpg3aTdMLsxekBEv/ndAz3GYUNoNZgMwoKwZDkQqZhIFcpFGQMpmQSWHRWhW3CNFCGrBfo55mSa5E6jZ4O1iKnmR/3k2jhCXPnd4IzxAOmsP5TKtsFC1sgU8ZGprj+XgWqno6ZnwtD3/zntwZHhYh360qGh1Yz7j+4Rhsa0GSdlsRhtQ1UqiRPI1MwW2OpACVhkwmWtcI7Z6edlEKmI2qsKOgfJQ9QU6/8L9U8kTZCyf1i4sI6rUI6h8tPSXopxMFmwlSpnPRT991vPhRjsSjf9eqUo6WpOl0rXaDtraNnLEpfepcudcbC2YXN4Oyn9xczeH82P/8w/3CenJ+fHXa6QRJsqkSmWIa+QDQxpTls0LTxvQjKYmqmWS71SliNehvWVqfF0FtByPeSdHVRKHn4sBqlQWbb+6jO6QVx5Q69c1Srv4nVtVZ9LKuZR9pulObTQhuvcoZ0W1PeoCqyFwpIa9U33FQrV06T3PhNtQOyitHnL3Iu/FrMQci18pXN0AT/CjwmqZOhY/5dNdHMmvFak6Vn2xncIauVFnGSAQFTfIjeaTEHoXuQIbTHGkD37+wg9CpNYotiuXK87VFX/hNKrZ4EJx+mRY4Wx9vWbZyFtVZFhdRsNf6uWgtCzpdhwbKG9CsZGaP0zi7mlyZhV1LDvixsYnuq93OnvfUVJnCnjBE+cUNPMoCaPOAMUkYzUBq4SIXFXDFCmezUJqSxKBktxZ7SWcSFsLiuJfkmAgWyTMiXpTvGsL8zNRzdvn4YS1yw7ORZc872LCmIC1dMs99WECHFXkcenzkiF3a77LS8RoEzp4TGnr5ne4y0AwShI4q22wlTyRGmbXMTKRe8sbnVRkqcOX0+PPXiFq/lD6XSnKpK282uKd3bav8Ka/bFFwudK/YY6idW+nX9PQJezYGxaL395jkx37NDmVdzvmZNprRdVh1gDmvMjb80lCxTuuY7bap8x4u8kQWj/WGXj8eeQDoR/G2e+CDFd0ctIAg+5uoNXTHWPl7F2M2LAFe/TqMA/5BYOZFbUHJKSscMflDJVcPpsaa4clxRbgZsvbcETL8n9mhZhJOoeJqk9cncpuzH6msEZOEfA51E9V1uYD1tbvrxvZkZuV+Xl2+/k4/xZ8XwNo6U6ZVBjCQ5apYJS8w6fYQYenDwP0rSBJ5/uVhe/DwD1MUMypLNoBCl+f9QijJJmaP1T/q3KfnyFWqgqIGRtMrMwK2ctG4GGyG52uwQ0f/F8+MaIs4oxxoLkW/fTFHBxCA18QztDDitBMoZrDXRyvCpaEU5kNAbmmD/JIz1hra4O0XONRlDZkhQIHtbkDVNhppvUFNLNgNnHOb5Fm4vr7oaah95dCvSkiyZ1k3+7I6N0LbzzTO4/6ZtQaHrJdNtsd2014B6ouFVNlQqfoT20DmBUvHK20ap3FutqcN0pzg8LK6HRP5fUyI7XlAt4pDM/wI76gl6xB1HeGhzPYyoQoMCyyETSqls+P+vo9F1IMc5j/lg6fCy3ttlivYIT7ZR3gr33wAAAP//UV6dfg=="
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
// Licensed to Elasticsearch B.V. under one or more contributor
|
||||
// license agreements. See the NOTICE file distributed with
|
||||
// this work for additional information regarding copyright
|
||||
// ownership. Elasticsearch B.V. licenses this file to you under
|
||||
// the Apache License, Version 2.0 (the "License"); you may
|
||||
// not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
// +build mage
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/magefile/mage/mg"
|
||||
"github.com/magefile/mage/sh"
|
||||
|
||||
"github.com/elastic/beats/dev-tools/mage"
|
||||
)
|
||||
|
||||
func init() {
|
||||
mage.SetBuildVariableSources(mage.DefaultBeatBuildVariableSources)
|
||||
|
||||
mage.BeatDescription = "One sentence description of the Beat."
|
||||
}
|
||||
|
||||
// Build builds the Beat binary.
|
||||
func Build() error {
|
||||
return mage.Build(mage.DefaultBuildArgs())
|
||||
}
|
||||
|
||||
// GolangCrossBuild build the Beat binary inside of the golang-builder.
|
||||
// Do not use directly, use crossBuild instead.
|
||||
func GolangCrossBuild() error {
|
||||
return mage.GolangCrossBuild(mage.DefaultGolangCrossBuildArgs())
|
||||
}
|
||||
|
||||
// BuildGoDaemon builds the go-daemon binary (use crossBuildGoDaemon).
|
||||
func BuildGoDaemon() error {
|
||||
return mage.BuildGoDaemon()
|
||||
}
|
||||
|
||||
// CrossBuild cross-builds the beat for all target platforms.
|
||||
func CrossBuild() error {
|
||||
return mage.CrossBuild()
|
||||
}
|
||||
|
||||
// CrossBuildGoDaemon cross-builds the go-daemon binary using Docker.
|
||||
func CrossBuildGoDaemon() error {
|
||||
return mage.CrossBuildGoDaemon()
|
||||
}
|
||||
|
||||
// Clean cleans all generated files and build artifacts.
|
||||
func Clean() error {
|
||||
return mage.Clean()
|
||||
}
|
||||
|
||||
// Package packages the Beat for distribution.
|
||||
// Use SNAPSHOT=true to build snapshots.
|
||||
// Use PLATFORMS to control the target platforms.
|
||||
func Package() {
|
||||
start := time.Now()
|
||||
defer func() { fmt.Println("package ran for", time.Since(start)) }()
|
||||
|
||||
mage.UseCommunityBeatPackaging()
|
||||
|
||||
mg.Deps(Update)
|
||||
mg.Deps(CrossBuild, CrossBuildGoDaemon)
|
||||
mg.SerialDeps(mage.Package, TestPackages)
|
||||
}
|
||||
|
||||
// TestPackages tests the generated packages (i.e. file modes, owners, groups).
|
||||
func TestPackages() error {
|
||||
return mage.TestPackages()
|
||||
}
|
||||
|
||||
// Update updates the generated files (aka make update).
|
||||
func Update() error {
|
||||
return sh.Run("make", "update")
|
||||
}
|
||||
|
||||
// Fields generates a fields.yml for the Beat.
|
||||
func Fields() error {
|
||||
return mage.GenerateFieldsYAML()
|
||||
}
|
||||
|
||||
// GoTestUnit executes the Go unit tests.
|
||||
// Use TEST_COVERAGE=true to enable code coverage profiling.
|
||||
// Use RACE_DETECTOR=true to enable the race detector.
|
||||
func GoTestUnit(ctx context.Context) error {
|
||||
return mage.GoTest(ctx, mage.DefaultGoTestUnitArgs())
|
||||
}
|
||||
|
||||
// GoTestIntegration executes the Go integration tests.
|
||||
// Use TEST_COVERAGE=true to enable code coverage profiling.
|
||||
// Use RACE_DETECTOR=true to enable the race detector.
|
||||
func GoTestIntegration(ctx context.Context) error {
|
||||
return mage.GoTest(ctx, mage.DefaultGoTestIntegrationArgs())
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/Crocmagnon/youtubebeat/cmd"
|
||||
|
||||
_ "github.com/Crocmagnon/youtubebeat/include"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if err := cmd.RootCmd.Execute(); err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package main
|
||||
|
||||
// This file is mandatory as otherwise the youtubebeat.test binary is not generated correctly.
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"testing"
|
||||
|
||||
"github.com/Crocmagnon/youtubebeat/cmd"
|
||||
)
|
||||
|
||||
var systemTest *bool
|
||||
|
||||
func init() {
|
||||
systemTest = flag.Bool("systemTest", false, "Set to true when running system tests")
|
||||
|
||||
cmd.RootCmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("systemTest"))
|
||||
cmd.RootCmd.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("test.coverprofile"))
|
||||
}
|
||||
|
||||
// Test started when the test binary is started. Only calls main.
|
||||
func TestSystem(t *testing.T) {
|
||||
|
||||
if *systemTest {
|
||||
main()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
@echo off
|
||||
|
||||
REM Windows wrapper for Mage (https://magefile.org/) that installs it
|
||||
REM to %GOPATH%\bin from the Beats vendor directory.
|
||||
REM
|
||||
REM After running this once you may invoke mage.exe directly.
|
||||
|
||||
WHERE mage
|
||||
IF %ERRORLEVEL% NEQ 0 go install github.com/Crocmagnon/youtubebeat/vendor/github.com/magefile/mage
|
||||
|
||||
mage %*
|
|
@ -0,0 +1,78 @@
|
|||
################### Beat Configuration #########################
|
||||
|
||||
|
||||
|
||||
############################# Output ##########################################
|
||||
|
||||
# Configure what outputs to use when sending the data collected by the beat.
|
||||
# You can enable one or multiple outputs by setting enabled option to true.
|
||||
output:
|
||||
|
||||
### File as output
|
||||
file:
|
||||
# Enabling file output
|
||||
enabled: true
|
||||
|
||||
# Path to the directory where to save the generated files. The option is mandatory.
|
||||
path: {{ output_file_path|default(beat.working_dir + "/output") }}
|
||||
|
||||
|
||||
# Name of the generated files. The default is `youtubebeat` and it generates
|
||||
# files: `youtubebeat`, `youtubebeat.1`, `youtubebeat.2`, etc.
|
||||
filename: {{ output_file_filename|default("youtubebeat") }}
|
||||
|
||||
# Maximum size in kilobytes of each file. When this size is reached, the files are
|
||||
# rotated. The default value is 10 MB.
|
||||
#rotate_every_kb: 10000
|
||||
|
||||
# Maximum number of files under path. When this number of files is reached, the
|
||||
# oldest file is deleted and the rest are shifted from last to first. The default
|
||||
# is 7 files.
|
||||
#number_of_files: 7
|
||||
|
||||
|
||||
|
||||
############################# Beat #########################################
|
||||
|
||||
# The name of the shipper that publishes the network data. It can be used to group
|
||||
# all the transactions sent by a single shipper in the web interface.
|
||||
# If this options is not defined, the hostname is used.
|
||||
#name:
|
||||
|
||||
# The tags of the shipper are included in their own field with each
|
||||
# transaction published. Tags make it easy to group servers by different
|
||||
# logical properties.
|
||||
#tags: ["service-X", "web-tier"]
|
||||
|
||||
|
||||
|
||||
############################# Logging #########################################
|
||||
|
||||
#logging:
|
||||
# Send all logging output to syslog. On Windows default is false, otherwise
|
||||
# default is true.
|
||||
#to_syslog: true
|
||||
|
||||
# Write all logging output to files. Beats automatically rotate files if configurable
|
||||
# limit is reached.
|
||||
#to_files: false
|
||||
|
||||
# Enable debug output for selected components.
|
||||
#selectors: []
|
||||
|
||||
# Set log level
|
||||
#level: error
|
||||
|
||||
#files:
|
||||
# The directory where the log files will written to.
|
||||
#path: /var/log/youtubebeat
|
||||
|
||||
# The name of the files where the logs are written to.
|
||||
#name: youtubebeat
|
||||
|
||||
# Configure log file size limit. If limit is reached, log file will be
|
||||
# automatically rotated
|
||||
#rotateeverybytes: 10485760 # = 10MB
|
||||
|
||||
# Number of rotated log files to keep. Oldest files will be deleted first.
|
||||
#keepfiles: 7
|
|
@ -0,0 +1,19 @@
|
|||
from youtubebeat import BaseTest
|
||||
|
||||
import os
|
||||
|
||||
|
||||
class Test(BaseTest):
|
||||
|
||||
def test_base(self):
|
||||
"""
|
||||
Basic test with exiting Youtubebeat normally
|
||||
"""
|
||||
self.render_config_template(
|
||||
path=os.path.abspath(self.working_dir) + "/log/*"
|
||||
)
|
||||
|
||||
youtubebeat_proc = self.start_beat()
|
||||
self.wait_until(lambda: self.log_contains("youtubebeat is running"))
|
||||
exit_code = youtubebeat_proc.kill_and_wait()
|
||||
assert exit_code == 0
|
|
@ -0,0 +1,13 @@
|
|||
import os
|
||||
import sys
|
||||
sys.path.append('../../vendor/github.com/elastic/beats/libbeat/tests/system')
|
||||
from beat.beat import TestCase
|
||||
|
||||
|
||||
class BaseTest(TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
self.beat_name = "youtubebeat"
|
||||
self.beat_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
|
||||
super(BaseTest, self).setUpClass()
|
|
@ -0,0 +1,31 @@
|
|||
# See: http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[.go]
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
|
||||
[*.json]
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
|
||||
[*.py]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
|
||||
[Vagrantfile]
|
||||
indent_size = 2
|
||||
indent_style = space
|
|
@ -0,0 +1,6 @@
|
|||
CHANGELOG.md merge=union
|
||||
CHANGELOG.asciidoc merge=union
|
||||
|
||||
# Keep these file types as CRLF (Windows).
|
||||
*.bat text eol=crlf
|
||||
*.cmd text eol=crlf
|
|
@ -0,0 +1,12 @@
|
|||
Please post all questions and issues on https://discuss.elastic.co/c/beats
|
||||
before opening a Github Issue. Your questions will reach a wider audience there,
|
||||
and if we confirm that there is a bug, then you can open a new issue.
|
||||
|
||||
For security vulnerabilities please only send reports to security@elastic.co.
|
||||
See https://www.elastic.co/community/security for more information.
|
||||
|
||||
For confirmed bugs, please report:
|
||||
- Version:
|
||||
- Operating System:
|
||||
- Discuss Forum URL:
|
||||
- Steps to Reproduce:
|
|
@ -0,0 +1,35 @@
|
|||
# Directories
|
||||
/.vagrant
|
||||
/.idea
|
||||
/.vscode
|
||||
/build
|
||||
/*/data
|
||||
/*/logs
|
||||
/*/fields.yml
|
||||
/*/*.template*.json
|
||||
**/html_docs
|
||||
/*/_meta/kibana.generated
|
||||
|
||||
# Files
|
||||
.DS_Store
|
||||
/beats.iml
|
||||
*.dev.yml
|
||||
*.generated.yml
|
||||
coverage.out
|
||||
.python-version
|
||||
beat.db
|
||||
*.keystore
|
||||
|
||||
# Editor swap files
|
||||
*.swp
|
||||
*.swo
|
||||
*.swn
|
||||
|
||||
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
*.exe
|
||||
*.test
|
||||
*.prof
|
||||
*.pyc
|
|
@ -0,0 +1 @@
|
|||
1.10.3
|
|
@ -0,0 +1,13 @@
|
|||
[MESSAGES CONTROL]
|
||||
|
||||
disable=too-many-lines,too-many-public-methods,too-many-statements
|
||||
|
||||
|
||||
[BASIC]
|
||||
|
||||
method-rgx=[a-z_][a-z0-9_]{2,50}$
|
||||
|
||||
|
||||
[FORMAT]
|
||||
|
||||
max-line-length=120
|
|
@ -0,0 +1,205 @@
|
|||
sudo: required
|
||||
dist: trusty
|
||||
services:
|
||||
- docker
|
||||
|
||||
language: go
|
||||
|
||||
# Make sure project can also be built on travis for clones of the repo
|
||||
go_import_path: github.com/elastic/beats
|
||||
|
||||
env:
|
||||
global:
|
||||
# Cross-compile for amd64 only to speed up testing.
|
||||
- GOX_FLAGS="-arch amd64"
|
||||
- DOCKER_COMPOSE_VERSION=1.11.1
|
||||
- GO_VERSION="$(cat .go-version)"
|
||||
# Newer versions of minikube fail on travis, see: https://github.com/kubernetes/minikube/issues/2704
|
||||
- TRAVIS_MINIKUBE_VERSION=v0.25.2
|
||||
|
||||
jobs:
|
||||
include:
|
||||
# General checks
|
||||
- os: linux
|
||||
env: TARGETS="check"
|
||||
go: $GO_VERSION
|
||||
stage: check
|
||||
|
||||
# Filebeat
|
||||
- os: linux
|
||||
env: TARGETS="-C filebeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: osx
|
||||
env: TARGETS="TEST_ENVIRONMENT=0 -C filebeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Heartbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C heartbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: osx
|
||||
env: TARGETS="TEST_ENVIRONMENT=0 -C heartbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Auditbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C auditbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: osx
|
||||
env: TARGETS="TEST_ENVIRONMENT=0 -C auditbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: linux
|
||||
env: TARGETS="-C auditbeat crosscompile"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Libbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C libbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: linux
|
||||
env: TARGETS="-C libbeat crosscompile"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: linux
|
||||
env: STRESS_TEST_OPTIONS="-timeout=20m -race -v -parallel 1" TARGETS="-C libbeat stress-tests"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Metricbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C metricbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: osx
|
||||
env: TARGETS="TEST_ENVIRONMENT=0 -C metricbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
- os: linux
|
||||
env: TARGETS="-C metricbeat crosscompile"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Packetbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C packetbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Winlogbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C winlogbeat crosscompile"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Journalbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C journalbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Functionbeat
|
||||
- os: linux
|
||||
env: TARGETS="-C x-pack/functionbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
- os: osx
|
||||
env: TARGETS="TEST_ENVIRONMENT=0 -C x-pack/functionbeat testsuite"
|
||||
go: $GO_VERSION
|
||||
stage: test
|
||||
|
||||
# Generators
|
||||
- os: linux
|
||||
env: TARGETS="-C generator/metricbeat test"
|
||||
go: $GO_VERSION
|
||||
|