You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

37 lines
853 B

package pipeline
import (
"context"
"time"
)
// LokiDataOutput can output raw data to Loki (as string value).
type LokiDataOutput struct {
lokiWriter *lokiWriter
}
func NewLokiDataOutput(endpoint string, basicAuth *BasicAuth) *LokiDataOutput {
return &LokiDataOutput{
lokiWriter: newLokiWriter(endpoint, basicAuth),
}
}
const DataOutputTypeLoki = "loki"
func (out *LokiDataOutput) Type() string {
return DataOutputTypeLoki
}
func (out *LokiDataOutput) OutputData(_ context.Context, vars Vars, data []byte) ([]*ChannelData, error) {
if out.lokiWriter.endpoint == "" {
logger.Debug("Skip sending to Loki: no url")
return nil, nil
}
err := out.lokiWriter.write(LokiStream{
Stream: map[string]string{"channel": vars.Channel},
Values: []interface{}{
[]interface{}{time.Now().UnixNano(), string(data)},
},
})
return nil, err
}