@@ -68,6 +68,28 @@ func (p *metricCollector) handleMetric(labels []promwrite.Label, value float64,
68
68
shouldSend = prevTimestampSec < currentTimestampSec
69
69
70
70
if shouldSend {
71
+ prevMetric .timestamp = max (prevMetric .timestamp , timestamp - 1_000_000_000 )
72
+
73
+ zapLabels := make ([]zap.Field , 0 , len (labels )+ 2 )
74
+ timeMetric := time .Unix (0 , prevMetric .timestamp )
75
+
76
+ zapLabels = append (zapLabels , zap .Time ("prom_timestamp" , timeMetric ))
77
+ zapLabels = append (zapLabels , zap .Time ("current_timestamp" , time .Unix (0 , timestamp )))
78
+ for i := range labels {
79
+ zapLabels = append (zapLabels , zap .String ("prom_label_" + labels [i ].Name , labels [i ].Value ))
80
+ }
81
+ p .logger .Info (
82
+ "send metric" ,
83
+ zapLabels ... ,
84
+ )
85
+
86
+ if time .Since (timeMetric ) > 5 * time .Minute {
87
+ p .logger .Error (
88
+ "too old sample" ,
89
+ zapLabels ... ,
90
+ )
91
+ }
92
+
71
93
values = append (values , createTimeSeries (labels , prevMetric ))
72
94
}
73
95
} else {
@@ -97,6 +119,26 @@ func (p *metricCollector) flushOldMetrics() {
97
119
metric := value .(metricValue )
98
120
if now .Sub (metric .lastUpdateTime ) > p .timeout && ! metric .lastValueIsSended {
99
121
labels := keyToLabels (key .(string ))
122
+
123
+ zapLabels := make ([]zap.Field , 0 , len (labels )+ 2 )
124
+ timeMetric := time .Unix (0 , metric .timestamp )
125
+ zapLabels = append (zapLabels , zap .Time ("prom_timestamp" , timeMetric ))
126
+ zapLabels = append (zapLabels , zap .Bool ("flush_old_metric" , true ))
127
+ for i := range labels {
128
+ zapLabels = append (zapLabels , zap .String ("prom_label_" + labels [i ].Name , labels [i ].Value ))
129
+ }
130
+ p .logger .Info (
131
+ "send metric" ,
132
+ zapLabels ... ,
133
+ )
134
+
135
+ if time .Since (timeMetric ) > 10 * time .Minute {
136
+ p .logger .Error (
137
+ "too old sample" ,
138
+ zapLabels ... ,
139
+ )
140
+ }
141
+
100
142
toSend = append (toSend , createTimeSeries (labels , metric ))
101
143
102
144
metric .lastValueIsSended = true
0 commit comments