Skip to content

Commit

Permalink
add a discard output
Browse files Browse the repository at this point in the history
  • Loading branch information
leehinman committed Mar 7, 2024
1 parent a26f521 commit c93621f
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 0 deletions.
30 changes: 30 additions & 0 deletions libbeat/outputs/discard/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// 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.

package discard

import (
"github.com/elastic/elastic-agent-libs/config"
)

type discardOutConfig struct {
Queue config.Namespace `config:"queue"`
}

func defaultConfig() discardOutConfig {
return discardOutConfig{}
}
83 changes: 83 additions & 0 deletions libbeat/outputs/discard/discard.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// 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.

package discard

import (
"context"

"github.com/elastic/beats/v7/libbeat/beat"
"github.com/elastic/beats/v7/libbeat/outputs"
"github.com/elastic/beats/v7/libbeat/publisher"
"github.com/elastic/elastic-agent-libs/config"
"github.com/elastic/elastic-agent-libs/logp"
)

func init() {
outputs.RegisterType("discard", makeDiscard)
}

type discardOutput struct {
log *logp.Logger
beat beat.Info
observer outputs.Observer
}

func makeDiscard(
_ outputs.IndexManager,
beat beat.Info,
observer outputs.Observer,
cfg *config.C,
) (outputs.Group, error) {
out := &discardOutput{
log: logp.NewLogger("discard"),
beat: beat,
observer: observer,
}
out.log.Infof("discard output before config")
doConfig := defaultConfig()
if err := cfg.Unpack(&doConfig); err != nil {
return outputs.Fail(err)
}

// disable bulk support in publisher pipeline
_ = cfg.SetInt("bulk_max_size", -1, -1)
out.log.Infof("Initialized discard output")
return outputs.Success(doConfig.Queue, -1, 0, out)
}

// Implement Outputer
func (out *discardOutput) Close() error {
return nil
}

func (out *discardOutput) Publish(_ context.Context, batch publisher.Batch) error {
defer batch.ACK()

st := out.observer
events := batch.Events()
st.NewBatch(len(events))
for range events {
st.WriteError(nil)
}
st.Acked(len(events))
return nil
}

func (out *discardOutput) String() string {
return "discard"
}
1 change: 1 addition & 0 deletions libbeat/publisher/includes/includes.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
_ "github.com/elastic/beats/v7/libbeat/outputs/codec/format"
_ "github.com/elastic/beats/v7/libbeat/outputs/codec/json"
_ "github.com/elastic/beats/v7/libbeat/outputs/console"
_ "github.com/elastic/beats/v7/libbeat/outputs/discard"
_ "github.com/elastic/beats/v7/libbeat/outputs/elasticsearch"
_ "github.com/elastic/beats/v7/libbeat/outputs/fileout"
_ "github.com/elastic/beats/v7/libbeat/outputs/kafka"
Expand Down

0 comments on commit c93621f

Please sign in to comment.