【go-monitor】开源一个轻量的golang服务质量统计告警工具

Go-Monitor是一个轻量级的Golang工具,用于服务质量和告警监控。它可以统计接口、函数调用的耗时和状态,根据预设规则进行服务质量分析,并在异常时触发告警。它采用无锁队列提高性能,适用于嵌入各种Golang项目,以低成本实现全面的监控。使用简单,支持多实例和自定义告警策略。
摘要由CSDN通过智能技术生成

简介

go-monitor基于golang开发,是一个轻量的,用于服务质量监控并实现分析告警的工具。go-monitor目前并不是一个独立的服务,而是希望被大多数基于golang开发的项目如同引入一个日志组件一样使用。

go-monitor能做什么

通过上报接口、函数、或者是任意调用服务的耗时以及其成功状态,go-monitor将按照设定的周期自动进行服务质量分析,统计,并输出详细的报告数据。

在服务质量达不到理想状态时,go-monitor将触发告警,并在服务质量回升时,触发恢复通知。

go-monitor提供非常多灵活的配置,以使其在大多数场景下都可以通过参数调整来胜任服务监控的职责。

go-monitor采用无锁队列的方式避免并发锁带来的性能问题,MBP2012版本实测500万次上报数据(go test bench)仅花费1.6s即完成所有分析统计(此前并发锁方案为1.9s),强大的性能允许你像记录日志一样来使用它,并且不需要担心IO压力(大部分日志组件使用缓存写盘的方式提升性能,大并发下IO压力明显)。

什么场景建议使用go-monitor

例如我们开发了一个web应用以对外提供服务,我们可以嵌入go-monitor,上报每一个访问的耗时、状态,以达到对我们整个web应用服务质量的监控,也可以在服务质量下滑甚至不可用时及时作出告警,更详尽的,我们可以上报任何一个调用服务的状态,例如我们所访问的数据库,所依赖的外部接口等,除了监控服务质量,事实上也可以通过go-monitor提供的统计数据了解任何一个服务的平均时延,大到一个完整的接口,小到一个数据库查询语句。而使用go-monitor的成本非常小,仅仅是在golang项目中引入go-monitor,像使用日志组件一样,毫无负担。

使用方法

安装

go get github.com/blurooo/go-monitor

引入使用

go-monitor的使用非常简单,只需调用其提供的Register函数即可注册得到一个上报客户端,上报客户端暴露了Report方法用于上报服务的耗时指标:

import (
    "github.com/blurooo/go-monitor"
    "time"
)

// 注册得到一个上报客户端用于http服务质量监控
var httpReportClient = monitor.Register(monitor.ReportClientConfig {
    Name: "http服务监控",
    StatisticalCycle: 100,  // 每100ms统计一次服务质量
})

func main() {
    t := time.NewTicker(10 * time.Millisecond)
    for curTime := range t.C {
        // 每10ms向http监控客户端上报一
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值