diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2022-12-15 12:02:30 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2022-12-15 12:02:30 +0000 |
commit | de9c4a8fd628e736c7160f2a582bf85b58ddee58 (patch) | |
tree | dc6717eee15f6cae976dd7a14dc36cf70653e1aa /usr.sbin/rpki-client/ometric.h | |
parent | 4a4eee431a34d8adf96b653b56aa8164db0c2d26 (diff) |
Rework statistic collection to be per repository and add metric output option
Many statistic values are now accounted by repository via repo_stat_inc()
At end of the run sum_stats() accumulates these stats per TAL and globally.
The new output file metrics is written when the -m output flag is specified.
The metrics file is written in OpenMetrics format (with a few tweaks to
allow node_exporter to parse the file as well). The ometric code is a copy
from bgpctl(8) and should be kept in sync.
OK tb@
Diffstat (limited to 'usr.sbin/rpki-client/ometric.h')
-rw-r--r-- | usr.sbin/rpki-client/ometric.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/usr.sbin/rpki-client/ometric.h b/usr.sbin/rpki-client/ometric.h new file mode 100644 index 00000000000..f7b140b9b8c --- /dev/null +++ b/usr.sbin/rpki-client/ometric.h @@ -0,0 +1,53 @@ +/* $OpenBSD: ometric.h,v 1.1 2022/12/15 12:02:29 claudio Exp $ */ + +/* + * Copyright (c) 2022 Claudio Jeker <claudio@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +enum ometric_type { + OMT_UNKNOWN, + OMT_GAUGE, + OMT_COUNTER, + OMT_STATESET, + OMT_HISTOGRAM, + OMT_SUMMARY, + OMT_INFO, +}; + +struct ometric; +struct olabels; + +struct ometric *ometric_new(enum ometric_type, const char *, const char *); +struct ometric *ometric_new_state(const char * const *, size_t, const char *, + const char *); +void ometric_free_all(void); +struct olabels *olabels_new(const char * const *, const char **); +void olabels_free(struct olabels *); + +int ometric_output_all(FILE *); + +/* functions to set gauge and counter metrics */ +void ometric_set_int(struct ometric *, uint64_t, struct olabels *); +void ometric_set_float(struct ometric *, double, struct olabels *); +void ometric_set_timespec(struct ometric *, const struct timespec *, + struct olabels *); +void ometric_set_info(struct ometric *, const char **, const char **, + struct olabels *); +void ometric_set_state(struct ometric *, const char *, struct olabels *); +void ometric_set_int_with_labels(struct ometric *, uint64_t, const char **, + const char **, struct olabels *); +void ometric_set_timespec_with_labels(struct ometric *, struct timespec *, + const char **, const char **, struct olabels *); +#define OKV(...) (const char *[]){ __VA_ARGS__, NULL } |