diff --git a/include/neuron/metrics.h b/include/neuron/metrics.h index c1f190ba..cbe188e2 100644 --- a/include/neuron/metrics.h +++ b/include/neuron/metrics.h @@ -39,6 +39,16 @@ typedef enum { NEU_METRIC_TYPE_COUNTER_SET, } neu_metric_type_e; +// node running state +#define NEU_METRIC_RUNNING_STATE "running_state" +#define NEU_METRIC_RUNNING_STATE_TYPE NEU_METRIC_TYPE_GAUAGE +#define NEU_METRIC_RUNNING_STATE_HELP "Node running state" + +// node link state +#define NEU_METRIC_LINK_STATE "link_state" +#define NEU_METRIC_LINK_STATE_TYPE NEU_METRIC_TYPE_GAUAGE +#define NEU_METRIC_LINK_STATE_HELP "Node link state" + // last round trip time in millisends #define NEU_METRIC_LAST_RTT_MS "last_rtt_ms" #define NEU_METRIC_LAST_RTT_MS_TYPE NEU_METRIC_TYPE_GAUAGE diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c index 0b8f4573..180291b0 100644 --- a/src/adapter/adapter.c +++ b/src/adapter/adapter.c @@ -67,6 +67,10 @@ static const adapter_callbacks_t callback_funs = { adapter_register_metric(adapter, name, name##_HELP, name##_TYPE, init); #define REGISTER_DRIVER_METRICS(adapter) \ + REGISTER_METRIC(adapter, NEU_METRIC_LINK_STATE, \ + NEU_NODE_LINK_STATE_DISCONNECTED); \ + REGISTER_METRIC(adapter, NEU_METRIC_RUNNING_STATE, \ + NEU_NODE_RUNNING_STATE_INIT); \ REGISTER_METRIC(adapter, NEU_METRIC_LAST_RTT_MS, \ NEU_METRIC_LAST_RTT_MS_MAX); \ REGISTER_METRIC(adapter, NEU_METRIC_SEND_BYTES, 0); \ @@ -75,6 +79,10 @@ static const adapter_callbacks_t callback_funs = { REGISTER_METRIC(adapter, NEU_METRIC_TAG_READ_ERRORS_TOTAL, 0); #define REGISTER_APP_METRICS(adapter) \ + REGISTER_METRIC(adapter, NEU_METRIC_LINK_STATE, \ + NEU_NODE_LINK_STATE_DISCONNECTED); \ + REGISTER_METRIC(adapter, NEU_METRIC_RUNNING_STATE, \ + NEU_NODE_RUNNING_STATE_INIT); \ REGISTER_METRIC(adapter, NEU_METRIC_SEND_MSGS_TOTAL, 0); \ REGISTER_METRIC(adapter, NEU_METRIC_SEND_MSG_ERRORS_TOTAL, 0); \ REGISTER_METRIC(adapter, NEU_METRIC_RECV_MSGS_TOTAL, 0); diff --git a/src/base/metrics.c b/src/base/metrics.c index ad119baa..473becba 100644 --- a/src/base/metrics.c +++ b/src/base/metrics.c @@ -301,6 +301,11 @@ void neu_metrics_visist(neu_metrics_cb_t cb, void *data) neu_plugin_common_t *common = neu_plugin_to_plugin_common(n->adapter->plugin); + n->adapter->cb_funs.update_metric(n->adapter, NEU_METRIC_RUNNING_STATE, + n->adapter->state, NULL); + n->adapter->cb_funs.update_metric(n->adapter, NEU_METRIC_LINK_STATE, + common->link_state, NULL); + if (NEU_NA_TYPE_DRIVER == n->adapter->module->type) { ++g_metrics_.south_nodes; if (NEU_NODE_RUNNING_STATE_RUNNING == n->adapter->state) {