Home | History | Annotate | Download | only in dist

Lines Matching defs:metrics

2  * metrics.c -- prometheus metrics endpoint
26 #include "metrics.h"
39 struct daemon_metrics* metrics;
43 * The metrics daemon state.
46 /** the master process for this metrics daemon */
62 struct daemon_metrics* metrics = (struct daemon_metrics*)xalloc_zero(
63 sizeof(*metrics));
67 if(!daemon_metrics_open_ports(metrics, cfg)) {
68 log_msg(LOG_ERR, "could not open metrics port");
69 daemon_metrics_delete(metrics);
73 if(gettimeofday(&metrics->boot_time, NULL) == -1)
75 metrics->stats_time = metrics->boot_time;
77 return metrics;
80 void daemon_metrics_close(struct daemon_metrics* metrics)
83 if(!metrics) return;
86 h = metrics->accept_list;
94 metrics->accept_list = NULL;
96 if (metrics->http_server) {
97 evhttp_free(metrics->http_server);
101 void daemon_metrics_delete(struct daemon_metrics* metrics)
103 if(!metrics) return;
104 daemon_metrics_close(metrics);
105 free(metrics);
164 * Add and open a new metrics port
165 * @param metrics: metrics with result list.
172 metrics_add_open(struct daemon_metrics* metrics, struct nsd_options* cfg, const char* ip,
197 VERBOSITY(3, (LOG_INFO, "cannot chmod metrics socket %s: %s", ip, strerror(errno)));
216 log_msg(LOG_ERR, "metrics interface %s:%s getaddrinfo: %s %s",
235 log_msg(LOG_ERR, "cannot open metrics interface %s %d : "
240 log_msg(LOG_ERR, "cannot open metrics interface %s %d", ip, nr);
246 hl->metrics = metrics;
254 hl->next = metrics->accept_list;
255 metrics->accept_list = hl;
262 daemon_metrics_open_ports(struct daemon_metrics* metrics, struct nsd_options* cfg)
268 if(!metrics_add_open(metrics, cfg, p->address, cfg->metrics_port, 1)) {
274 if(cfg->do_ip6 && !metrics_add_open(metrics, cfg, "::1", cfg->metrics_port, 0)) {
278 !metrics_add_open(metrics, cfg, "127.0.0.1", cfg->metrics_port, 1)) {
286 daemon_metrics_attach(struct daemon_metrics* metrics, struct xfrd_state* xfrd)
290 if(!metrics) return;
291 metrics->xfrd = xfrd;
293 metrics->http_server = evhttp_new(xfrd->event_base);
294 for(p = metrics->accept_list; p; p = p->next) {
296 if (evhttp_accept_socket(metrics->http_server, fd)) {
297 log_msg(LOG_ERR, "metrics: cannot set http server to accept socket");
301 evhttp_set_cb(metrics->http_server,
302 metrics->xfrd->nsd->options->metrics_path,
304 /* evhttp_set_gencb(metrics->http_server, metrics_http_callback_generic, p); */
313 struct daemon_metrics *metrics = ((struct metrics_acceptlist *)p)->metrics;
333 process_stats(NULL, reply, metrics->xfrd, 1);
335 VERBOSITY(3, (LOG_INFO, "metrics operation completed, response sent"));
338 log_msg(LOG_NOTICE, "metrics requested, but no stats enabled at compile time\n");
339 (void)metrics;
537 timeval_subtract(&uptime, now, &xfrd->nsd->metrics->boot_time);
545 * use metrics' stats_time */
549 timeval_subtract(&elapsed, now, &xfrd->nsd->metrics->stats_time);