projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
write_prometheus plugin: Use the "static" macro to specify PROMETHEUS_DEFAULT_STALENE...
[collectd.git]
/
src
/
write_prometheus.c
diff --git
a/src/write_prometheus.c
b/src/write_prometheus.c
index
6c88278
..
fe7a5b5
100644
(file)
--- a/
src/write_prometheus.c
+++ b/
src/write_prometheus.c
@@
-37,7
+37,7
@@
#include <microhttpd.h>
#ifndef PROMETHEUS_DEFAULT_STALENESS_DELTA
#include <microhttpd.h>
#ifndef PROMETHEUS_DEFAULT_STALENESS_DELTA
-#define PROMETHEUS_DEFAULT_STALENESS_DELTA TIME_T_TO_CDTIME_T(300)
+#define PROMETHEUS_DEFAULT_STALENESS_DELTA TIME_T_TO_CDTIME_T
_STATIC
(300)
#endif
#define VARINT_UINT32_BYTES 5
#endif
#define VARINT_UINT32_BYTES 5
@@
-210,8
+210,13
@@
static int http_handler(void *cls, struct MHD_Connection *connection,
else
format_text(buffer);
else
format_text(buffer);
+#if defined(MHD_VERSION) && MHD_VERSION >= 0x00090500
+ struct MHD_Response *res = MHD_create_response_from_buffer(
+ simple.len, simple.data, MHD_RESPMEM_MUST_COPY);
+#else
struct MHD_Response *res = MHD_create_response_from_data(
simple.len, simple.data, /* must_free = */ 0, /* must_copy = */ 1);
struct MHD_Response *res = MHD_create_response_from_data(
simple.len, simple.data, /* must_free = */ 0, /* must_copy = */ 1);
+#endif
MHD_add_response_header(res, MHD_HTTP_HEADER_CONTENT_TYPE,
want_proto ? CONTENT_TYPE_PROTO : CONTENT_TYPE_TEXT);
MHD_add_response_header(res, MHD_HTTP_HEADER_CONTENT_TYPE,
want_proto ? CONTENT_TYPE_PROTO : CONTENT_TYPE_TEXT);
@@
-631,8
+636,8
@@
static char *metric_family_name(data_set_t const *ds, value_list_t const *vl,
/* metric_family_get looks up the matching metric family, allocating it if
* necessary. */
static Io__Prometheus__Client__MetricFamily *
/* metric_family_get looks up the matching metric family, allocating it if
* necessary. */
static Io__Prometheus__Client__MetricFamily *
-metric_family_get(data_set_t const *ds, value_list_t const *vl,
-
size_t ds_index
) {
+metric_family_get(data_set_t const *ds, value_list_t const *vl,
size_t ds_index,
+
_Bool allocate
) {
char *name = metric_family_name(ds, vl, ds_index);
if (name == NULL) {
ERROR("write_prometheus plugin: Allocating metric family name failed.");
char *name = metric_family_name(ds, vl, ds_index);
if (name == NULL) {
ERROR("write_prometheus plugin: Allocating metric family name failed.");
@@
-646,6
+651,9
@@
metric_family_get(data_set_t const *ds, value_list_t const *vl,
return fam;
}
return fam;
}
+ if (!allocate)
+ return NULL;
+
fam = metric_family_create(name, ds, vl, ds_index);
if (fam == NULL) {
ERROR("write_prometheus plugin: Allocating metric family failed.");
fam = metric_family_create(name, ds, vl, ds_index);
if (fam == NULL) {
ERROR("write_prometheus plugin: Allocating metric family failed.");
@@
-727,7
+735,8
@@
static int prom_write(data_set_t const *ds, value_list_t const *vl,
pthread_mutex_lock(&metrics_lock);
for (size_t i = 0; i < ds->ds_num; i++) {
pthread_mutex_lock(&metrics_lock);
for (size_t i = 0; i < ds->ds_num; i++) {
- Io__Prometheus__Client__MetricFamily *fam = metric_family_get(ds, vl, i);
+ Io__Prometheus__Client__MetricFamily *fam =
+ metric_family_get(ds, vl, i, /* allocate = */ 1);
if (fam == NULL)
continue;
if (fam == NULL)
continue;
@@
-753,7
+762,8
@@
static int prom_missing(value_list_t const *vl,
pthread_mutex_lock(&metrics_lock);
for (size_t i = 0; i < ds->ds_num; i++) {
pthread_mutex_lock(&metrics_lock);
for (size_t i = 0; i < ds->ds_num; i++) {
- Io__Prometheus__Client__MetricFamily *fam = metric_family_get(ds, vl, i);
+ Io__Prometheus__Client__MetricFamily *fam =
+ metric_family_get(ds, vl, i, /* allocate = */ 0);
if (fam == NULL)
continue;
if (fam == NULL)
continue;
@@
-762,6
+772,7
@@
static int prom_missing(value_list_t const *vl,
ERROR("write_prometheus plugin: Deleting a metric in family \"%s\" "
"failed with status %d",
fam->name, status);
ERROR("write_prometheus plugin: Deleting a metric in family \"%s\" "
"failed with status %d",
fam->name, status);
+
continue;
}
continue;
}