@@ -20,6 +20,7 @@ import (
20
20
"github.com/prometheus/prometheus/prompb"
21
21
"github.com/prometheus/prometheus/storage/remote"
22
22
23
+ pyroscopemodel "github.com/grafana/pyroscope/pkg/model"
23
24
"github.com/grafana/pyroscope/pkg/tenant"
24
25
)
25
26
@@ -67,7 +68,20 @@ func (e *StaticExporter) Send(tenantId string, data []prompb.TimeSeries) error {
67
68
level .Error (e .logger ).Log ("msg" , "unable to store prompb.WriteRequest" , "err" , err )
68
69
return
69
70
}
70
- e .metrics .seriesSent .WithLabelValues (tenantId ).Add (float64 (len (data )))
71
+ seriesByRuleID := make (map [string ]int )
72
+ for _ , ts := range data {
73
+ ruleID := "unknown"
74
+ for _ , l := range ts .Labels {
75
+ if l .Name == pyroscopemodel .RuleIDLabel {
76
+ ruleID = l .Value
77
+ break
78
+ }
79
+ }
80
+ seriesByRuleID [ruleID ]++
81
+ }
82
+ for ruleID , count := range seriesByRuleID {
83
+ e .metrics .seriesSent .WithLabelValues (tenantId , ruleID ).Add (float64 (count ))
84
+ }
71
85
}(data )
72
86
return nil
73
87
}
@@ -124,7 +138,7 @@ func newMetrics(reg prometheus.Registerer, remoteUrl string) *clientMetrics {
124
138
Subsystem : "metrics_exporter" ,
125
139
Name : "series_sent_total" ,
126
140
Help : "Number of series sent on remote_write." ,
127
- }, []string {"tenant" }),
141
+ }, []string {"tenant" , "rule_id" }),
128
142
}
129
143
if reg != nil {
130
144
remoteUrlReg := prometheus .WrapRegistererWith (prometheus.Labels {"url" : remoteUrl }, reg )
0 commit comments