remove all dots from prometheus names; #1497
Costa Tsaousis (ktsaou) committed
Jan 3, 2017 at 22:48 UTC
304dc3ec3e91f904f57829fc0f594e60ef918a35
1 file changed
+8
-7
src/rrd2json.c
+8
-7
@@ -130,7 +130,7 @@ static inline size_t prometheus_name_copy(char *d, const char *s, size_t usable)
130
for(n = 0; *s && n < usable ; d++, s++, n++) {
131
register char c = *s;
132
133
- if(unlikely(!isalpha(c) && !isdigit(c))) *d = '_';
133
+ if(unlikely(!isalnum(c))) *d = '_';
134
else *d = c;
135
}
136
*d = '\0';
@@ -159,16 +159,20 @@ void rrd_stats_api_v1_charts_allmetrics_prometheus(BUFFER *wb)
159
RRDDIM *rd;
160
for(rd = st->dimensions; rd ; rd = rd->next) {
161
if(rd->counter) {
162
+
163
+ char dimension[PROMETHEUS_ELEMENT_MAX + 1];
164
+ prometheus_name_copy(dimension, rd->id, PROMETHEUS_ELEMENT_MAX);
165
+
166
// buffer_sprintf(wb, "# HELP %s.%s %s\n", st->id, rd->id, st->units);
167
168
switch(rd->algorithm) {
169
case RRDDIM_INCREMENTAL:
170
case RRDDIM_PCENT_OVER_DIFF_TOTAL:
167
- buffer_sprintf(wb, "# TYPE %s.%s counter\n", st->id, rd->id);
171
+ buffer_sprintf(wb, "# TYPE %s_%s counter\n", chart, dimension);
172
break;
173
174
default:
171
- buffer_sprintf(wb, "# TYPE %s.%s gauge\n", st->id, rd->id);
175
+ buffer_sprintf(wb, "# TYPE %s_%s gauge\n", chart, dimension);
176
break;
177
}
178
@@ -176,10 +180,7 @@ void rrd_stats_api_v1_charts_allmetrics_prometheus(BUFFER *wb)
180
// buffer_sprintf(wb, "%s.%s " CALCULATED_NUMBER_FORMAT " %llu\n", st->id, rd->id, n,
181
// (unsigned long long)((rd->last_collected_time.tv_sec * 1000) + (rd->last_collected_time.tv_usec / 1000)));
182
179
- char dimension[PROMETHEUS_ELEMENT_MAX + 1];
180
- prometheus_name_copy(dimension, rd->id, PROMETHEUS_ELEMENT_MAX);
181
-
182
- buffer_sprintf(wb, "%s.%s{instance=\"%s\"} " COLLECTED_NUMBER_FORMAT " %llu\n",
183
+ buffer_sprintf(wb, "%s_%s{instance=\"%s\"} " COLLECTED_NUMBER_FORMAT " %llu\n",
184
chart, dimension, host, rd->last_collected_value,
185
(unsigned long long)((rd->last_collected_time.tv_sec * 1000) + (rd->last_collected_time.tv_usec / 1000)));
186
}