Skip to content

Commit 7091862

Browse files
committed
prometheusreceiver: use gopsutil to gather collector start time on component initialization
1 parent 9f9aec2 commit 7091862

File tree

6 files changed

+42
-6
lines changed

6 files changed

+42
-6
lines changed

exporter/prometheusexporter/go.mod

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ require (
5454
github.com/docker/docker v27.3.1+incompatible // indirect
5555
github.com/docker/go-connections v0.5.0 // indirect
5656
github.com/docker/go-units v0.5.0 // indirect
57+
github.com/ebitengine/purego v0.8.1 // indirect
5758
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
5859
github.com/envoyproxy/go-control-plane v0.13.1 // indirect
5960
github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
@@ -64,6 +65,7 @@ require (
6465
github.com/go-logfmt/logfmt v0.6.0 // indirect
6566
github.com/go-logr/logr v1.4.2 // indirect
6667
github.com/go-logr/stdr v1.2.2 // indirect
68+
github.com/go-ole/go-ole v1.2.6 // indirect
6769
github.com/go-openapi/jsonpointer v0.20.2 // indirect
6870
github.com/go-openapi/jsonreference v0.20.4 // indirect
6971
github.com/go-openapi/swag v0.22.9 // indirect
@@ -113,6 +115,7 @@ require (
113115
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect
114116
github.com/kylelemons/godebug v1.1.0 // indirect
115117
github.com/linode/linodego v1.37.0 // indirect
118+
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
116119
github.com/mailru/easyjson v0.7.7 // indirect
117120
github.com/mattn/go-colorable v0.1.13 // indirect
118121
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -135,13 +138,18 @@ require (
135138
github.com/pkg/errors v0.9.1 // indirect
136139
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
137140
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
141+
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
138142
github.com/prometheus/common/sigv4 v0.1.0 // indirect
139143
github.com/prometheus/procfs v0.15.1 // indirect
140144
github.com/prometheus/prometheus v0.54.1 // indirect
141145
github.com/rs/cors v1.11.1 // indirect
142146
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 // indirect
147+
github.com/shirou/gopsutil/v4 v4.24.12 // indirect
143148
github.com/spf13/pflag v1.0.5 // indirect
149+
github.com/tklauser/go-sysconf v0.3.12 // indirect
150+
github.com/tklauser/numcpus v0.6.1 // indirect
144151
github.com/vultr/govultr/v2 v2.17.2 // indirect
152+
github.com/yusufpapurcu/wmi v1.2.4 // indirect
145153
go.opencensus.io v0.24.0 // indirect
146154
go.opentelemetry.io/collector/client v1.23.1-0.20250119231113-f07ebc3afb51 // indirect
147155
go.opentelemetry.io/collector/component/componentstatus v0.117.1-0.20250119231113-f07ebc3afb51 // indirect

exporter/prometheusexporter/go.sum

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/prometheusreceiver/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ require (
1313
github.com/prometheus/client_golang v1.20.5
1414
github.com/prometheus/common v0.61.0
1515
github.com/prometheus/prometheus v0.54.1
16+
github.com/shirou/gopsutil/v4 v4.24.12
1617
github.com/stretchr/testify v1.10.0
1718
go.opentelemetry.io/collector/component v0.117.1-0.20250119231113-f07ebc3afb51
1819
go.opentelemetry.io/collector/component/componentstatus v0.117.1-0.20250119231113-f07ebc3afb51
@@ -156,7 +157,6 @@ require (
156157
github.com/prometheus/procfs v0.15.1 // indirect
157158
github.com/rs/cors v1.11.1 // indirect
158159
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 // indirect
159-
github.com/shirou/gopsutil/v4 v4.24.12 // indirect
160160
github.com/spf13/cobra v1.8.1 // indirect
161161
github.com/spf13/pflag v1.0.5 // indirect
162162
github.com/tidwall/gjson v1.10.2 // indirect

receiver/prometheusreceiver/internal/starttimemetricadjuster.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ package internal // import "github.com/open-telemetry/opentelemetry-collector-co
55

66
import (
77
"errors"
8+
"os"
89
"regexp"
910
"time"
1011

12+
"github.com/shirou/gopsutil/v4/process"
1113
"go.opentelemetry.io/collector/pdata/pmetric"
1214
"go.uber.org/zap"
1315
)
@@ -17,15 +19,25 @@ var (
1719
errNoDataPointsStartTimeMetric = errors.New("start time metric with no data points")
1820
errUnsupportedTypeStartTimeMetric = errors.New("unsupported data type for start time metric")
1921

20-
// approximateCollectorStartTime is the approximate start time of the collector. Used
22+
// collectorStartTime is the approximate start time of the collector. Used
2123
// as a fallback start time for metrics that don't have a start time set.
2224
// Set when the component is initialized.
23-
approximateCollectorStartTime *time.Time
25+
collectorStartTime *time.Time
2426
)
2527

2628
func init() {
27-
now := time.Now()
28-
approximateCollectorStartTime = &now
29+
p, err := process.NewProcess(int32(os.Getpid()))
30+
if err != nil {
31+
panic("Unable to find current process" + err.Error())
32+
}
33+
34+
ct, err := p.CreateTime()
35+
if err != nil {
36+
panic("Unable to find process start time" + err.Error())
37+
}
38+
39+
startTime := time.Unix(ct/1000, 0) // Convert milliseconds to seconds
40+
collectorStartTime = &startTime
2941
}
3042

3143
type startTimeMetricAdjuster struct {
@@ -38,7 +50,7 @@ type startTimeMetricAdjuster struct {
3850
func NewStartTimeMetricAdjuster(logger *zap.Logger, startTimeMetricRegex *regexp.Regexp, useCollectorStartTimeFallback bool) MetricsAdjuster {
3951
var fallbackStartTime *time.Time
4052
if useCollectorStartTimeFallback {
41-
fallbackStartTime = approximateCollectorStartTime
53+
fallbackStartTime = collectorStartTime
4254
}
4355
return &startTimeMetricAdjuster{
4456
startTimeMetricRegex: startTimeMetricRegex,

receiver/purefareceiver/go.mod

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ require (
4949
github.com/docker/docker v27.3.1+incompatible // indirect
5050
github.com/docker/go-connections v0.4.0 // indirect
5151
github.com/docker/go-units v0.5.0 // indirect
52+
github.com/ebitengine/purego v0.8.1 // indirect
5253
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
5354
github.com/envoyproxy/go-control-plane v0.13.1 // indirect
5455
github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
@@ -59,6 +60,7 @@ require (
5960
github.com/go-logfmt/logfmt v0.6.0 // indirect
6061
github.com/go-logr/logr v1.4.2 // indirect
6162
github.com/go-logr/stdr v1.2.2 // indirect
63+
github.com/go-ole/go-ole v1.2.6 // indirect
6264
github.com/go-openapi/jsonpointer v0.20.2 // indirect
6365
github.com/go-openapi/jsonreference v0.20.4 // indirect
6466
github.com/go-openapi/swag v0.22.9 // indirect
@@ -108,6 +110,7 @@ require (
108110
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect
109111
github.com/kylelemons/godebug v1.1.0 // indirect
110112
github.com/linode/linodego v1.37.0 // indirect
113+
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
111114
github.com/mailru/easyjson v0.7.7 // indirect
112115
github.com/mattn/go-colorable v0.1.13 // indirect
113116
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -131,14 +134,19 @@ require (
131134
github.com/pkg/errors v0.9.1 // indirect
132135
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
133136
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
137+
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
134138
github.com/prometheus/client_golang v1.20.5 // indirect
135139
github.com/prometheus/client_model v0.6.1 // indirect
136140
github.com/prometheus/common/sigv4 v0.1.0 // indirect
137141
github.com/prometheus/procfs v0.15.1 // indirect
138142
github.com/rs/cors v1.11.1 // indirect
139143
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 // indirect
144+
github.com/shirou/gopsutil/v4 v4.24.12 // indirect
140145
github.com/spf13/pflag v1.0.5 // indirect
146+
github.com/tklauser/go-sysconf v0.3.12 // indirect
147+
github.com/tklauser/numcpus v0.6.1 // indirect
141148
github.com/vultr/govultr/v2 v2.17.2 // indirect
149+
github.com/yusufpapurcu/wmi v1.2.4 // indirect
142150
go.opencensus.io v0.24.0 // indirect
143151
go.opentelemetry.io/collector/client v1.23.1-0.20250119231113-f07ebc3afb51 // indirect
144152
go.opentelemetry.io/collector/component/componentstatus v0.117.1-0.20250119231113-f07ebc3afb51 // indirect

receiver/purefareceiver/go.sum

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)