metrics_collector.h

Metrics Collector source.

Author

Sifli software development team

Defines

MC_MAX_DATA_LEN

Typedefs

typedef enum mc_period_tag mc_period_t
typedef enum mc_err_tag mc_err_t
typedef void (*mc_collector_callback_t)(void *user_data)

collector callback type

Param user_data:

[in] user data

typedef struct mc_collector_tag mc_collector_t
typedef bool (*mc_raw_metrics_read_callback_t)(void *data, uint32_t data_len, uint32_t time)

raw metrics read callback type

Param data:

[in] point to read data, no need to free by user

Param data_len:

[in] data length in byte

Param time:

[in] time in second

Retval true:

interrupt read, false: continue read

typedef bool (*mc_metrics_read_callback_t)(uint16_t id, uint8_t core, uint16_t data_len, uint32_t time, void *data)

metrics read callback type

Param id:

[in] id

Param core:

[in] core id, CORE_ID_HCPU

Param data_len:

[in] data length in byte

Param time:

[in] time in second

Param data:

[in] point to read data, no need to free by user

Retval true:

interrupt read, false: continue read

typedef bool (*mc_backend_iter_cb_t)(void *data, uint32_t data_len, void *arg)

Enums

enum mc_period_tag

Values:

enumerator MC_PERIOD_EVERY_DAY

every day

enumerator MC_PERIOD_EVERY_HOUR

every hour

enumerator MC_PERIOD_EVERY_MINUTE

every minute

enumerator MC_PERIOD_EVERY_SECOND

every second

enumerator MC_PERIOD_MAX
enum mc_err_tag

Values:

enumerator MC_OK
enumerator MC_ERROR
enumerator MC_NOT_INIT
enumerator MC_INVALID_DATA_LEN
enumerator MC_WRITE_ERR
enumerator MC_READ_ERR
enumerator MC_DB_INIT_ERR

Functions

mc_err_t mc_register_collector(mc_collector_t *collector)

Register metrics collector

The memory of param collector will still be used after the invocation, until mc_deregister_collector is called. So the memory should be available within this time.

参数:
  • collector[in] collector

返回:

result

mc_err_t mc_deregister_collector(mc_collector_t *collector)

Deregister metrics collector

After the invocation, the memory of param collector will not be used any more.

参数:
  • collector[in] collector

返回:

result

void *mc_alloc_metrics(uint16_t id, uint16_t data_len)

Allocate memory space for one metrics

data_len cannot exceed MC_MAX_DATA_LEN

参数:
  • id[in] metrics id, it’s user defined

  • data_len[in] metrics data length in byte

返回:

pointer to metrics data buffer, buffer size is same as data_len

mc_err_t mc_save_metrics(void *metrics, bool freed)

Save the metrics to storage (default db)

参数:
  • metrics[in] the metrics allocated by mc_alloc_metrics

  • freed[in] whether the metrics memory can be freed after the invocation. true: free, false: not free

返回:

result

mc_err_t mc_save_metrics_ex(mc_db_t *db, void *metrics, bool freed)

Save the metrics to specified db

参数:
  • db[in] metrics db handle initialzed by mc_init_db

  • metrics[in] the metrics allocated by mc_alloc_metrics

  • freed[in] whether the metrics memory can be freed after the invocation. true: free, false: not free

返回:

result

mc_err_t mc_free_metrics(void *metrics)

Free the metrics memory allocated by mc_alloc_metrics

参数:
返回:

result

mc_err_t mc_read_raw_metrics(mc_raw_metrics_read_callback_t cb)

Read raw metrics saved in storage

The callback would be called for each metrics in the database, raw data is provided.

参数:
  • cb[in] read callback

返回:

result

mc_err_t mc_read_metrics(mc_metrics_read_callback_t cb)

Read metrics saved in storage

The callback would be called for each metrics in the database, parsed data is provided.

参数:
  • cb[in] read callback

返回:

result

mc_err_t mc_clear_metrics(void)

Clear metrics saved in storage

返回:

result

mc_err_t mc_init_db(mc_db_t *db, const char *name, uint32_t max_size)

Initialize db

参数:
  • db[inout] metrics db handle

  • name[in] db name

  • max_size[in] db size

返回:

result

mc_err_t mc_flush_ex(mc_db_t *db)

flush db

Ensure all data is written in storage instead of remaining in cache

参数:
  • db[in] metrics db handle

返回:

result

mc_err_t mc_flush(void)

flush default db

Ensure all data is written into storage instead of remaining in cache

返回:

result

mc_err_t mc_close(void)

close default db

Same as mc_flush, plus default db is closed afterwards and no more data can be written further

返回:

result

const char *mc_get_path(void)

Get default db path with file backend

返回:

path

void mc_backend_direct_write(mc_db_t *db, uint16_t id, void *data, uint16_t size)
void *mc_backend_init(const char *name, uint32_t max_len)
mc_err_t mc_backend_write(void *db, void *data, uint32_t data_len)
mc_err_t mc_backend_iter(void *db, mc_backend_iter_cb_t cb, void *arg)
mc_err_t mc_backend_clear(void *db)
mc_err_t mc_backend_flush(void *db)
mc_err_t mc_backend_close(void *db)
mc_db_t *mc_get_metrics_db(void)
struct mc_collector_tag

Public Members

rt_list_t node

internal use, no need to fill by caller

mc_collector_callback_t callback

collector callback, woudld called according to period

mc_period_t period

period

void *user_data

user data, would be passed as argument of callback

struct mc_db_t

Public Members

const char *name
void *db
uint32_t max_size
rt_list_t node