summaryrefslogtreecommitdiff
path: root/usr.sbin/rpki-client/ometric.h
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2022-12-15 12:02:30 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2022-12-15 12:02:30 +0000
commitde9c4a8fd628e736c7160f2a582bf85b58ddee58 (patch)
treedc6717eee15f6cae976dd7a14dc36cf70653e1aa /usr.sbin/rpki-client/ometric.h
parent4a4eee431a34d8adf96b653b56aa8164db0c2d26 (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.h53
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 }