Skip to content

Commit

Permalink
Merge pull request #74 from coroot/collector_endpoint_url
Browse files Browse the repository at this point in the history
Add base `collector endpoint` URL
  • Loading branch information
apetruhin committed Apr 11, 2024
2 parents 6b88611 + e68f061 commit 7500d29
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 16 deletions.
34 changes: 26 additions & 8 deletions flags/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,15 @@ var (
LogPerSecond = kingpin.Flag("log-per-second", "The number of logs per second").Default("10.0").Envar("LOG_PER_SECOND").Float64()
LogBurst = kingpin.Flag("log-burst", "The maximum number of tokens that can be consumed in a single call to allow").Default("100").Envar("LOG_BURST").Int()

MetricsEndpoint = kingpin.Flag("metrics-endpoint", "The URL of the endpoint to send metrics to").Envar("METRICS_ENDPOINT").URL()
TracesEndpoint = kingpin.Flag("traces-endpoint", "The URL of the endpoint to send traces to").Envar("TRACES_ENDPOINT").URL()
LogsEndpoint = kingpin.Flag("logs-endpoint", "The URL of the endpoint to send logs to").Envar("LOGS_ENDPOINT").URL()
ProfilesEndpoint = kingpin.Flag("profiles-endpoint", "The URL of the endpoint to send profiles to").Envar("PROFILES_ENDPOINT").URL()
ApiKey = kingpin.Flag("api-key", "Coroot API key").Envar("API_KEY").String()
ScrapeInterval = kingpin.Flag("scrape-interval", "How often to gather metrics from the agent").Default("15s").Envar("SCRAPE_INTERVAL").Duration()

WalDir = kingpin.Flag("wal-dir", "Path to where the agent stores data (e.g. the metrics Write-Ahead Log)").Default("/tmp/coroot-node-agent").Envar("WAL_DIR").String()
CollectorEndpoint = kingpin.Flag("collector-endpoint", "A base endpoint URL for metrics, traces, logs, and profiles").Envar("COLLECTOR_ENDPOINT").URL()
ApiKey = kingpin.Flag("api-key", "Coroot API key").Envar("API_KEY").String()
MetricsEndpoint = kingpin.Flag("metrics-endpoint", "The URL of the endpoint to send metrics to").Envar("METRICS_ENDPOINT").URL()
TracesEndpoint = kingpin.Flag("traces-endpoint", "The URL of the endpoint to send traces to").Envar("TRACES_ENDPOINT").URL()
LogsEndpoint = kingpin.Flag("logs-endpoint", "The URL of the endpoint to send logs to").Envar("LOGS_ENDPOINT").URL()
ProfilesEndpoint = kingpin.Flag("profiles-endpoint", "The URL of the endpoint to send profiles to").Envar("PROFILES_ENDPOINT").URL()

ScrapeInterval = kingpin.Flag("scrape-interval", "How often to gather metrics from the agent").Default("15s").Envar("SCRAPE_INTERVAL").Duration()
WalDir = kingpin.Flag("wal-dir", "Path to where the agent stores data (e.g. the metrics Write-Ahead Log)").Default("/tmp/coroot-node-agent").Envar("WAL_DIR").String()
)

func GetString(fl *string) string {
Expand All @@ -46,6 +47,23 @@ func init() {
if strings.HasSuffix(os.Args[0], ".test") {
return
}

kingpin.HelpFlag.Short('h').Hidden()
kingpin.Parse()

if *CollectorEndpoint != nil {
u := *CollectorEndpoint
if *MetricsEndpoint == nil {
*MetricsEndpoint = u.JoinPath("/v1/metrics")
}
if *TracesEndpoint == nil {
*TracesEndpoint = u.JoinPath("/v1/traces")
}
if *LogsEndpoint == nil {
*LogsEndpoint = u.JoinPath("/v1/logs")
}
if *ProfilesEndpoint == nil {
*ProfilesEndpoint = u.JoinPath("/v1/profiles")
}
}
}
4 changes: 2 additions & 2 deletions profiling/profiling.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ func Init(hostId, hostName string) chan<- containers.ProcessInfo {
constLabels = labels.Labels{
{Name: "host.name", Value: hostName},
{Name: "host.id", Value: hostId},
{Name: "profile.source", Value: "ebpf"},
}

reg := prometheus.NewRegistry()
Expand Down Expand Up @@ -167,14 +166,15 @@ func upload(b *pprof.ProfileBuilder) error {
}
u.RawQuery = q.Encode()

b.Profile.SampleType[0].Type = "ebpf:cpu:nanoseconds"
b.Profile.DurationNanos = CollectInterval.Nanoseconds()
body := bytes.NewBuffer(nil)
_, err := b.Write(body)
if err != nil {
return err
}

req, err := http.NewRequest("POST", u.String(), body)
req, err := http.NewRequest(http.MethodPost, u.String(), body)
if err != nil {
return err
}
Expand Down
13 changes: 7 additions & 6 deletions prom/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/coroot/coroot-node-agent/common"
"github.com/coroot/coroot-node-agent/flags"
"github.com/go-kit/log/level"
"github.com/prometheus/client_golang/prometheus"
promConfig "github.com/prometheus/common/config"
"github.com/prometheus/common/model"
Expand All @@ -25,12 +26,12 @@ const (
)

func StartAgent(machineId string) error {
l := Logger{}
logger := level.NewFilter(Logger{}, level.AllowInfo())

if *flags.MetricsEndpoint == nil {
return nil
}
klog.Infoln("Metrics remote write endpoint:", (*flags.MetricsEndpoint).String())
klog.Infoln("metrics remote write endpoint:", (*flags.MetricsEndpoint).String())
cfg := config.DefaultConfig
cfg.GlobalConfig.ScrapeInterval = model.Duration(*flags.ScrapeInterval)
cfg.GlobalConfig.ScrapeTimeout = model.Duration(*flags.ScrapeInterval)
Expand All @@ -54,22 +55,22 @@ func StartAgent(machineId string) error {
opts := agent.DefaultOptions()
localStorage := &readyStorage{stats: tsdb.NewDBStats()}
scraper := &readyScrapeManager{}
remoteStorage := remote.NewStorage(l, prometheus.DefaultRegisterer, localStorage.StartTime, *flags.WalDir, RemoteFlushDeadline, scraper)
fanoutStorage := storage.NewFanout(l, localStorage, remoteStorage)
remoteStorage := remote.NewStorage(logger, prometheus.DefaultRegisterer, localStorage.StartTime, *flags.WalDir, RemoteFlushDeadline, scraper)
fanoutStorage := storage.NewFanout(logger, localStorage, remoteStorage)

if err := remoteStorage.ApplyConfig(&cfg); err != nil {
return err
}

scrapeManager, err := scrape.NewManager(nil, l, fanoutStorage, prometheus.DefaultRegisterer)
scrapeManager, err := scrape.NewManager(nil, logger, fanoutStorage, prometheus.DefaultRegisterer)
if err != nil {
return err
}
if err = scrapeManager.ApplyConfig(&cfg); err != nil {
return err
}
scraper.Set(scrapeManager)
db, err := agent.Open(l, prometheus.DefaultRegisterer, remoteStorage, *flags.WalDir, opts)
db, err := agent.Open(logger, prometheus.DefaultRegisterer, remoteStorage, *flags.WalDir, opts)
if err != nil {
return err
}
Expand Down

0 comments on commit 7500d29

Please sign in to comment.