diff --git a/website/docs/zh/metric/metric_introduction.md b/website/docs/zh/metric/metric_introduction.md index f334f9b6a..30b034dd1 100644 --- a/website/docs/zh/metric/metric_introduction.md +++ b/website/docs/zh/metric/metric_introduction.md @@ -261,16 +261,16 @@ class metric_t { ```cpp auto c = std::make_shared("qps_count", "qps help"); auto g = std::make_shared("fd_count", "fd count help"); -default_metric_manager::register_metric_static(c); -default_metric_manager::register_metric_static(g); +default_metric_manager::instance().register_metric_static(c); +default_metric_manager::instance().register_metric_static(g); c->inc(); g->inc(); -auto m = default_metric_manager::get_metric_static("qps_count"); +auto m = default_metric_manager::instance().get_metric_static("qps_count"); CHECK(m->as()->value() == 1); -auto m1 = default_metric_manager::get_metric_static("fd_count"); +auto m1 = default_metric_manager::instance().get_metric_static("fd_count"); CHECK(m1->as()->value() == 1); ``` @@ -279,16 +279,16 @@ CHECK(m1->as()->value() == 1); ```cpp auto c = std::make_shared("qps_count", "qps help"); auto g = std::make_shared("fd_count", "fd count help"); -default_metric_manager::register_metric_dynamic(c); -default_metric_manager::register_metric_dynamic(g); +default_metric_manager::instance().register_metric_dynamic(c); +default_metric_manager::instance().register_metric_dynamic(g); c->inc(); g->inc(); -auto m = default_metric_manager::get_metric_dynamic("qps_count"); +auto m = default_metric_manager::instance().get_metric_dynamic("qps_count"); CHECK(m->as()->value() == 1); -auto m1 = default_metric_manager::get_metric_dynamic("fd_count"); +auto m1 = default_metric_manager::instance().get_metric_dynamic("fd_count"); CHECK(m1->as()->value() == 1); ``` 注意:一旦注册时使用了static或者dynamic,那么后面调用default_metric_manager时则应该使用相同后缀的接口,比如注册时使用了get_metric_static,那么后面调用根据名称获取指标对象的方法必须是get_metric_static,否则会抛异常。同样,如果注册使用register_metric_dynamic,则后面应该get_metric_dynamic,否则会抛异常。 @@ -297,84 +297,86 @@ CHECK(m1->as()->value() == 1); ```cpp template struct metric_manager_t { + // 管理器的单例 + metric_manager_t & instance(); // 创建并注册指标,返回注册的指标对象 template - static std::shared_ptr create_metric_static(const std::string& name, + std::shared_ptr create_metric_static(const std::string& name, const std::string& help, Args&&... args); template - static std::shared_ptr create_metric_dynamic(const std::string& name, + std::shared_ptr create_metric_dynamic(const std::string& name, const std::string& help, Args&&... args) // 注册metric - static bool register_metric_static(std::shared_ptr metric); - static bool register_metric_dynamic(std::shared_ptr metric); + bool register_metric_static(std::shared_ptr metric); + bool register_metric_dynamic(std::shared_ptr metric); // 根据metric名称删除metric - static bool remove_metric_static(const std::string& name); - static bool remove_metric_dynamic(const std::string& name); + bool remove_metric_static(const std::string& name); + bool remove_metric_dynamic(const std::string& name); // 获取注册的所有指标对象 - static std::map> metric_map_static(); - static std::map> metric_map_dynamic(); + std::map> metric_map_static(); + std::map> metric_map_dynamic(); // 获取注册的指标对象的总数 - static size_t metric_count_static(); - static size_t metric_count_dynamic(); + size_t metric_count_static(); + size_t metric_count_dynamic(); // 获取注册的指标对象的名称 - static std::vector metric_keys_static(); - static std::vector metric_keys_dynamic(); + std::vector metric_keys_static(); + std::vector metric_keys_dynamic(); // 获取管理器的所有指标 - static std::shared_ptr get_metrics(); + std::shared_ptr get_metrics(); // 根据名称获取指标对象,T为具体指标的类型,如 get_metric_static(); // 如果找不到则返回nullptr template - static T* get_metric_static(const std::string& name); + T* get_metric_static(const std::string& name); template - static T* get_metric_static(const std::string& name); + T* get_metric_static(const std::string& name); - static std::shared_ptr get_metric_static(const std::string& name); - static std::shared_ptr get_metric_dynamic(const std::string& name); + std::shared_ptr get_metric_static(const std::string& name); + std::shared_ptr get_metric_dynamic(const std::string& name); // 根据静态标签获取所有的指标, 如{{"method", "GET"}, {"url", "/"}} - static std::vector> get_metric_by_labels_static( + std::vector> get_metric_by_labels_static( const std::map& labels); // 根据标签值获取所有的静态标签的指标, 如{"method", "GET"} - static std::vector> get_metric_by_label_static( + std::vector> get_metric_by_label_static( const std::pair& label); // 根据标签值获取所有动态标签的指标, 如{"method", "GET"} - static std::vector> get_metric_by_labels_dynamic( + std::vector> get_metric_by_labels_dynamic( const std::map& labels); // 序列化 - static async_simple::coro::Lazy serialize_static(); - static async_simple::coro::Lazy serialize_dynamic(); + async_simple::coro::Lazy serialize_static(); + async_simple::coro::Lazy serialize_dynamic(); // 序列化静态标签的指标到json - static std::string serialize_to_json_static(); + std::string serialize_to_json_static(); // 序列化动态标签的指标到json - static std::string serialize_to_json_dynamic(); + std::string serialize_to_json_dynamic(); // 序列化metric集合到json - static std::string serialize_to_json( + std::string serialize_to_json( const std::vector>& metrics); // 过滤配置选项,如果name_regex和label_regex都设置了,则会检查这两个条件,如果只设置了一个则只检查设置过的条件 - struct metric_filter_options { + metric_filter_options { std::optional name_regex{}; // metric 名称的过滤正则表达式 std::optional label_regex{};// metric label名称的过滤正则表达式 bool is_white = true; //true: 白名单,包括语义;false: 黑名单,排除语义 }; // 过滤静态标签的指标 - static std::vector> filter_metrics_static( + std::vector> filter_metrics_static( const metric_filter_options& options); // 过滤动态标签的指标 - static std::vector> filter_metrics_dynamic( + std::vector> filter_metrics_dynamic( const metric_filter_options& options); }; @@ -419,7 +421,7 @@ struct metric_collector_t { ```cpp using root_manager = metric_collector_t; -std::string str = root_manager::serialize(); +std::string str = root_manager::instance().serialize(); ``` # histogram