mirror of
https://github.com/emqx/neuron.git
synced 2026-10-27 04:19:50 +08:00
feat(monitor): add app node metrics
This commit is contained in:
@@ -54,33 +54,48 @@ typedef enum {
|
||||
#define NEU_METRIC_RECV_BYTES_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_RECV_BYTES_HELP "Total number of bytes received"
|
||||
|
||||
// maintained by neuron core
|
||||
// number of tag read including errors
|
||||
#define NEU_METRIC_TAG_READS_TOTAL "tag_reads_total"
|
||||
#define NEU_METRIC_TAG_READS_TOTAL_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_TAG_READS_TOTAL_HELP \
|
||||
"Total number of tag reads including errors"
|
||||
|
||||
// maintained by neuron core
|
||||
// number of tag read errors
|
||||
#define NEU_METRIC_TAG_READ_ERRORS_TOTAL "tag_read_errors_total"
|
||||
#define NEU_METRIC_TAG_READ_ERRORS_TOTAL_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_TAG_READ_ERRORS_TOTAL_HELP "Total number of tag read errors"
|
||||
|
||||
// maintained by neuron core
|
||||
// number of tags in group
|
||||
#define NEU_METRIC_GROUP_TAGS_TOTAL "group_tags_total"
|
||||
#define NEU_METRIC_GROUP_TAGS_TOTAL_TYPE NEU_METRIC_TYPE_GAUAGE
|
||||
#define NEU_METRIC_GROUP_TAGS_TOTAL_HELP "Total number of tags in the group"
|
||||
|
||||
// number of messages sent in group
|
||||
#define NEU_METRIC_GROUP_SEND_MSGS "group_send_msgs"
|
||||
#define NEU_METRIC_GROUP_SEND_MSGS_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_GROUP_SEND_MSGS_HELP \
|
||||
#define NEU_METRIC_GROUP_SEND_MSGS_TOTAL "group_send_msgs_total"
|
||||
#define NEU_METRIC_GROUP_SEND_MSGS_TOTAL_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_GROUP_SEND_MSGS_TOTAL_HELP \
|
||||
"Total number of messages sent in the group"
|
||||
|
||||
// maintained by neuron core
|
||||
// milliseconds consumed in last group timer invocation
|
||||
#define NEU_METRIC_GROUP_LAST_TIMER_MS "group_last_timer_ms"
|
||||
#define NEU_METRIC_GROUP_LAST_TIMER_MS_TYPE NEU_METRIC_TYPE_GAUAGE
|
||||
#define NEU_METRIC_GROUP_LAST_TIMER_MS_HELP \
|
||||
"Time in milliseconds consumed in last group timer invocation"
|
||||
"Time in milliseconds consumed on last group timer invocation"
|
||||
|
||||
// number of messages sent
|
||||
#define NEU_METRIC_SEND_MSGS_TOTAL "send_msgs_total"
|
||||
#define NEU_METRIC_SEND_MSGS_TOTAL_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_SEND_MSGS_TOTAL_HELP "Total number of messages sent"
|
||||
|
||||
// number of errors encounter while sending messages
|
||||
#define NEU_METRIC_SEND_MSG_ERRORS_TOTAL "send_msg_errors_total"
|
||||
#define NEU_METRIC_SEND_MSG_ERRORS_TOTAL_TYPE NEU_METRIC_TYPE_COUNTER
|
||||
#define NEU_METRIC_SEND_MSG_ERRORS_TOTAL_HELP \
|
||||
"Total number of errors sending messages"
|
||||
|
||||
typedef enum {
|
||||
NEU_METRICS_CATEGORY_GLOBAL,
|
||||
|
||||
@@ -147,6 +147,25 @@ gen_single_node_metrics(const neu_node_metrics_t *node_metrics, FILE *stream)
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool has_entry(neu_node_metrics_t *node_metrics, const char *name)
|
||||
{
|
||||
neu_metric_entry_t * e = NULL;
|
||||
neu_group_metrics_t *g = NULL;
|
||||
HASH_FIND_STR(node_metrics->entries, name, e);
|
||||
if (e) {
|
||||
return true;
|
||||
}
|
||||
|
||||
HASH_LOOP(hh, node_metrics->group_metrics, g)
|
||||
{
|
||||
HASH_FIND_STR(g->entries, name, e);
|
||||
if (e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static void gen_all_node_metrics(const neu_metrics_t *metrics, int type_filter,
|
||||
FILE *stream)
|
||||
{
|
||||
@@ -163,6 +182,10 @@ static void gen_all_node_metrics(const neu_metrics_t *metrics, int type_filter,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!has_entry(n, r->name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!commented) {
|
||||
commented = true;
|
||||
fprintf(stream, "# HELP %s %s\n# TYPE %s %s\n", r->name,
|
||||
|
||||
@@ -71,6 +71,10 @@ static const adapter_callbacks_t callback_funs = {
|
||||
REGISTER_METRIC(adapter, NEU_METRIC_TAG_READS_TOTAL, 0); \
|
||||
REGISTER_METRIC(adapter, NEU_METRIC_TAG_READ_ERRORS_TOTAL, 0)
|
||||
|
||||
#define REGISTER_APP_METRICS(adapter) \
|
||||
REGISTER_METRIC(adapter, NEU_METRIC_SEND_MSGS_TOTAL, 0); \
|
||||
REGISTER_METRIC(adapter, NEU_METRIC_SEND_MSG_ERRORS_TOTAL, 0);
|
||||
|
||||
neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info)
|
||||
{
|
||||
int rv = 0;
|
||||
@@ -115,6 +119,9 @@ neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info)
|
||||
neu_adapter_driver_init((neu_adapter_driver_t *) adapter);
|
||||
break;
|
||||
case NEU_NA_TYPE_APP:
|
||||
if (adapter->module->display) {
|
||||
REGISTER_APP_METRICS(adapter);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -399,7 +399,7 @@ int neu_adapter_driver_add_group(neu_adapter_driver_t *driver, const char *name,
|
||||
NEU_METRIC_GROUP_TAGS_TOTAL,
|
||||
neu_group_tag_size(find->group));
|
||||
REGISTER_GROUP_METRIC(&driver->adapter, find->name,
|
||||
NEU_METRIC_GROUP_SEND_MSGS, 0);
|
||||
NEU_METRIC_GROUP_SEND_MSGS_TOTAL, 0);
|
||||
REGISTER_GROUP_METRIC(&driver->adapter, find->name,
|
||||
NEU_METRIC_GROUP_LAST_TIMER_MS, 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user