golang 代码埋点试性能监控

背景

在gateway系统开发的过程中,因为毕竟是面向公网的,所以需要全方位的监控,比如QPS,失败次数,成功次数,这类代码级的监控,参考transfer的源码,其在代码中埋了一部分监测点,然后通过API暴露出来,交给另外的组件去采集,这样略显麻烦

数据类型

目前常用的度量类型:

Gauge:

Gauge是最简单的度量类型,存储了一个double类型的值,所以一般用它记录系统的一些即时值,比如最近的一次的内存占用或者是系统CPU百分比。

Counter:

Counter顾名思义是计数器的意思,用于存储一个64位长计数器,由应用系统的代码逻辑控制Counter的自增或自减。而且该计数器是支持明细计数的,Counter保持一个总的计数,并且保持一个子项的计数明细数组。
计数器可以用来记录当前系统的并发数。在进入调用时计数器自增,退出之前自减。并且还可以支持使用一个Counter实现针对各个接口进行明细统计。

Histogram:

Histogram直方图,度量流数据中Value的分布情况,将会计算最大/最小、平均值、方差、分位数(75%,90%,98%,99%的数据在哪个范围)。例如可以统计每一个POST请求中的内容的大小或者处理所花的时间。

Meter:

Meter度量的是事件在一定单位时间内发生的次数。比如单位时间内事件发生的平均次数,或者1分钟、5分钟或15分钟内发生次数的滑动平均值。可以使用Meter统计异常发生的频率。

Timer:

Timer是Histogram跟Meter的一个组合,他在Meter的基础上,增加了对处理耗时的Histogram的度量,并且他还度量了一个ActiveSession的值,他代表了一个并发数。Timer是五种度量里最复杂的度量类型。

调研

在github上相中了“goperfcounter”,而且老版本的原生的gateway中也有少部分地方用到了该组件:github.com/niean/goperfcounter

特点

使用方便,只需在需要特别关照的业务处埋点,会自动生成metric,并推送至Falcon上

使用方法

配置文件

<pre>
{
"debug": false, // 是否开启调制,默认为false
"hostname": "", // 机器名(也即endpoint名称),默认为本机名称
"tags": "", // tags标签,默认为空。一个tag形如"key=val",多个tag用逗号分隔;name为保留字段,因此不允许设置形如"name=xxx"的tag。eg. "cop=xiaomi,module=perfcounter"
"step": 60, // 上报周期,单位s,默认为60s
"bases":[], // gvm基础信息采集,可选值为"debug"、"runtime",默认不采集(gvm为go虚拟环境,类似ruby的rvm)
"push": { // push数据到Open-Falcon
"enabled":true, // 是否开启自动push,默认开启
"api": "" // Open-Falcon接收器地址,默认为本地agent,即"http:// 127.0.0.1:1988/v1/push"
},
"http": { // http服务,为了安全考虑,当前只允许本地访问
"enabled": false, // 是否开启http服务,默认不开启
"listen": "" // http服务监听地址,默认为空。eg. "0.0.0.0:2015"表示在2015端口开启http监听
}
}
</pre>

使用示例

  • 记录gateway push接口累计接收的数据
    image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Open-falcon是小米运维团队从互联网公司的需求出发,根据多年的运维经验,结合SRE、SA、DEVS的使用经...
    猴子精h阅读 5,432评论 1赞 5
  • 简介 Metrics作为一款监控指标的度量类库,提供了很多模块可以为第三方库或者应用提供辅助统计信息。Metric...
    Waisam阅读 2,654评论 0赞 2
  • 本文章翻译自http://www.rabbitmq.com/api-guide.html,并没有及时更新。 术语对...
    joyenlee阅读 7,844评论 0赞 3
  • 系统开发到一定的阶段,线上的机器越来越多,就需要一些监控了,除了服务器的监控,业务方面也需要一些监控服务。Metr...
    whthomas阅读 34,605评论 12赞 47
  • 背景 因为公司的RPC框架不支持HTTP的服务端,所以无法在服务管理平台实现基于HTTP的RPC调用的服务可视化治...
    ninetyhe_阅读 3,197评论 0赞 1

友情链接更多精彩内容