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 }