目录
(1).关于saf
(2).前置准备
(3).saf-http之度量原理
(4).开启访问流量
(5).度量体验
1.SAF Incoming HTTP Dashboard
2.SAF Incoming HTTP Detail Dashboard
3.SAF Outcoming HTTP Dashboard
4.SAF Outcoming HTTP Detail Dashboard
5.其他
(6).相关文章
架构实战交流钉钉群号:23394754
(1).关于saf
项目地址:
https://github.com/saf-group
1.一个微服务框架,完全基于注解的方式开发。
2.适用于云原生(K8S)下的微服务体系搭建,为技术中台提供底层支撑。
3.解放业务,使业务方专注于业务逻辑本身:通过注解以搭积木方式引入各式资源,每个资源都是一行注解,极大提升业务方产出效率。
(2).前置准备
需要完成一个saf-http-demo的容器化部署,要准备很多准备,详情参见:
微服务框架saf-5:saf-http与demo的解析与体验,以及容器化部署
参考下述文章,完成prometheus-saf的部署,这样可以抓取demo的metrics:
grafana&prometheus生产级容器化监控-1:生产级容器化
(3).saf-http之度量原理
如下图所示:
显然分两部分,对于web服务来说一方面会接受http,另一方面会发出http。
http-in:通过HttpMetricFilter拦截http请求,进行度量处理。
http-out:封装httpclient,加入度量处理。
并且对于http-out场景,使用注解与apollo结合的方式做到本地0配置,与0成本使用httpclient。
httpclient使用举例:
一个EnableHttpBioClient对应一个httpclient/httppool实例,这样做到资源隔离,防止某个域名不稳定冲垮整个服务。
beanNamePrefix:指定不同httpclient实例的beanName前缀,这样使用时才可以区分。
instance:apollo配置中心配置前缀中的部分标示,这样才可以针对不同httpclient实例做配置。
project:也是apollo配置中心配置前缀中的部分标示,表示这个配置属于哪个服务,不会造成不同服务之间的混淆。
(4).开启访问流量
开一个任意支持curl的pod,启动访问脚本,给demo服务一定压力好观测数据。
#!/bin/bash
for((i=1;i<=100000000;i++));
do
curl http://saf-sample-http-apache-httpcomponents-web-send-prod/shop/getShop?shopId=1
done
(5).度量体验
http度量目前只有4个dashboard,还可拓展出p99同比等。
dashboard | 用途 |
---|---|
SAF Incoming / HTTP | 度量http-in,如qps, lantency, p99等。 |
SAF Incoming / HTTP / Detail | SAF Incoming / HTTP更细粒度的度量。 |
SAF Outcoming HTTP | 度量http-out,如qps, lantency, p99等。 |
SAF Outcoming HTTP / Detail | SAF Outcoming / HTTP更细粒度的度量。 |
1.SAF Incoming HTTP Dashboard
注意上图,大家很容易有一个疑惑,就是并发为什么非0即1,是不是有问题。实际上没有问题,因为访问脚本是单线程的,所以并发不可能超过1,大多数时间为0是因为30秒抓取一次,不一定能抓到的。
点击具体的url可以进入SAF Incoming HTTP Detail Dashboard。
2.SAF Incoming HTTP Detail Dashboard
支持每个http host更细粒度的度量:
注意,支持多个url同时展示的度量,选择多个url:
3.SAF Outcoming HTTP Dashboard
点击具体的url可以进入SAF Outcoming HTTP Detail Dashboard。
4.SAF Outcoming HTTP Detail Dashboard
5.其他
根据现有metrics,还可以定制出p99同比等dashboard;
另外,关于熔断限流(属于sidecar的范畴)的度量,另开文章,本文涉及部分,如httpclient detail中的http容量算是其中的部分;
另外,还有非常关键的APM度量,这个以后有时间另开文章陈述:
(6).相关文章
微服务框架saf-5:saf-http与demo的解析与体验,以及容器化部署