Metrics 监控请求处理

本文介绍了Ambari处理Metrics请求的两个主要部分:Widget相关数据和Metrics数据请求。详细讨论了Widget的种类、数据表结构以及相关请求处理。在Metrics部分,重点解析了Ambari Server通过Ganglia和JMX获取Metrics的过程,并概述了Metrics请求的处理流程。
摘要由CSDN通过智能技术生成

1 引言

Ambari处理Meterics相关的请求分为两部分:1,widget相关的,负责Metrics消息的布局、显示;2,metrics数据请求,负责获取实时数据。下面主要从这两方面进行讲述。

2 Widget


Ambari Widget属于图形控件,负责收集Metrics属性并进行显示。Widget包括Graph、Gauge、Number、Template等几种类型。常用的是Graph,Number,Gauge三种。下面对这几种类型的Widget做个简单的说明。

1)Graph:Graph 是一种线性或矩形图,它用于显示在某时间内 Service 的某个(可以是多个)Metrics属性,如下所示。
这里写图片描述

2)Gauge:一般用于显示百分比,其值可源于一个或是多个Metrics经过计算后的值,如下所示。
这里写图片描述
  3)Number:直接显示一个数,可以为其定值单位,如下所示。
这里写图片描述

2.1 Widget相关的数据表


Ambari在启动初始化时,会从相关目录下读取服务定义的widget信息,并将信息存入到数据库中。相关的表包括:1) (这里Ambari底层使用的是MySQL数据库)
  1)Widget:存储所有的widget定义员数据,包括id,widget_name, 对应的Metrics,widget_values,properties等数据;
  这里写图片描述
 
 2)widget_layout:记录显示面板元数据。每个服务包括两个大的显示面板,serviceName_summary和serviceName_heatmap。另外,每个用户的又有自己的widget_layout,即每个用户可以自定义自己感兴趣的监控图表。如系统中存储用户admin,test用户,则可能有hdfs_summary和serviceName_heatmap两个section,其中对于hdfs_summary section,存在admin_hdfs_dashboard、test_hdfs_dashboard、admin_hdfs_heatmap和test_hdfs_heatmap (另外,在数据库中,当test用户访问了hdfs heapmap监控区,数据表中才会创建出test_hdfs_heatmap layout这条记录)。在widget_layout数据表中主要存储用户图表监控区的元数据,如id ,layout_name, section_name等。
这里写图片描述

3)widget_layout_user_widget:和widget_layout表对应,描述每个widget_layout中包含那些widget其widget的顺序;
这里写图片描述

4)users:描述Ambari用户信息,其中active_widget_layouts为一个widget_layout列表,描述用户访问、定制的widget_layout信息。
这里写图片描述


2.2Widget相关请求


在用户登录Ambari时,会出查询用户当前的活跃的widget_layout列表,获取当前需要显示的widget_layout,然后查询该widget_layout中所有包含的widget,并进行显示(在显示时,或根据Widget的property,发出相关的metrics请求,获取metrics数据)。相关API包括:
  1)查询所有的widget: get http://ambari_server:port/api/v1/clusters/ClusterName/widgets/
或:
get http://ambari_server:port/api/v1/cl

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Prometheus 中监控 Feign 请求,你需要使用 Spring Boot Actuator 和 Micrometer 库。 首先,确保在项目中引入了这两个库的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> ``` 然后,在代码中添加以下配置: ```java @Configuration public class MetricsConfig { @Bean public MeterRegistryCustomizer<MeterRegistry> commonTags() { return registry -> registry.config().commonTags("application", "your-application-name"); } } ``` 这将为所有的 Micrometer 计量器添加一个公共标记,以便在 Prometheus 中更好地跟踪它们。 接下来,在 Feign 的配置类中,添加一个拦截器以记录请求的计时信息: ```java @Configuration public class FeignConfig { @Bean public RequestInterceptor requestInterceptor(MeterRegistry registry) { return requestTemplate -> { Timer.Sample sample = Timer.start(registry); requestTemplate.header("X-Start-Time", String.valueOf(sample.wallTime())); requestTemplate.header("X-Start-Time-Nanos", String.valueOf(sample.nanos())); }; } } ``` 这将在 Feign 请求前添加两个自定义头,分别用于记录请求开始时间。接下来,您需要添加一个 Spring Boot Actuator 端点来公开这些计量器: ```java @Component @Endpoint(id = "metrics") public class MetricsEndpoint { private final MeterRegistry registry; public MetricsEndpoint(MeterRegistry registry) { this.registry = registry; } @ReadOperation public Map<String, Object> metrics() { Map<String, Object> metrics = new LinkedHashMap<>(); for (Meter meter : registry.getMeters()) { metrics.put(meter.getId().getName(), meter.measure()); } return metrics; } } ``` 这将创建一个名为“metrics”的端点,用于公开 Prometheus 可以抓取的所有计量器数据。 最后,在 Prometheus 的配置文件中添加以下配置: ```yaml scrape_configs: - job_name: 'your-job-name' metrics_path: '/actuator/prometheus' static_configs: - targets: ['your-application-host:your-application-port'] ``` 这将告诉 Prometheus 在指定的主机和端口上抓取来自 Spring Boot Actuator 端点的数据。现在,您应该能够在 Prometheus 中看到 Feign 请求监控数据了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值