feat: add metric plugin (#361)

This commit is contained in:
boojack
2022-10-29 11:15:39 +08:00
committed by GitHub
parent 30daea0c4f
commit 95376f78f6
13 changed files with 157 additions and 5 deletions

View File

@@ -0,0 +1,40 @@
package segment
import (
"time"
"github.com/google/uuid"
"github.com/segmentio/analytics-go"
metric "github.com/usememos/memos/plugin/metrics"
)
var _ metric.Collector = (*collector)(nil)
// collector is the metrics collector https://segment.com/.
type collector struct {
client analytics.Client
}
// NewCollector creates a new instance of segment.
func NewCollector(key string) metric.Collector {
client := analytics.New(key)
return &collector{
client: client,
}
}
// Collect will exec all the segment collector.
func (c *collector) Collect(metric *metric.Metric) error {
properties := analytics.NewProperties()
for key, value := range metric.Labels {
properties.Set(key, value)
}
return c.client.Enqueue(analytics.Track{
Event: string(metric.Name),
AnonymousId: uuid.NewString(),
Properties: properties,
Timestamp: time.Now().UTC(),
})
}