rrd_stats_api_v1_chart_with_data(st, wb, NULL, NULL);
}
-void rrd_stats_api_v1_charts(BUFFER *wb)
+void rrd_stats_api_v1_charts(RRDHOST *host, BUFFER *wb)
{
size_t c, dimensions = 0, memory = 0, alarms = 0;
RRDSET *st;
",\n\t\"update_every\": %d"
",\n\t\"history\": %d"
",\n\t\"charts\": {"
- , localhost->hostname
+ , host->hostname
, program_version
, os_type
- , localhost->rrd_update_every
- , localhost->rrd_history_entries
+ , host->rrd_update_every
+ , host->rrd_history_entries
);
- pthread_rwlock_rdlock(&localhost->rrdset_root_rwlock);
- for(st = localhost->rrdset_root, c = 0; st ; st = st->next) {
+ pthread_rwlock_rdlock(&host->rrdset_root_rwlock);
+ for(st = host->rrdset_root, c = 0; st ; st = st->next) {
if(st->enabled && st->dimensions) {
if(c) buffer_strcat(wb, ",");
buffer_strcat(wb, "\n\t\t\"");
}
RRDCALC *rc;
- for(rc = localhost->alarms; rc ; rc = rc->next) {
+ for(rc = host->alarms; rc ; rc = rc->next) {
if(rc->rrdset)
alarms++;
}
- pthread_rwlock_unlock(&localhost->rrdset_root_rwlock);
+ pthread_rwlock_unlock(&host->rrdset_root_rwlock);
buffer_sprintf(wb, "\n\t}"
",\n\t\"charts_count\": %zu"
#define PROMETHEUS_ELEMENT_MAX 256
-void rrd_stats_api_v1_charts_allmetrics_prometheus(BUFFER *wb)
-{
- pthread_rwlock_rdlock(&localhost->rrdset_root_rwlock);
+void rrd_stats_api_v1_charts_allmetrics_prometheus(RRDHOST *host, BUFFER *wb) {
+ pthread_rwlock_rdlock(&host->rrdset_root_rwlock);
- char host[PROMETHEUS_ELEMENT_MAX + 1];
- prometheus_name_copy(host, config_get("global", "hostname", "localhost"), PROMETHEUS_ELEMENT_MAX);
+ char hostname[PROMETHEUS_ELEMENT_MAX + 1];
+ prometheus_name_copy(hostname, config_get("global", "hostname", "localhost"), PROMETHEUS_ELEMENT_MAX);
// for each chart
RRDSET *st;
- for(st = localhost->rrdset_root; st ; st = st->next) {
+ for(st = host->rrdset_root; st ; st = st->next) {
char chart[PROMETHEUS_ELEMENT_MAX + 1];
prometheus_name_copy(chart, st->id, PROMETHEUS_ELEMENT_MAX);
// (unsigned long long)((rd->last_collected_time.tv_sec * 1000) + (rd->last_collected_time.tv_usec / 1000)));
buffer_sprintf(wb, "%s_%s{instance=\"%s\"} " COLLECTED_NUMBER_FORMAT " %llu\n",
- chart, dimension, host, rd->last_collected_value,
+ chart, dimension, hostname, rd->last_collected_value,
(unsigned long long)((rd->last_collected_time.tv_sec * 1000) + (rd->last_collected_time.tv_usec / 1000)));
}
}
}
- pthread_rwlock_unlock(&localhost->rrdset_root_rwlock);
+ pthread_rwlock_unlock(&host->rrdset_root_rwlock);
}
// ----------------------------------------------------------------------------
#define SHELL_ELEMENT_MAX 100
-void rrd_stats_api_v1_charts_allmetrics_shell(BUFFER *wb)
-{
- pthread_rwlock_rdlock(&localhost->rrdset_root_rwlock);
-
- char host[SHELL_ELEMENT_MAX + 1];
- shell_name_copy(host, config_get("global", "hostname", "localhost"), SHELL_ELEMENT_MAX);
+void rrd_stats_api_v1_charts_allmetrics_shell(RRDHOST *host, BUFFER *wb) {
+ pthread_rwlock_rdlock(&host->rrdset_root_rwlock);
// for each chart
RRDSET *st;
- for(st = localhost->rrdset_root; st ; st = st->next) {
+ for(st = host->rrdset_root; st ; st = st->next) {
calculated_number total = 0.0;
char chart[SHELL_ELEMENT_MAX + 1];
shell_name_copy(chart, st->id, SHELL_ELEMENT_MAX);
buffer_strcat(wb, "\n# NETDATA ALARMS RUNNING\n");
RRDCALC *rc;
- for(rc = localhost->alarms; rc ;rc = rc->next) {
+ for(rc = host->alarms; rc ;rc = rc->next) {
if(!rc->rrdset) continue;
char chart[SHELL_ELEMENT_MAX + 1];
buffer_sprintf(wb, "NETDATA_ALARM_%s_%s_STATUS=\"%s\"\n", chart, alarm, rrdcalc_status2string(rc->status));
}
- pthread_rwlock_unlock(&localhost->rrdset_root_rwlock);
+ pthread_rwlock_unlock(&host->rrdset_root_rwlock);
}
// ----------------------------------------------------------------------------
buffer_strcat(wb, RRD_GRAPH_JSON_FOOTER);
}
-void rrd_stats_all_json(BUFFER *wb)
+void rrd_stats_all_json(RRDHOST *host, BUFFER *wb)
{
unsigned long memory = 0;
long c;
buffer_strcat(wb, RRD_GRAPH_JSON_HEADER);
- pthread_rwlock_rdlock(&localhost->rrdset_root_rwlock);
- for(st = localhost->rrdset_root, c = 0; st ; st = st->next) {
+ pthread_rwlock_rdlock(&host->rrdset_root_rwlock);
+ for(st = host->rrdset_root, c = 0; st ; st = st->next) {
if(st->enabled && st->dimensions) {
if(c) buffer_strcat(wb, ",\n");
memory += rrd_stats_one_json(st, NULL, wb);
c++;
}
}
- pthread_rwlock_unlock(&localhost->rrdset_root_rwlock);
+ pthread_rwlock_unlock(&host->rrdset_root_rwlock);
buffer_sprintf(wb, "\n\t],\n"
"\t\"hostname\": \"%s\",\n"
"\t\"history\": %d,\n"
"\t\"memory\": %lu\n"
"}\n"
- , localhost->hostname
- , localhost->rrd_update_every
- , localhost->rrd_history_entries
+ , host->hostname
+ , host->rrd_update_every
+ , host->rrd_history_entries
, memory
);
}
return web_client_api_request_single_chart(w, url, health_api_v1_chart_variables2json);
}
-int web_client_api_request_v1_charts(struct web_client *w, char *url)
+int web_client_api_request_v1_charts(RRDHOST *host, struct web_client *w, char *url)
{
(void)url;
buffer_flush(w->response.data);
w->response.data->contenttype = CT_APPLICATION_JSON;
- rrd_stats_api_v1_charts(w->response.data);
+ rrd_stats_api_v1_charts(host, w->response.data);
return 200;
}
switch(format) {
case ALLMETRICS_SHELL:
w->response.data->contenttype = CT_TEXT_PLAIN;
- rrd_stats_api_v1_charts_allmetrics_shell(w->response.data);
+ rrd_stats_api_v1_charts_allmetrics_shell(localhost, w->response.data);
return 200;
case ALLMETRICS_PROMETHEUS:
w->response.data->contenttype = CT_PROMETHEUS;
- rrd_stats_api_v1_charts_allmetrics_prometheus(w->response.data);
+ rrd_stats_api_v1_charts_allmetrics_prometheus(localhost, w->response.data);
return 200;
default:
return web_client_api_request_v1_chart(w, url);
else if(hash == hash_charts && !strcmp(tok, "charts"))
- return web_client_api_request_v1_charts(w, url);
+ return web_client_api_request_v1_charts(localhost, w, url);
else if(hash == hash_registry && !strcmp(tok, "registry"))
return web_client_api_request_v1_registry(w, url);
w->response.data->contenttype = CT_APPLICATION_JSON;
buffer_flush(w->response.data);
- rrd_stats_all_json(w->response.data);
+ rrd_stats_all_json(localhost, w->response.data);
}
#ifdef NETDATA_INTERNAL_CHECKS
else if(hash == hash_exit && strcmp(tok, "exit") == 0) {