github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/clients/pkg/promtail/targets/target/target.go (about)

     1  package target
     2  
     3  import (
     4  	"github.com/prometheus/common/model"
     5  )
     6  
     7  // TargetType is the type of target
     8  // nolint:revive
     9  type TargetType string
    10  
    11  const (
    12  	// FileTargetType is a file target
    13  	FileTargetType = TargetType("File")
    14  
    15  	// JournalTargetType is a journalctl target
    16  	JournalTargetType = TargetType("Journal")
    17  
    18  	// SyslogTargetType is a syslog target
    19  	SyslogTargetType = TargetType("Syslog")
    20  
    21  	// GcplogTargetType is a target where log entries are pulled from pubsub topic.
    22  	GcplogTargetType = TargetType("Gcplog")
    23  
    24  	// DroppedTargetType is a target that's been dropped.
    25  	DroppedTargetType = TargetType("dropped")
    26  
    27  	// PushTargetType is a Loki push target
    28  	PushTargetType = TargetType("Push")
    29  
    30  	// WindowsTargetType is a Windows event target
    31  	WindowsTargetType = TargetType("WindowsEvent")
    32  
    33  	// KafkaTargetType is a Kafka target
    34  	KafkaTargetType = TargetType("Kafka")
    35  
    36  	// GelfTargetType is a gelf target
    37  	GelfTargetType = TargetType("gelf")
    38  
    39  	// CloudflareTargetType is a Cloudflare target
    40  	CloudflareTargetType = TargetType("Cloudflare")
    41  
    42  	// DockerTargetType is a Docker target
    43  	DockerTargetType = TargetType("Docker")
    44  
    45  	// HerokuDrainTargetType is a Heroku Logs target
    46  	HerokuDrainTargetType = TargetType("HerokuDrain")
    47  )
    48  
    49  // Target is a promtail scrape target
    50  type Target interface {
    51  	// Type of the target
    52  	Type() TargetType
    53  	// DiscoveredLabels returns labels discovered before any relabeling.
    54  	DiscoveredLabels() model.LabelSet
    55  	// Labels returns labels that are added to this target and its stream.
    56  	Labels() model.LabelSet
    57  	// Ready tells if the targets is ready
    58  	Ready() bool
    59  	// Details is additional information about this target specific to its type
    60  	Details() interface{}
    61  }
    62  
    63  // IsDropped tells if a target has been dropped
    64  func IsDropped(t Target) bool {
    65  	return t.Type() == DroppedTargetType
    66  }
    67  
    68  // droppedTarget is a target that has been dropped
    69  type droppedTarget struct {
    70  	discoveredLabels model.LabelSet
    71  	reason           string
    72  }
    73  
    74  func NewDroppedTarget(reason string, discoveredLabels model.LabelSet) Target {
    75  	return &droppedTarget{
    76  		discoveredLabels: discoveredLabels,
    77  		reason:           reason,
    78  	}
    79  }
    80  
    81  // Type implements Target
    82  func (d *droppedTarget) Type() TargetType {
    83  	return DroppedTargetType
    84  }
    85  
    86  // DiscoveredLabels implements Target
    87  func (d *droppedTarget) DiscoveredLabels() model.LabelSet {
    88  	return d.discoveredLabels
    89  }
    90  
    91  // Labels implements Target
    92  func (d *droppedTarget) Labels() model.LabelSet {
    93  	return nil
    94  }
    95  
    96  // Ready implements Target
    97  func (d *droppedTarget) Ready() bool {
    98  	return false
    99  }
   100  
   101  // Details implements Target it contains a message explaining the reason for dropping it
   102  func (d *droppedTarget) Details() interface{} {
   103  	return d.reason
   104  }